version 1.1.1.1, 2012/02/21 23:16:22
|
version 1.1.1.2, 2023/09/27 11:21:37
|
Line 1
|
Line 1
|
#! /usr/bin/python | #! /usr/bin/env python |
| # vim: tabstop=2 shiftwidth=2 expandtab |
# MiniUPnP project |
# MiniUPnP project |
# Author : Thomas Bernard |
# Author : Thomas Bernard |
|
# Python 3 |
# This Sample code is public domain. |
# This Sample code is public domain. |
# website : http://miniupnp.tuxfamily.org/ | # website : https://miniupnp.tuxfamily.org/ |
|
|
# import the python miniupnpc module |
# import the python miniupnpc module |
import miniupnpc |
import miniupnpc |
import sys |
import sys |
|
|
# create the object | try: |
u = miniupnpc.UPnP() | import argparse |
print 'inital(default) values :' | parser = argparse.ArgumentParser() |
print ' discoverdelay', u.discoverdelay | parser.add_argument('-m', '--multicastif') |
print ' lanaddr', u.lanaddr | parser.add_argument('-p', '--minissdpdsocket') |
print ' multicastif', u.multicastif | parser.add_argument('-d', '--discoverdelay', type=int, default=200) |
print ' minissdpdsocket', u.minissdpdsocket | parser.add_argument('-z', '--localport', type=int, default=0) |
u.discoverdelay = 200; | # create the object |
| u = miniupnpc.UPnP(**vars(parser.parse_args())) |
| except: |
| print('argparse not available') |
| i = 1 |
| multicastif = None |
| minissdpdsocket = None |
| discoverdelay = 200 |
| localport = 0 |
| while i < len(sys.argv): |
| print(sys.argv[i]) |
| if sys.argv[i] == '-m' or sys.argv[i] == '--multicastif': |
| multicastif = sys.argv[i+1] |
| elif sys.argv[i] == '-p' or sys.argv[i] == '--minissdpdsocket': |
| minissdpdsocket = sys.argv[i+1] |
| elif sys.argv[i] == '-d' or sys.argv[i] == '--discoverdelay': |
| discoverdelay = int(sys.argv[i+1]) |
| elif sys.argv[i] == '-z' or sys.argv[i] == '--localport': |
| localport = int(sys.argv[i+1]) |
| else: |
| raise Exception('invalid argument %s' % sys.argv[i]) |
| i += 2 |
| # create the object |
| u = miniupnpc.UPnP(multicastif, minissdpdsocket, discoverdelay, localport) |
| |
| print('inital(default) values :') |
| print(' discoverdelay', u.discoverdelay) |
| print(' lanaddr', u.lanaddr) |
| print(' multicastif', u.multicastif) |
| print(' minissdpdsocket', u.minissdpdsocket) |
#u.minissdpdsocket = '../minissdpd/minissdpd.sock' |
#u.minissdpdsocket = '../minissdpd/minissdpd.sock' |
# discovery process, it usualy takes several seconds (2 seconds or more) | # discovery process, it usually takes several seconds (2 seconds or more) |
print 'Discovering... delay=%ums' % u.discoverdelay | print('Discovering... delay=%ums' % u.discoverdelay) |
print u.discover(), 'device(s) detected' | print('%d device(s) detected' % u.discover()) |
# select an igd |
# select an igd |
try: |
try: |
u.selectigd() |
u.selectigd() |
except Exception, e: | except Exception as e: |
print 'Exception :', e | print('Exception :', e) |
sys.exit(1) |
sys.exit(1) |
|
# it is also possible to pass the root description URL to u.selectigd() : |
|
# u.selectigd('http://192.168.1.254:5678/desc/root') |
# display information about the IGD and the internet connection |
# display information about the IGD and the internet connection |
print 'local ip address :', u.lanaddr | print('local ip address :', u.lanaddr) |
print 'external ip address :', u.externalipaddress() | print('external ip address :', u.externalipaddress()) |
print u.statusinfo(), u.connectiontype() | print( u.statusinfo(), u.connectiontype()) |
| print('total bytes : sent', u.totalbytesent(), 'received', u.totalbytereceived()) |
| print('total packets : sent', u.totalpacketsent(), 'received', u.totalpacketreceived()) |
|
|
#print u.addportmapping(64000, 'TCP', |
#print u.addportmapping(64000, 'TCP', |
# '192.168.1.166', 63000, 'port mapping test', '') |
# '192.168.1.166', 63000, 'port mapping test', '') |
Line 43 while True:
|
Line 78 while True:
|
p = u.getgenericportmapping(i) |
p = u.getgenericportmapping(i) |
if p==None: |
if p==None: |
break |
break |
print i, p | print(i, p) |
(port, proto, (ihost,iport), desc, c, d, e) = p |
(port, proto, (ihost,iport), desc, c, d, e) = p |
#print port, desc |
#print port, desc |
i = i + 1 |
i = i + 1 |
|
|
print u.getspecificportmapping(port, proto) | print(u.getspecificportmapping(port, proto)) |
| try: |
| print(u.getportmappingnumberofentries()) |
| except Exception as e: |
| print('GetPortMappingNumberOfEntries() is not supported :', e) |
|
|