12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #! /usr/bin/python
- # vim: tabstop=2 shiftwidth=2 expandtab
- # MiniUPnP project
- # Author : Thomas Bernard
- # This Sample code is public domain.
- # website : http://miniupnp.tuxfamily.org/
- # import the python miniupnpc module
- import miniupnpc
- import sys
- try:
- import argparse
- parser = argparse.ArgumentParser()
- parser.add_argument('-m', '--multicastif')
- parser.add_argument('-p', '--minissdpdsocket')
- parser.add_argument('-d', '--discoverdelay', type=int, default=200)
- parser.add_argument('-z', '--localport', type=int, default=0)
- # 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'
- # discovery process, it usualy takes several seconds (2 seconds or more)
- print 'Discovering... delay=%ums' % u.discoverdelay
- print u.discover(), 'device(s) detected'
- # select an igd
- try:
- u.selectigd()
- except Exception, e:
- print 'Exception :', e
- sys.exit(1)
- # display information about the IGD and the internet connection
- print 'local ip address :', u.lanaddr
- print 'external ip address :', u.externalipaddress()
- 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',
- # '192.168.1.166', 63000, 'port mapping test', '')
- #print u.deleteportmapping(64000, 'TCP')
- port = 0
- proto = 'UDP'
- # list the redirections :
- i = 0
- while True:
- p = u.getgenericportmapping(i)
- if p==None:
- break
- print i, p
- (port, proto, (ihost,iport), desc, c, d, e) = p
- #print port, desc
- i = i + 1
- print u.getspecificportmapping(port, proto)
- try:
- print u.getportmappingnumberofentries()
- except Exception, e:
- print 'GetPortMappingNumberOfEntries() is not supported :', e
|