Пример #1
0
def recv_help(ip, my_hash):
    logging.debug(f'ip: {ip}')
    logging.debug(f'hash: {my_hash}')
    s = socket.create_connection((ip, 8080))
    listenfd = socket.socket()
    listenfd.bind(('0.0.0.0', 0))
    listenfd.listen()
    port = listenfd.getsockname()
    logging.debug(f'port: {port[1]}')
    data = dumps({'port': port[1], 'hash': my_hash}).encode('utf-8')
    req = {}
    req['op'] = 0x16
    req['length'] = len(data)
    req = difuse_request.build(req)
    s.sendall(req+data)
    s.close()
    s, conn = listenfd.accept()
    while(1):
        h = s.recv(difuse_request.sizeof())
        if not h:
            break
        h = difuse_request.parse(h)
        data = s.recv(h.length)
        data = loads(data)
        data['data'] = data['data'].encode('utf-8')
        data['data'] = b64decode(data['data'])
        f = open(data['fname'], 'wb')
        f.write(data['data'])
        f.close()
    s.close()
    listenfd.close()
Пример #2
0
    res['length'] = len(data)
    fd.sendall(difuse_response.build(res) + data)


if __name__ == '__main__':
    logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)

    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
        sock.bind(('0.0.0.0', 8081))
        sock.listen()

        file_list = []
        file_ip = {}
        host_list = []
        hash2ip = {}
        size = difuse_request.sizeof()

        handle = {
            0x01: list_dir,
            0x02: lookup,
            0x03: join,
            0x04: leave,
            0x05: create,
            0x06: remove,
            0x07: rename
        }

        while 0xDEAD:
            fd, addr = sock.accept()
            header = difuse_request.parse(fd.recv(size))
            payload = None