From 40f346a311c88c317128300652c59f685c2a4e79 Mon Sep 17 00:00:00 2001 From: Petro1990 Date: Fri, 13 Mar 2026 21:54:37 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=B7=D0=B0=D1=86=D0=B8=D0=BA=D0=BB=D0=B8?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B8=20=D0=B7=D0=B0=D1=82?= =?UTF-8?q?=D0=B8=D1=80=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=B0=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=B5=D0=BA=20=D0=B2=20migrate=5Fconfig,=20=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D1=81=D0=B8=D1=8F=201.4.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rproxy | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/rproxy b/rproxy index 0f46a30..c4291ec 100644 --- a/rproxy +++ b/rproxy @@ -3,7 +3,7 @@ # Публикация локальных сервисов через SSH-туннели + nginx на VPS # http://5.104.75.50:3000/Petro1990/rProxy -VERSION="1.4.3" +VERSION="1.4.4" CONF_DIR="/opt/etc/rproxy" CONF_FILE="$CONF_DIR/rproxy.conf" SERVICES_DIR="$CONF_DIR/services" @@ -61,7 +61,7 @@ check_conf() { # Строгая проверка: ищем хотя бы один файл в vps/, в котором заполнена переменная VPS_HOST for f in "$VPS_DIR"/*.conf; do [ -f "$f" ] || continue - if grep -q "VPS_HOST=\"[0-9]" "$f"; then + if grep -qE "VPS_HOST=['\"]?[0-9]" "$f"; then return 0 fi done @@ -106,7 +106,7 @@ migrate_config() { if [ -f "$CONF_FILE" ] && { [ ! -f "$VPS_DIR/default.conf" ] || [ "$broken" -eq 1 ]; }; then # Если rproxy.conf ещё содержит данные серверов (не пустой) - if grep -q "VPS_HOST=\"[0-9]" "$CONF_FILE"; then + if grep -q "VPS_HOST=" "$CONF_FILE"; then msg "Восстановление конфигурации VPS..." . "$CONF_FILE" cat > "$VPS_DIR/default.conf" < "$CONF_FILE.tmp" < "$tmp_conf" + [ -n "$DEFAULT_AUTH_USER" ] && echo "DEFAULT_AUTH_USER=\"$DEFAULT_AUTH_USER\"" >> "$tmp_conf" + [ -n "$DEFAULT_AUTH_PASS" ] && echo "DEFAULT_AUTH_PASS=\"$DEFAULT_AUTH_PASS\"" >> "$tmp_conf" + mv "$tmp_conf" "$CONF_FILE" fi [ -f "$VPS_DIR/default.conf" ] && chmod 600 "$VPS_DIR/default.conf" fi @@ -1264,13 +1265,16 @@ do_change_auth_defaults() { [ -z "$pass" ] && { warn "Пароль не может быть пустым"; pause; return; } - # Безопасное сохранение (одинарные кавычки предотвращают расширение $ внутри пароля) + # Безопасное сохранение (заменяем двойные кавычки и $ для предотвращения инъекций) + local s_user=$(echo "$user" | sed 's/"/\\"/g; s/\$/\\\$/g') + local s_pass=$(echo "$pass" | sed 's/"/\\"/g; s/\$/\\\$/g') + sed -i "/DEFAULT_AUTH_USER=/d" "$CONF_FILE" sed -i "/DEFAULT_AUTH_PASS=/d" "$CONF_FILE" - printf "DEFAULT_AUTH_USER='%s'\n" "$user" >> "$CONF_FILE" - printf "DEFAULT_AUTH_PASS='%s'\n" "$pass" >> "$CONF_FILE" + echo "DEFAULT_AUTH_USER=\"$s_user\"" >> "$CONF_FILE" + echo "DEFAULT_AUTH_PASS=\"$s_pass\"" >> "$CONF_FILE" - msg "Данные успешно сохранены в $CONF_FILE" + msg "Данные успешно сохранены" DEFAULT_AUTH_USER="$user" DEFAULT_AUTH_PASS="$pass" pause