home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_2530 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  8.3 KB  |  298 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import win32wnet
  5. import struct
  6. import string
  7. NCBNAMSZ = 16
  8. MAX_LANA = 254
  9. NAME_FLAGS_MASK = 135
  10. GROUP_NAME = 128
  11. UNIQUE_NAME = 0
  12. REGISTERING = 0
  13. REGISTERED = 4
  14. DEREGISTERED = 5
  15. DUPLICATE = 6
  16. DUPLICATE_DEREG = 7
  17. LISTEN_OUTSTANDING = 1
  18. CALL_PENDING = 2
  19. SESSION_ESTABLISHED = 3
  20. HANGUP_PENDING = 4
  21. HANGUP_COMPLETE = 5
  22. SESSION_ABORTED = 6
  23. ALL_TRANSPORTS = 'M\x00\x00\x00'
  24. MS_NBF = 'MNBF'
  25. NCBCALL = 16
  26. NCBLISTEN = 17
  27. NCBHANGUP = 18
  28. NCBSEND = 20
  29. NCBRECV = 21
  30. NCBRECVANY = 22
  31. NCBCHAINSEND = 23
  32. NCBDGSEND = 32
  33. NCBDGRECV = 33
  34. NCBDGSENDBC = 34
  35. NCBDGRECVBC = 35
  36. NCBADDNAME = 48
  37. NCBDELNAME = 49
  38. NCBRESET = 50
  39. NCBASTAT = 51
  40. NCBSSTAT = 52
  41. NCBCANCEL = 53
  42. NCBADDGRNAME = 54
  43. NCBENUM = 55
  44. NCBUNLINK = 112
  45. NCBSENDNA = 113
  46. NCBCHAINSENDNA = 114
  47. NCBLANSTALERT = 115
  48. NCBACTION = 119
  49. NCBFINDNAME = 120
  50. NCBTRACE = 121
  51. ASYNCH = 128
  52. NRC_GOODRET = 0
  53. NRC_BUFLEN = 1
  54. NRC_ILLCMD = 3
  55. NRC_CMDTMO = 5
  56. NRC_INCOMP = 6
  57. NRC_BADDR = 7
  58. NRC_SNUMOUT = 8
  59. NRC_NORES = 9
  60. NRC_SCLOSED = 10
  61. NRC_CMDCAN = 11
  62. NRC_DUPNAME = 13
  63. NRC_NAMTFUL = 14
  64. NRC_ACTSES = 15
  65. NRC_LOCTFUL = 17
  66. NRC_REMTFUL = 18
  67. NRC_ILLNN = 19
  68. NRC_NOCALL = 20
  69. NRC_NOWILD = 21
  70. NRC_INUSE = 22
  71. NRC_NAMERR = 23
  72. NRC_SABORT = 24
  73. NRC_NAMCONF = 25
  74. NRC_IFBUSY = 33
  75. NRC_TOOMANY = 34
  76. NRC_BRIDGE = 35
  77. NRC_CANOCCR = 36
  78. NRC_CANCEL = 38
  79. NRC_DUPENV = 48
  80. NRC_ENVNOTDEF = 52
  81. NRC_OSRESNOTAV = 53
  82. NRC_MAXAPPS = 54
  83. NRC_NOSAPS = 55
  84. NRC_NORESOURCES = 56
  85. NRC_INVADDRESS = 57
  86. NRC_INVDDID = 59
  87. NRC_LOCKFAIL = 60
  88. NRC_OPENERR = 63
  89. NRC_SYSTEM = 64
  90. NRC_PENDING = 255
  91. UCHAR = 'B'
  92. WORD = 'H'
  93. DWORD = 'I'
  94. USHORT = 'H'
  95. ULONG = 'I'
  96. ADAPTER_STATUS_ITEMS = [
  97.     ('6s', 'adapter_address'),
  98.     (UCHAR, 'rev_major'),
  99.     (UCHAR, 'reserved0'),
  100.     (UCHAR, 'adapter_type'),
  101.     (UCHAR, 'rev_minor'),
  102.     (WORD, 'duration'),
  103.     (WORD, 'frmr_recv'),
  104.     (WORD, 'frmr_xmit'),
  105.     (WORD, 'iframe_recv_err'),
  106.     (WORD, 'xmit_aborts'),
  107.     (DWORD, 'xmit_success'),
  108.     (DWORD, 'recv_success'),
  109.     (WORD, 'iframe_xmit_err'),
  110.     (WORD, 'recv_buff_unavail'),
  111.     (WORD, 't1_timeouts'),
  112.     (WORD, 'ti_timeouts'),
  113.     (DWORD, 'reserved1'),
  114.     (WORD, 'free_ncbs'),
  115.     (WORD, 'max_cfg_ncbs'),
  116.     (WORD, 'max_ncbs'),
  117.     (WORD, 'xmit_buf_unavail'),
  118.     (WORD, 'max_dgram_size'),
  119.     (WORD, 'pending_sess'),
  120.     (WORD, 'max_cfg_sess'),
  121.     (WORD, 'max_sess'),
  122.     (WORD, 'max_sess_pkt_size'),
  123.     (WORD, 'name_count')]
  124. NAME_BUFFER_ITEMS = [
  125.     (str(NCBNAMSZ) + 's', 'name'),
  126.     (UCHAR, 'name_num'),
  127.     (UCHAR, 'name_flags')]
  128. SESSION_HEADER_ITEMS = [
  129.     (UCHAR, 'sess_name'),
  130.     (UCHAR, 'num_sess'),
  131.     (UCHAR, 'rcv_dg_outstanding'),
  132.     (UCHAR, 'rcv_any_outstanding')]
  133. SESSION_BUFFER_ITEMS = [
  134.     (UCHAR, 'lsn'),
  135.     (UCHAR, 'state'),
  136.     (str(NCBNAMSZ) + 's', 'local_name'),
  137.     (str(NCBNAMSZ) + 's', 'remote_name'),
  138.     (UCHAR, 'rcvs_outstanding'),
  139.     (UCHAR, 'sends_outstanding')]
  140. LANA_ENUM_ITEMS = [
  141.     ('B', 'length'),
  142.     (str(MAX_LANA + 1) + 's', 'lana')]
  143. FIND_NAME_HEADER_ITEMS = [
  144.     (WORD, 'node_count'),
  145.     (UCHAR, 'reserved'),
  146.     (UCHAR, 'unique_group')]
  147. FIND_NAME_BUFFER_ITEMS = [
  148.     (UCHAR, 'length'),
  149.     (UCHAR, 'access_control'),
  150.     (UCHAR, 'frame_control'),
  151.     ('6s', 'destination_addr'),
  152.     ('6s', 'source_addr'),
  153.     ('18s', 'routing_info')]
  154. ACTION_HEADER_ITEMS = [
  155.     (ULONG, 'transport_id'),
  156.     (USHORT, 'action_code'),
  157.     (USHORT, 'reserved')]
  158. del UCHAR
  159. del WORD
  160. del DWORD
  161. del USHORT
  162. del ULONG
  163. NCB = win32wnet.NCB
  164.  
  165. def Netbios(ncb):
  166.     ob = ncb.Buffer
  167.     is_ours = hasattr(ob, '_pack')
  168.     if is_ours:
  169.         ob._pack()
  170.     
  171.     
  172.     try:
  173.         return win32wnet.Netbios(ncb)
  174.     finally:
  175.         if is_ours:
  176.             ob._unpack()
  177.         
  178.  
  179.  
  180.  
  181. class NCBStruct:
  182.     
  183.     def __init__(self, items):
  184.         self._format = string.join(map((lambda item: item[0]), items), '')
  185.         self._items = items
  186.         self._buffer_ = win32wnet.NCBBuffer(struct.calcsize(self._format))
  187.         for format, name in self._items:
  188.             if len(format) == 1:
  189.                 if format == 'c':
  190.                     val = '\x00'
  191.                 else:
  192.                     val = 0
  193.             else:
  194.                 l = int(format[:-1])
  195.                 val = '\x00' * l
  196.             self.__dict__[name] = val
  197.         
  198.  
  199.     
  200.     def _pack(self):
  201.         vals = []
  202.         for format, name in self._items:
  203.             
  204.             try:
  205.                 vals.append(self.__dict__[name])
  206.             continue
  207.             except KeyError:
  208.                 vals.append(None)
  209.                 continue
  210.             
  211.  
  212.         
  213.         self._buffer_[:] = apply(struct.pack, (self._format,) + tuple(vals))
  214.  
  215.     
  216.     def _unpack(self):
  217.         items = struct.unpack(self._format, self._buffer_)
  218.         for format, name in map(None, self._items, items):
  219.             val = None
  220.             self.__dict__[name] = val
  221.         
  222.  
  223.     
  224.     def __setattr__(self, attr, val):
  225.         if not self.__dict__.has_key(attr) and attr[0] != '_':
  226.             for format, attr_name in self._items:
  227.                 if attr == attr_name:
  228.                     break
  229.                     continue
  230.             else:
  231.                 raise AttributeError, attr
  232.         self.__dict__[attr] = val
  233.  
  234.  
  235.  
  236. def ADAPTER_STATUS():
  237.     return NCBStruct(ADAPTER_STATUS_ITEMS)
  238.  
  239.  
  240. def NAME_BUFFER():
  241.     return NCBStruct(NAME_BUFFER_ITEMS)
  242.  
  243.  
  244. def SESSION_HEADER():
  245.     return NCBStruct(SESSION_HEADER_ITEMS)
  246.  
  247.  
  248. def SESSION_BUFFER():
  249.     return NCBStruct(SESSION_BUFFER_ITEMS)
  250.  
  251.  
  252. def LANA_ENUM():
  253.     return NCBStruct(LANA_ENUM_ITEMS)
  254.  
  255.  
  256. def FIND_NAME_HEADER():
  257.     return NCBStruct(FIND_NAME_HEADER_ITEMS)
  258.  
  259.  
  260. def FIND_NAME_BUFFER():
  261.     return NCBStruct(FIND_NAME_BUFFER_ITEMS)
  262.  
  263.  
  264. def ACTION_HEADER():
  265.     return NCBStruct(ACTION_HEADER_ITEMS)
  266.  
  267. if __name__ == '__main__':
  268.     ncb = NCB()
  269.     ncb.Command = NCBENUM
  270.     la_enum = LANA_ENUM()
  271.     ncb.Buffer = la_enum
  272.     rc = Netbios(ncb)
  273.     if rc != 0:
  274.         raise RuntimeError, 'Unexpected result %d' % (rc,)
  275.     rc != 0
  276.     for i in range(la_enum.length):
  277.         ncb.Reset()
  278.         ncb.Command = NCBRESET
  279.         ncb.Lana_num = ord(la_enum.lana[i])
  280.         rc = Netbios(ncb)
  281.         if rc != 0:
  282.             raise RuntimeError, 'Unexpected result %d' % (rc,)
  283.         rc != 0
  284.         ncb.Reset()
  285.         ncb.Command = NCBASTAT
  286.         ncb.Lana_num = ord(la_enum.lana[i])
  287.         ncb.Callname = '*               '
  288.         adapter = ADAPTER_STATUS()
  289.         ncb.Buffer = adapter
  290.         Netbios(ncb)
  291.         print 'Adapter address:',
  292.         for ch in adapter.adapter_address:
  293.             print '%02x' % (ord(ch),),
  294.         
  295.         print 
  296.     
  297.  
  298.