PLUS: serveo --subdomain
Browse files- plus/serve_muscriptor.py +17 -2
plus/serve_muscriptor.py
CHANGED
|
@@ -168,6 +168,16 @@ class Tunnel:
|
|
| 168 |
pass
|
| 169 |
|
| 170 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 171 |
SSH_OPTS = ["-o", "StrictHostKeyChecking=no", "-o", "UserKnownHostsFile=/dev/null",
|
| 172 |
"-o", "ServerAliveInterval=15", "-o", "ServerAliveCountMax=3",
|
| 173 |
"-o", "TCPKeepAlive=yes", "-o", "ExitOnForwardFailure=yes"]
|
|
@@ -229,7 +239,7 @@ def specs(port: int) -> list[tuple[str, list[str], str]]:
|
|
| 229 |
["ssh", "-T", *SSH_OPTS, "-R", "80:127.0.0.1:%d" % port, SSH_USER + "@localhost.run"],
|
| 230 |
r"https://[a-z0-9]+\.lhr\.life"),
|
| 231 |
("serveo",
|
| 232 |
-
["ssh", "-T", *SSH_OPTS, "-R",
|
| 233 |
r"https://[a-z0-9-]+(?:\.[a-z0-9-]+)*\."
|
| 234 |
r"(?:serveousercontent|serveo)\.[a-z]+"),
|
| 235 |
("pinggy",
|
|
@@ -468,6 +478,8 @@ def main(argv: list[str] | None = None) -> int:
|
|
| 468 |
help="путь к safetensors, имя размера или hf://org/repo/file")
|
| 469 |
parser.add_argument("--device", default="auto", help="auto | cpu | cuda | cuda:0")
|
| 470 |
parser.add_argument("--dtype", default=None, help="float32 | float16 | bfloat16")
|
|
|
|
|
|
|
| 471 |
parser.add_argument("--tunnel", default=None, help="только этот туннель")
|
| 472 |
parser.add_argument("--ssh", default=None,
|
| 473 |
help="свой ssh-туннель: пользователь@хост или пользователь@хост:порт")
|
|
@@ -491,7 +503,10 @@ def main(argv: list[str] | None = None) -> int:
|
|
| 491 |
help="инструменты для модели: auto (по умолчанию), band (8 групп)"
|
| 492 |
" или список через запятую")
|
| 493 |
args = parser.parse_args(argv)
|
| 494 |
-
global SSH_USER, CUSTOM_SSH
|
|
|
|
|
|
|
|
|
|
| 495 |
if args.ssh_user:
|
| 496 |
SSH_USER = args.ssh_user
|
| 497 |
if args.ssh:
|
|
|
|
| 168 |
pass
|
| 169 |
|
| 170 |
|
| 171 |
+
SUBDOMAIN = os.environ.get("MUSCRIPTOR_SUBDOMAIN", "").strip()
|
| 172 |
+
|
| 173 |
+
|
| 174 |
+
def forward_spec(port: int, wants_name: bool) -> str:
|
| 175 |
+
"""Строка проброса: с постоянным поддоменом, если он задан."""
|
| 176 |
+
if wants_name and SUBDOMAIN:
|
| 177 |
+
return "%s:80:127.0.0.1:%d" % (SUBDOMAIN, port)
|
| 178 |
+
return "80:127.0.0.1:%d" % port
|
| 179 |
+
|
| 180 |
+
|
| 181 |
SSH_OPTS = ["-o", "StrictHostKeyChecking=no", "-o", "UserKnownHostsFile=/dev/null",
|
| 182 |
"-o", "ServerAliveInterval=15", "-o", "ServerAliveCountMax=3",
|
| 183 |
"-o", "TCPKeepAlive=yes", "-o", "ExitOnForwardFailure=yes"]
|
|
|
|
| 239 |
["ssh", "-T", *SSH_OPTS, "-R", "80:127.0.0.1:%d" % port, SSH_USER + "@localhost.run"],
|
| 240 |
r"https://[a-z0-9]+\.lhr\.life"),
|
| 241 |
("serveo",
|
| 242 |
+
["ssh", "-T", *SSH_OPTS, "-R", forward_spec(port, True), "serveo.net"],
|
| 243 |
r"https://[a-z0-9-]+(?:\.[a-z0-9-]+)*\."
|
| 244 |
r"(?:serveousercontent|serveo)\.[a-z]+"),
|
| 245 |
("pinggy",
|
|
|
|
| 478 |
help="путь к safetensors, имя размера или hf://org/repo/file")
|
| 479 |
parser.add_argument("--device", default="auto", help="auto | cpu | cuda | cuda:0")
|
| 480 |
parser.add_argument("--dtype", default=None, help="float32 | float16 | bfloat16")
|
| 481 |
+
parser.add_argument("--subdomain", default="",
|
| 482 |
+
help="постоянный поддомен serveo, например nokia1709")
|
| 483 |
parser.add_argument("--tunnel", default=None, help="только этот туннель")
|
| 484 |
parser.add_argument("--ssh", default=None,
|
| 485 |
help="свой ssh-туннель: пользователь@хост или пользователь@хост:порт")
|
|
|
|
| 503 |
help="инструменты для модели: auto (по умолчанию), band (8 групп)"
|
| 504 |
" или список через запятую")
|
| 505 |
args = parser.parse_args(argv)
|
| 506 |
+
global SSH_USER, CUSTOM_SSH, SUBDOMAIN
|
| 507 |
+
if args.subdomain:
|
| 508 |
+
SUBDOMAIN = args.subdomain.strip()
|
| 509 |
+
os.environ["MUSCRIPTOR_SUBDOMAIN"] = SUBDOMAIN
|
| 510 |
if args.ssh_user:
|
| 511 |
SSH_USER = args.ssh_user
|
| 512 |
if args.ssh:
|