Как правильно запустить localtunnel v2

я использую localtunnel v1. Но я обнаружил, что v2 позволяет настраивать поддомен, и мне нужна эта функция.

я следовал учебнику, описанному в README С хранилище, но это смутило меня в нескольких частях и, в конце концов, это не сработало.

первый шаг-запустить некоторое веб-приложение: проверено, на порту нет. 8000.

затем он говорит что-то про хостов:

Localtunnel делает некоторые вещи с именем хоста, поэтому вы хотите настроить два имя хоста. Один для регистрации localtunnel, один для вашего localtunnel. Обычно он ожидает подстановочный знак, но мы просто закодируем имя хоста для это пример туннеля.

пример.localtunnel.local - > 127.0.0.1
localtunnel.local - > 127.0.0.1

вы можете сделать это в /etc/hosts или воспользуйся утилитой духа.

Я заблудился здесь, но тем не менее я отредактировал свой /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

следующий шаг...

теперь вы можете запустить сервер. Он основан на файле конфигурации в каталог config. Вы можете сделать свой собственный, но этот настроен на запустить сервер на порту 9999 и ожидает имя localtunnel.местные

гинкго config/default.conf.py

какой? В любом случае... Я создал myconfig.conf.py на основе файлов в localtunnel РЕПО реж /deploy:

port = 9999
hostname = 'localtunnel.local'
service = 'localtunnel.server.TunnelBroker'

но, когда я запускаю:

lt --broker 127.0.0.1:9999 --name example 8000

я:

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

и в процессе гинкго:

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

и, очевидно, http://example.localtunnel.местные: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

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

хотя Ginkgo не дает никаких ошибок сейчас, localtunnel по-прежнему вызывает ошибки, отличные от предыдущих ошибок. По-видимому, он пытается получить "/t / example " в процессе подключения.

2 ответов


похоже, что эту программу ждет старую версию ws4py. The текущая версия (0.2.1) ws4py соответствует тому, как это выглядит у вас, в то время как версия 0.1.5 из ws4py соответствует тому, что localtunnel пытается использовать.

понижение до ws4py 0.1.5 может быть достаточным для решения проблем, которые у вас возникли.

с другой стороны, это не похоже на лучшее поддерживаемое программное обеспечение в мире. Ты уверен, что это правильно? решение вашей проблемы? Я просмотрел код и все документы, предоставленные в этом РЕПО, и я получаю, что он устанавливает этот странный tcp-туннель-над-json-над-websockets (да, websockets, для чего-то с python как на сервере, так и на стороне клиента!) вещь, даже не предоставляя каких-либо конкретных возможностей безопасности или шифрования или надежности, и, похоже, не делает ничего, что другие более распространенные инструменты не могут сделать лучше. Но, допустим, я что-то упускаю. важный.


Я думаю, что вы должны следовать инструкциям по настройке localtunnel.com сервер (т. е. если вы хотите запустить свой собственный сервер localtunnel в другом домене).

установка localtunnel v2 для нормального использования должна быть такой же простой, как запуск pip install localtunnel (возможно, с sudo).

Как только это будет сделано, просто запустите localtunnel-beta -n <subdomain> 8000

дополнительные сведения см. В разделе сообщение в блоге Джеффа.