pymoduletest.py 2.7 KB

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