Upload 12 files
Browse files- colab_tunnel/_tunnels.py +14 -2
colab_tunnel/_tunnels.py
CHANGED
|
@@ -291,14 +291,26 @@ def get_mmar_url(port: int) -> str:
|
|
| 291 |
|
| 292 |
@tunnel_provider('tunnelite')
|
| 293 |
def get_tunnelite_url(port: int) -> str:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 294 |
return get_revproxy_url(
|
| 295 |
bin_url='https://github.com/hehepiska/tunnellite-linux/releases/download/latest/tunnelite',
|
| 296 |
need_unpack=False,
|
| 297 |
bin_path=tunnelite_bin,
|
| 298 |
-
start_commands=[
|
|
|
|
|
|
|
|
|
|
|
|
|
| 299 |
read_from_stderr=False,
|
| 300 |
url_pattern=r'(?P<url>https?://\S+\.tunnelite\.com)',
|
| 301 |
-
timeout=45.0,
|
| 302 |
)
|
| 303 |
|
| 304 |
|
|
|
|
| 291 |
|
| 292 |
@tunnel_provider('tunnelite')
|
| 293 |
def get_tunnelite_url(port: int) -> str:
|
| 294 |
+
"""
|
| 295 |
+
tunnelite — интерактивное TUI-приложение, которое проверяет isatty(stdout).
|
| 296 |
+
Без PTY оно выводит URL и сразу завершается, не поддерживая туннель → 404.
|
| 297 |
+
`script -q -c "..." /dev/null` выделяет pseudo-TTY для дочернего процесса,
|
| 298 |
+
tunnelite думает что работает в терминале и держит соединение.
|
| 299 |
+
script при этом транслирует весь вывод в свой stdout — читаем через обычный PIPE.
|
| 300 |
+
"""
|
| 301 |
+
kill_process_by_name(tunnelite_bin.name)
|
| 302 |
return get_revproxy_url(
|
| 303 |
bin_url='https://github.com/hehepiska/tunnellite-linux/releases/download/latest/tunnelite',
|
| 304 |
need_unpack=False,
|
| 305 |
bin_path=tunnelite_bin,
|
| 306 |
+
start_commands=[
|
| 307 |
+
'script', '-q', '-c',
|
| 308 |
+
f'{tunnelite_bin} http://127.0.0.1:{port}',
|
| 309 |
+
'/dev/null',
|
| 310 |
+
],
|
| 311 |
read_from_stderr=False,
|
| 312 |
url_pattern=r'(?P<url>https?://\S+\.tunnelite\.com)',
|
| 313 |
+
timeout=45.0,
|
| 314 |
)
|
| 315 |
|
| 316 |
|