From b8786c79e913e34fd05a6539b480d9b1269258e2 Mon Sep 17 00:00:00 2001 From: Petro1990 Date: Fri, 13 Mar 2026 21:46:41 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B0=D0=B2=D1=82=D0=BE=D0=BC=D0=B0=D1=82=D0=B8?= =?UTF-8?q?=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20Basic=20Auth=20=D1=87=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B7=20=D0=B3=D0=BB=D0=BE=D0=B1=D0=B0=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D1=8B=D0=B5=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9?= =?UTF-8?q?=D0=BA=D0=B8,=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8F=201.4.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rproxy | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 50 insertions(+), 7 deletions(-) diff --git a/rproxy b/rproxy index ab424b1..cd28ad2 100644 --- a/rproxy +++ b/rproxy @@ -3,7 +3,7 @@ # Публикация локальных сервисов через SSH-туннели + nginx на VPS # http://5.104.75.50:3000/Petro1990/rProxy -VERSION="1.4.1" +VERSION="1.4.2" CONF_DIR="/opt/etc/rproxy" CONF_FILE="$CONF_DIR/rproxy.conf" SERVICES_DIR="$CONF_DIR/services" @@ -523,12 +523,24 @@ do_add_interactive() { case "$REPLY" in д|Д|y|Y|да|yes) use_ndm_auth="yes" - prompt "Введите имя пользователя [admin]: " - local user="${REPLY:-admin}" - prompt "Введите пароль для '$user' (можно от роутера): " - local pass="$REPLY" - [ -z "$pass" ] && { warn "Пароль не может быть пустым"; pause; return; } - htpasswd_line=$(gen_htpasswd "$user" "$pass") + local def_user="${DEFAULT_AUTH_USER:-admin}" + + if [ -n "$DEFAULT_AUTH_PASS" ]; then + printf " ${DIM}Будут использованы сохраненные данные: $def_user / *****${NC}\n" + prompt "Использовать их? (д/н) [д]: " + if [ "${REPLY:-д}" = "д" ] || [ "${REPLY:-д}" = "y" ]; then + htpasswd_line=$(gen_htpasswd "$def_user" "$DEFAULT_AUTH_PASS") + fi + fi + + if [ -z "$htpasswd_line" ]; then + prompt "Введите имя пользователя [$def_user]: " + local user="${REPLY:-$def_user}" + prompt "Введите пароль для '$user': " + local pass="$REPLY" + [ -z "$pass" ] && { warn "Пароль не может быть пустым"; pause; return; } + htpasswd_line=$(gen_htpasswd "$user" "$pass") + fi ;; esac @@ -1200,6 +1212,7 @@ do_setup() { draw_separator printf " ${BOLD}901)${NC} ➕ Добавить новый VPS\n" [ "$idx" -gt 0 ] && printf " ${BOLD}902)${NC} ❌ Удалить VPS\n" + printf " ${BOLD}903)${NC} 🔑 Пароль публикации по умолчанию\n" printf " ${BOLD}0)${NC} Назад\n" prompt "Выберите действие: " @@ -1207,6 +1220,7 @@ do_setup() { 0) return ;; 901) do_add_vps ;; 902) [ "$idx" -gt 0 ] && do_delete_vps_interactive "$vps_list" ;; + 903) do_change_auth_defaults ;; [1-9]*) local sel_vps=$(echo "$vps_list" | cut -d' ' -f"$REPLY") [ -n "$sel_vps" ] && do_add_vps "$sel_vps" @@ -1229,6 +1243,35 @@ do_delete_vps_interactive() { pause } +do_change_auth_defaults() { + draw_box "Настройки публикации (Basic Auth)" + printf "\n" + printf " Эти данные будут предлагаться при защите новых сервисов.\n" + + prompt "Имя пользователя [${DEFAULT_AUTH_USER:-admin}]: " + local user="${REPLY:-${DEFAULT_AUTH_USER:-admin}}" + + prompt "Пароль (оставьте пустым чтобы не менять): " + local pass="$REPLY" + + if [ -z "$pass" ] && [ -n "$DEFAULT_AUTH_PASS" ]; then + pass="$DEFAULT_AUTH_PASS" + fi + + [ -z "$pass" ] && { warn "Пароль не может быть пустым"; pause; return; } + + # Сохраняем в конфиг + sed -i "/DEFAULT_AUTH_USER=/d" "$CONF_FILE" + sed -i "/DEFAULT_AUTH_PASS=/d" "$CONF_FILE" + echo "DEFAULT_AUTH_USER=\"$user\"" >> "$CONF_FILE" + echo "DEFAULT_AUTH_PASS=\"$pass\"" >> "$CONF_FILE" + + msg "Данные успешно сохранены!" + DEFAULT_AUTH_USER="$user" + DEFAULT_AUTH_PASS="$pass" + pause +} + do_add_vps() { local vps_id="${1:-}" local is_new=0