Ejemplo n.º 1
0
def run():
    logging.basicConfig(
        format="%(asctime)s %(levelname) 7s %(module)s: %(message)s",
        level=logging.DEBUG)

    parser = argparse.ArgumentParser(description='Localtunnel server daemon')
    parser.add_argument('frontend_port', metavar='frontend_port', type=int,
                help='port to run public frontend', default=8000)
    parser.add_argument('backend_port', metavar='backend_port', type=int,
                help='port to run backend server', default=8001)
    parser.add_argument('-d', '--domainpart', type=int,
                help='domain part (from the right) to extract tunnel name')
    args = parser.parse_args()
    
    logging.info("starting frontend on {0}...".format(args.frontend_port))
    logging.info("starting backend on {0}...".format(args.backend_port))
    
    if args.domainpart:
        Tunnel.domain_part = args.domainpart
    Tunnel.backend_port = args.backend_port

    frontend = gevent.server.StreamServer(
                ('0.0.0.0', args.frontend_port), frontend_handler)
    backend = gevent.server.StreamServer(
                ('0.0.0.0', args.backend_port), backend_handler)
    
    try:
        Tunnel.schedule_cleanup()
        gevent.joinall(group([
            gevent.spawn(frontend.serve_forever),
            gevent.spawn(backend.serve_forever),
        ]))
    except KeyboardInterrupt:
        pass
Ejemplo n.º 2
0
def run():
    parser = argparse.ArgumentParser(
                description='Open a public HTTP tunnel to a local server')
    parser.add_argument('port', metavar='port', type=int,
                help='local port of server to tunnel to')
    parser.add_argument('-n', dest='name', metavar='name',
                default=str(uuid.uuid4()).split('-')[-1], 
                help='name of the tunnel (default: randomly generate)')
    parser.add_argument('-c', dest='concurrency', type=int,
                metavar='concurrency', default=3,
                help='number of concurrent backend connections')
    parser.add_argument('-s', dest='host', metavar='address',
                default='v2.localtunnel.com',
                help='localtunnel server address (default: v2.localtunnel.com)')
    args = parser.parse_args()

    tunnel_data = {
            'name': args.name, 
            'client': client_name(),
            'init': True,
    }

    host = args.host.split(':')
    if len(host) == 1:
        backend_address = (host[0], discover_backend_port(host[0]))
    else:
        backend_address = (host[0], discover_backend_port(host[0], int(host[1])))

    try:
        spawn_args = [client_connector, backend_address, args.port, tunnel_data]
        gevent.joinall(group([
            gevent.spawn(*spawn_args) for n in range(args.concurrency)
        ]))
    except KeyboardInterrupt:
        pass
Ejemplo n.º 3
0
def run():
    parser = argparse.ArgumentParser(
        description='Open a public HTTP tunnel to a local server')
    parser.add_argument('port',
                        metavar='port',
                        type=int,
                        help='local port of server to tunnel to')
    parser.add_argument('-n',
                        dest='name',
                        metavar='name',
                        default=str(uuid.uuid4()).split('-')[-1],
                        help='name of the tunnel (default: randomly generate)')
    parser.add_argument('-c',
                        dest='concurrency',
                        type=int,
                        metavar='concurrency',
                        default=3,
                        help='number of concurrent backend connections')
    parser.add_argument(
        '-s',
        dest='host',
        metavar='address',
        default='v2.localtunnel.com',
        help='localtunnel server address (default: v2.localtunnel.com)')
    args = parser.parse_args()

    tunnel_data = {
        'name': args.name,
        'client': client_name(),
        'init': True,
    }

    host = args.host.split(':')
    if len(host) == 1:
        backend_address = (host[0], discover_backend_port(host[0]))
    else:
        backend_address = (host[0],
                           discover_backend_port(host[0], int(host[1])))

    try:
        spawn_args = [
            client_connector, backend_address, args.port, tunnel_data
        ]
        gevent.joinall(
            group([gevent.spawn(*spawn_args)
                   for n in range(args.concurrency)]))
    except KeyboardInterrupt:
        pass
Ejemplo n.º 4
0
def run():
    logging.basicConfig(
        format="%(asctime)s %(levelname) 7s %(module)s: %(message)s",
        level=logging.DEBUG)

    parser = argparse.ArgumentParser(description='Localtunnel server daemon')
    parser.add_argument('frontend_port',
                        metavar='frontend_port',
                        type=int,
                        help='port to run public frontend',
                        default=8000)
    parser.add_argument('backend_port',
                        metavar='backend_port',
                        type=int,
                        help='port to run backend server',
                        default=8001)
    parser.add_argument(
        '-d',
        '--domainpart',
        type=int,
        help='domain part (from the right) to extract tunnel name')
    args = parser.parse_args()

    logging.info("starting frontend on {0}...".format(args.frontend_port))
    logging.info("starting backend on {0}...".format(args.backend_port))

    if args.domainpart:
        Tunnel.domain_part = args.domainpart
    Tunnel.backend_port = args.backend_port

    frontend = gevent.server.StreamServer(('0.0.0.0', args.frontend_port),
                                          frontend_handler)
    backend = gevent.server.StreamServer(('0.0.0.0', args.backend_port),
                                         backend_handler)

    try:
        Tunnel.schedule_cleanup()
        gevent.joinall(
            group([
                gevent.spawn(frontend.serve_forever),
                gevent.spawn(backend.serve_forever),
            ]))
    except KeyboardInterrupt:
        pass