File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / miniupnpc / pymoduletest.py
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Sep 27 11:21:37 2023 UTC (12 months ago) by misho
Branches: miniupnpc, elwix, MAIN
CVS tags: v2_2_5p0, HEAD
Version 2.2.5p0

    1: #! /usr/bin/env python
    2: # vim: tabstop=2 shiftwidth=2 expandtab
    3: # MiniUPnP project
    4: # Author : Thomas Bernard
    5: # Python 3
    6: # This Sample code is public domain.
    7: # website : https://miniupnp.tuxfamily.org/
    8: 
    9: # import the python miniupnpc module
   10: import miniupnpc
   11: import sys
   12: 
   13: try:
   14:   import argparse
   15:   parser = argparse.ArgumentParser()
   16:   parser.add_argument('-m', '--multicastif')
   17:   parser.add_argument('-p', '--minissdpdsocket')
   18:   parser.add_argument('-d', '--discoverdelay', type=int, default=200)
   19:   parser.add_argument('-z', '--localport', type=int, default=0)
   20:   # create the object
   21:   u = miniupnpc.UPnP(**vars(parser.parse_args()))
   22: except:
   23:   print('argparse not available')
   24:   i = 1
   25:   multicastif = None
   26:   minissdpdsocket = None
   27:   discoverdelay = 200
   28:   localport = 0
   29:   while i < len(sys.argv):
   30:     print(sys.argv[i])
   31:     if sys.argv[i] == '-m' or sys.argv[i] == '--multicastif':
   32:       multicastif = sys.argv[i+1]
   33:     elif sys.argv[i] == '-p' or sys.argv[i] == '--minissdpdsocket':
   34:       minissdpdsocket = sys.argv[i+1]
   35:     elif sys.argv[i] == '-d' or sys.argv[i] == '--discoverdelay':
   36:       discoverdelay = int(sys.argv[i+1])
   37:     elif sys.argv[i] == '-z' or sys.argv[i] == '--localport':
   38:       localport = int(sys.argv[i+1])
   39:     else:
   40:       raise Exception('invalid argument %s' % sys.argv[i])
   41:     i += 2
   42:   # create the object
   43:   u = miniupnpc.UPnP(multicastif, minissdpdsocket, discoverdelay, localport)
   44: 
   45: print('inital(default) values :')
   46: print(' discoverdelay', u.discoverdelay)
   47: print(' lanaddr', u.lanaddr)
   48: print(' multicastif', u.multicastif)
   49: print(' minissdpdsocket', u.minissdpdsocket)
   50: #u.minissdpdsocket = '../minissdpd/minissdpd.sock'
   51: # discovery process, it usually takes several seconds (2 seconds or more)
   52: print('Discovering... delay=%ums' % u.discoverdelay)
   53: print('%d device(s) detected' % u.discover())
   54: # select an igd
   55: try:
   56:   u.selectigd()
   57: except Exception as e:
   58:   print('Exception :', e)
   59:   sys.exit(1)
   60: # it is also possible to pass the root description URL to u.selectigd() :
   61: # u.selectigd('http://192.168.1.254:5678/desc/root')
   62: # display information about the IGD and the internet connection
   63: print('local ip address :', u.lanaddr)
   64: print('external ip address :', u.externalipaddress())
   65: print( u.statusinfo(), u.connectiontype())
   66: print('total bytes : sent', u.totalbytesent(), 'received', u.totalbytereceived())
   67: print('total packets : sent', u.totalpacketsent(), 'received', u.totalpacketreceived())
   68: 
   69: #print u.addportmapping(64000, 'TCP',
   70: #                       '192.168.1.166', 63000, 'port mapping test', '')
   71: #print u.deleteportmapping(64000, 'TCP')
   72: 
   73: port = 0
   74: proto = 'UDP'
   75: # list the redirections :
   76: i = 0
   77: while True:
   78: 	p = u.getgenericportmapping(i)
   79: 	if p==None:
   80: 		break
   81: 	print(i, p)
   82: 	(port, proto, (ihost,iport), desc, c, d, e) = p
   83: 	#print port, desc
   84: 	i = i + 1
   85: 
   86: print(u.getspecificportmapping(port, proto))
   87: try:
   88:   print(u.getportmappingnumberofentries())
   89: except Exception as e:
   90:   print('GetPortMappingNumberOfEntries() is not supported :', e)
   91: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>