如何正确运行localtunnel v2

bor*_*ges 10 python networking tunnel

我正在使用localtunnel v1.但是我发现v2允许你自定义子域,我需要这个功能.

我跟着介绍的教程README资源库,但它让我感到困惑的几个部分,并在结束时,它没有工作.

第一步是在端口号上运行一些web-app:checked.8000.

然后,它说了一些关于主机名的内容:

Localtunnel使用主机名执行一些操作,因此您需要设置两个主机名.一个用于localtunnel注册,一个用于本地隧道.通常它需要一个通配符,但我们只是硬编码这个示例隧道的主机名.

example.localtunnel.local - > 127.0.0.1
localtunnel.local - > 127.0.0.1

您可以在/ etc/hosts中执行此操作或使用该奇特的ghost实用程序.

我迷路了,但我仍然编辑了我/etc/hosts:

127.0.0.1   localhost
127.0.1.1   my-pc-name
127.0.0.1   example.localtunnel.local
127.0.0.1   localtunnel.local
Run Code Online (Sandbox Code Playgroud)

下一步...

现在您可以启动服务器了.它基于config目录中的配置文件.您可以创建自己的,但是这个配置为在端口9999上运行服务器并且期望​​主机名localtunnel.local

ginkgo config/default.conf.py

哪一个?无论如何......我根据localtunnel repo的目录中的文件创建了myconfig.conf.py /deploy:

port = 9999
hostname = 'localtunnel.local'
service = 'localtunnel.server.TunnelBroker'
Run Code Online (Sandbox Code Playgroud)

但是,当我跑:

lt --broker 127.0.0.1:9999 --name example 8000
Run Code Online (Sandbox Code Playgroud)

我有:

Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/gevent/greenlet.py", line 390, in run
  result = self._run(*self.args, **self.kwargs)
File "/usr/local/lib/python2.7/dist-packages/localtunnel/client.py", line 53, in listen
  msg = self.ws.receive(msg_obj=True)
TypeError: receive() got an unexpected keyword argument 'msg_obj'
<Greenlet at 0xb6e0db1cL: <bound method TunnelClient.listen of <localtunnel.client.TunnelClient object at 0xb6def52c>>> failed with TypeError
Run Code Online (Sandbox Code Playgroud)

而在银杏过程中:

Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/gevent/pywsgi.py", line 438, in handle_one_response
  self.run_application()
File "/usr/local/lib/python2.7/dist-packages/ws4py/server/geventserver.py", line 85, in run_application
  self.result = self.application(self.environ, start_response_for_upgrade)
File "/usr/local/lib/python2.7/dist-packages/ws4py/server/wsgi/middleware.py", line 131, in __call__
  environ.copy()))
TypeError: handle_websocket() takes exactly 3 arguments (2 given)
<BrokerFrontend fileno=6 address=0.0.0.0:9999>: Failed to handle request:
  request = GET /t/example HTTP/1.1 from ('127.0.0.1', 35907)
  application = <ws4py.server.wsgi.middleware.WebSocketUpgradeMiddleware object at 0x95bc2ac>

127.0.0.1 - - [2012-05-14 17:18:18] "GET /t/example HTTP/1.1" 101 162 0.000933
Run Code Online (Sandbox Code Playgroud)

显然,http://example.localtunnel.local:9999不起作用.

如何解决这个问题?我必须修改以更改最终子域?

抱歉令人毛骨悚然的英语.


编辑

我遵循了保罗的建议并做了降级.但是,虽然发生了变化,但仍然会出现错误.银杏加工:

$ ginkgo eco.conf.py  
Starting process with eco.conf.py...  
127.0.0.1 - - [2012-05-22 20:21:11] "GET /t/example HTTP/1.1" 400 116 0.000190
Run Code Online (Sandbox Code Playgroud)

localtunnel流程:

$ lt --broker 127.0.0.1:9999 --name example 8000
Traceback (most recent call last):
  File "/usr/local/bin/lt", line 9, in <module>
    load_entry_point('localtunnel==0.4.0', 'console_scripts', 'lt')()
  File "/usr/local/lib/python2.7/dist-packages/localtunnel/client.py", line 31, in main
    client.serve_forever()
  File "/usr/local/lib/python2.7/dist-packages/ginkgo/core.py", line 188, in serve_forever
    self.start()
  File "/usr/local/lib/python2.7/dist-packages/ginkgo/core.py", line 124, in start
    ready = not self.do_start()
  File "/usr/local/lib/python2.7/dist-packages/localtunnel/client.py", line 42, in do_start  
    self.ws.connect()
  File "/usr/local/lib/python2.7/dist-packages/ws4py-0.1.5-py2.7.egg/ws4py/client/threadedclient.py", line 72, in connect
    self.process_response_line(response_line)
  File "/usr/local/lib/python2.7/dist-packages/ws4py-0.1.5-py2.7.egg/ws4py/client/__init__.py", line 61, in process_response_line
    raise HandshakeError("Invalid response status: %s %s" % (code, status))
ws4py.exc.HandshakeError: Invalid response status: 400 Bad Handshake
Run Code Online (Sandbox Code Playgroud)

虽然银杏现在没有给出任何错误,但localtunnel仍然会提出与先前错误不同的错误.显然它试图在连接过程中获得"/ t/example".

the*_*aul 2

看起来这个软件需要旧版本的 ws4py。ws4py 的当前版本(0.2.1) 与您所拥有的版本匹配,而ws4py 的 0.1.5 版本与 localtunnel 尝试使用的版本匹配。

降级到 ws4py 0.1.5 可能足以解决您遇到的问题。

但另一方面,这似乎并不是世界上支持最好的软件。您确定这是解决您问题的正确解决方案吗?我查看了该存储库中提供的代码和所有文档,我得到的是它设置了这个奇怪的 tcp-tunnel-over-json-over-websockets (是的,websockets,对于在两个服务器和客户端!)的东西,甚至没有提供任何特定的安全性或加密或其自身的稳健性功能,而且它似乎没有做任何其他更常见的工具不能做得更好的事情。但当然,我可能会错过一些重要的东西。