Example #1
0
def client_connector(backend,
                     local_port,
                     tunnel_data,
                     ready=gevent.event.Event()):
    while True:
        init = tunnel_data.pop('init', None)
        header = copy.copy(tunnel_data)
        if init:
            header['new'] = True
            ready.clear()
        elif not ready.isSet():
            ready.wait()
        backend_client = create_connection(backend)
        backend_client.sendall("{0}\n".format(json.dumps(header)))
        header = recv_json(backend_client)
        if header and 'banner' in header:
            print "  {0}".format(header['banner'])
            print "  Port {0} is now accessible from http://{1} ...\n".format(
                local_port, header['host'])
            ready.set()
        elif header and 'error' in header:
            print "  ERROR: {0}".format(header['error'])
            gevent.hub.get_hub().parent.throw(SystemExit(1))
        else:
            try:
                local_client = create_connection(('0.0.0.0', local_port))
                join_sockets(backend_client, local_client)
            except IOError:
                backend_client.close()
def client_connector(backend, local_port, tunnel_data,
            ready=gevent.event.Event()):
    while True:
        init = tunnel_data.pop('init', None)
        header = copy.copy(tunnel_data)
        if init:
            header['new'] = True
            ready.clear()
        elif not ready.isSet():
            ready.wait()
        backend_client = create_connection(backend)
        backend_client.sendall("{0}\n".format(json.dumps(header)))
        header = recv_json(backend_client)
        if header and 'banner' in header:
            print "  {0}".format(header['banner'])
            print "  Port {0} is now accessible from http://{1} ...\n".format(
                    local_port, header['host'])
            ready.set()
        elif header and 'error' in header:
            print "  ERROR: {0}".format(header['error'])
            gevent.hub.get_hub().parent.throw(SystemExit(1))
        else:
            try:
                local_client = create_connection(('0.0.0.0', local_port))
                join_sockets(backend_client, local_client)
            except IOError:
                backend_client.close()
Example #3
0
def backend_handler(socket, address):
    header = recv_json(socket)
    if not header:
        logging.debug("!backend: no header, closing")
        socket.close()
        return
    try:
        tunnel = Tunnel.get_by_header(header)
    except RuntimeError, e:
        socket.sendall("{0}\n".format(json.dumps({"error": str(e)})))
        socket.close()
        return
def backend_handler(socket, address):
    header = recv_json(socket)
    if not header:
        logging.debug("!backend: no header, closing")
        socket.close()
        return
    try:
        tunnel = Tunnel.get_by_header(header)
    except RuntimeError, e:
        socket.sendall("{0}\n".format(
            json.dumps({"error": str(e)})))
        socket.close()
        return