fixed script install

This commit is contained in:
onysd 2026-09-13 05:11:34 +03:00
parent cd59cd8d28
commit d8d6788a1c

View file

@ -607,6 +607,33 @@ def append_missing_env_fields(missing: list[tuple[str, str]]) -> None:
f.write("\n".join(block) + "\n") f.write("\n".join(block) + "\n")
def browsable_host_port(host_port: str) -> str:
"""Rewrites a wildcard bind to loopback, for display only.
TELESRV_ADMIN_UI_ADDR ships as 0.0.0.0:2600 so the panel is reachable from
other machines. But 0.0.0.0 means "every interface" -- it is not an address
anyone can type into a browser, and printing http://0.0.0.0:2600 as the
thing to open is the first instruction a new install gives you. Swap the
host for loopback so the printed URL actually works; the bind itself is
never touched.
"""
s = host_port.strip()
if s.startswith("["): # bracketed IPv6: [::]:2600, [::1]:2600
close = s.find("]")
if close == -1:
return s
host, rest = s[1:close], s[close + 1:]
return ("[::1]" if host in ("::", "") else f"[{host}]") + rest
host, sep, port = s.rpartition(":")
if not sep: # no port at all, nothing worth guessing about
return s
if host in ("0.0.0.0", "", "*"):
return f"127.0.0.1:{port}"
if host == "::":
return f"[::1]:{port}"
return s
def admin_ui_info() -> tuple[str, str | None] | None: def admin_ui_info() -> tuple[str, str | None] | None:
"""Returns (url, password) for the admin UI, or None if it isn't """Returns (url, password) for the admin UI, or None if it isn't
configured at all. password is None when TELESRV_ADMIN_UI_PASSWORD is configured at all. password is None when TELESRV_ADMIN_UI_PASSWORD is
@ -614,7 +641,12 @@ def admin_ui_info() -> tuple[str, str | None] | None:
addr = read_env_value("TELESRV_ADMIN_UI_ADDR") addr = read_env_value("TELESRV_ADMIN_UI_ADDR")
if not addr: if not addr:
return None return None
url = addr if addr.startswith(("http://", "https://")) else f"http://{addr}" if addr.startswith(("http://", "https://")):
scheme, _, rest = addr.partition("://")
netloc, slash, path = rest.partition("/")
url = f"{scheme}://{browsable_host_port(netloc)}{slash}{path}"
else:
url = f"http://{browsable_host_port(addr)}"
return url, (read_env_value("TELESRV_ADMIN_UI_PASSWORD") or None) return url, (read_env_value("TELESRV_ADMIN_UI_PASSWORD") or None)