secret validation

This commit is contained in:
Flowseal 2026-03-29 17:30:39 +03:00
parent 46426c45b0
commit be8d178e5c
4 changed files with 14 additions and 6 deletions

View File

@ -151,16 +151,16 @@ def _edit_config_dialog() -> None:
done.set() done.set()
def on_save() -> None: def on_save() -> None:
from tkinter import messagebox
merged = validate_config_form(widgets, DEFAULT_CONFIG, include_autostart=False) merged = validate_config_form(widgets, DEFAULT_CONFIG, include_autostart=False)
if isinstance(merged, str): if isinstance(merged, str):
_show_error(merged) messagebox.showerror("TG WS Proxy — Ошибка", merged, parent=root)
return return
save_config(merged) save_config(merged)
_config.update(merged) _config.update(merged)
log.info("Config saved: %s", merged) log.info("Config saved: %s", merged)
_tray_icon.menu = _build_menu() _tray_icon.menu = _build_menu()
from tkinter import messagebox
do_restart = messagebox.askyesno( do_restart = messagebox.askyesno(
"Перезапустить?", "Перезапустить?",
"Настройки сохранены.\n\nПерезапустить прокси сейчас?", "Настройки сохранены.\n\nПерезапустить прокси сейчас?",

View File

@ -1043,7 +1043,7 @@ async def _run(stop_event: Optional[asyncio.Event] = None):
log.info("=" * 60) log.info("=" * 60)
log.info(" Telegram MTProto WS Bridge Proxy") log.info(" Telegram MTProto WS Bridge Proxy")
log.info(" Listening on %s:%d", proxy_config.host, proxy_config.port) log.info(" Listening on %s:%d", proxy_config.host, proxy_config.port)
log.info(" Secret: %s", "dd" + proxy_config.secret) log.info(" Secret: %s", proxy_config.secret)
log.info(" Target DC IPs:") log.info(" Target DC IPs:")
for dc in sorted(proxy_config.dc_redirects.keys()): for dc in sorted(proxy_config.dc_redirects.keys()):
ip = proxy_config.dc_redirects.get(dc) ip = proxy_config.dc_redirects.get(dc)

View File

@ -372,10 +372,18 @@ def validate_config_form(
except ValueError as e: except ValueError as e:
return str(e) return str(e)
secret_val = widgets.secret_var.get().strip()
if len(secret_val) != 32:
return "Secret должен содержать ровно 32 hex-символа (16 байт)."
try:
bytes.fromhex(secret_val)
except ValueError:
return "Secret должен состоять только из hex-символов (0-9, a-f)."
new_cfg: Dict[str, Any] = { new_cfg: Dict[str, Any] = {
"host": host_val, "host": host_val,
"port": port_val, "port": port_val,
"secret": widgets.secret_var.get().strip(), "secret": secret_val,
"dc_ip": lines, "dc_ip": lines,
"verbose": widgets.verbose_var.get(), "verbose": widgets.verbose_var.get(),
} }

View File

@ -214,9 +214,10 @@ def _edit_config_dialog() -> None:
done.set() done.set()
def on_save() -> None: def on_save() -> None:
from tkinter import messagebox
merged = validate_config_form(widgets, DEFAULT_CONFIG, include_autostart=_supports_autostart()) merged = validate_config_form(widgets, DEFAULT_CONFIG, include_autostart=_supports_autostart())
if isinstance(merged, str): if isinstance(merged, str):
_show_error(merged) messagebox.showerror("TG WS Proxy — Ошибка", merged, parent=root)
return return
save_config(merged) save_config(merged)
_config.update(merged) _config.update(merged)
@ -225,7 +226,6 @@ def _edit_config_dialog() -> None:
set_autostart_enabled(bool(merged.get("autostart", False))) set_autostart_enabled(bool(merged.get("autostart", False)))
_tray_icon.menu = _build_menu() _tray_icon.menu = _build_menu()
from tkinter import messagebox
do_restart = messagebox.askyesno( do_restart = messagebox.askyesno(
"Перезапустить?", "Перезапустить?",
"Настройки сохранены.\n\nПерезапустить прокси сейчас?", "Настройки сохранены.\n\nПерезапустить прокси сейчас?",