def test_pack_unpack_single_tag(): # name --> 0x101 257 # type --> 6 # data --> SVN tag_in = ECTag('client_version', 'string', u'SVN') tag_bin = tag_in.pack() tag_out, len, _ = unpack_ectag(tag_bin, False) assert tag_in.tagname == tag_out.tagname print tag_out.tagname, tag_out.tagtype, tag_out.tagdata
def test_pack_unpack_complex_tag(): subtag1 = ECTag('client_hash', 'hash16', '1234567890abcdef') subtag2 = ECTag('server_address', 'ipv4', "192.168.1.37:9527") subtag3 = ECTag('server_users', 'uint32', 0x5a5a) subtags = [ subtag1, subtag2, subtag3] maintag = ECTag('server', 'string', "aMule Server No2", subtags) maintag_bin = maintag.pack() maintag_out ,length, _ = unpack_ectag(maintag_bin, False) print maintag_out.debugrepr()
def unpack_ecpacket(data, utf8_num=True ): op, data = unpack_ecpacket_op(data) op = codes.ops_rev[op] tagcount, data = unpack_ectag_tagcount(data, utf8_num) subtags = [ ] for i in range(tagcount): tag, data, _ = unpack_ectag(data, utf8_num) subtags.append(tag) return ECPacket( op, subtags)