From 90c87a369496245509e1d379c18b1bbef02d809a Mon Sep 17 00:00:00 2001 From: AlexChard Date: Sat, 29 Aug 2026 13:13:04 +0400 Subject: [PATCH] Generate panel credentials securely --- README.md | 4 ++-- install-shared-vps.sh | 43 ++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index efa3fcd..3bcf57d 100644 --- a/README.md +++ b/README.md @@ -41,9 +41,9 @@ curl -fsSL https://git.chardb.ru/AlexChard/telegram-web-proxy/raw/branch/main/install-shared-vps.sh -o /tmp/install-telegram-web-proxy.sh && sudo bash /tmp/install-telegram-web-proxy.sh --domain gg.chardwork.ru --email YOUR_EMAIL ``` -Скрипт запросит логин и пароль панели через терминал. Пароль не передаётся в аргументах и не сохраняется в shell history. +Скрипт автоматически создаст длинный случайный пароль панели. Пароль не передаётся в аргументах и не сохраняется в shell history. -После установки адрес панели, основной secret и готовая Telegram-ссылка сохраняются на VPS: +После установки адрес панели, логин, пароль, основной secret и готовая Telegram-ссылка сохраняются на VPS: ```text /root/telegram-web-proxy-access.txt diff --git a/install-shared-vps.sh b/install-shared-vps.sh index b5da3b4..9cc88ff 100644 --- a/install-shared-vps.sh +++ b/install-shared-vps.sh @@ -137,6 +137,10 @@ apt-get -o DPkg::Lock::Timeout=600 install -y --no-install-recommends \ ca-certificates curl unzip socat python3 openssl git dnsutils nftables \ build-essential libssl-dev util-linux zlib1g-dev +PANEL_ADMIN="admin" +PANEL_PASSWORD="$(openssl rand -base64 24 | tr -d '\n' | tr '/+' '_-')" +[[ ${#PANEL_PASSWORD} -ge 20 ]] || die "Could not generate the panel password." + WORK_DIR="$(mktemp -d /tmp/gg-web-proxy.XXXXXXXX)" ARCHIVE="$WORK_DIR/web-panel-proxy.zip" curl --fail --silent --show-error --location \ @@ -266,6 +270,36 @@ replacement = ( if core.count(needle) != 1: raise SystemExit("Could not locate the canonical Caddy patch point") core = core.replace(needle, replacement) + +credentials_block = '''else + echo + read -r -p "Panel administrator login [admin]: " PANEL_ADMIN + PANEL_ADMIN="${PANEL_ADMIN:-admin}" + while true; do + read -r -s -p "Panel administrator password: " PANEL_PASS + echo + if [[ ${#PANEL_PASS} -lt 3 ]]; then + echo "Password must contain at least 3 characters." + continue + fi + break + done + printf '%s\\n%s\\n' "$PANEL_ADMIN" "$PANEL_PASS" > /etc/web-proxy-panel/install-credentials + chmod 0600 /etc/web-proxy-panel/install-credentials + unset PANEL_PASS +fi''' +credentials_replacement = '''else + PANEL_ADMIN="${WEBPROXY_PANEL_ADMIN:-admin}" + PANEL_PASS="${WEBPROXY_PANEL_PASSWORD:?WEBPROXY_PANEL_PASSWORD is required}" + [[ ${#PANEL_PASS} -ge 12 ]] || die "Generated panel password is too short." + printf '%s\\n%s\\n' "$PANEL_ADMIN" "$PANEL_PASS" > /etc/web-proxy-panel/install-credentials + chmod 0600 /etc/web-proxy-panel/install-credentials + unset PANEL_PASS + echo " Generated panel credentials received securely." +fi''' +if core.count(credentials_block) != 1: + raise SystemExit("Could not locate the panel credentials block") +core = core.replace(credentials_block, credentials_replacement) open(core_path, "w", encoding="utf-8").write(core) panel_src = open(panel_path, encoding="utf-8").read() @@ -286,8 +320,9 @@ PY chmod 0700 "$SOURCE_DIR"/*.sh say "Installing the proxy and its private management panel" -printf '\nThe panel installer will now ask only for its login and password.\n' -bash "$SOURCE_DIR/install-final.sh" /root/telegram-web-proxy-access.txt <