From 45cafe01654ec598200000f4a82b3e6b26ac1ff2 Mon Sep 17 00:00:00 2001 From: Ruslan Date: Tue, 14 Apr 2026 10:16:44 +0300 Subject: [PATCH] UX: accept direct password input at GUI replace prompt --- README.md | 2 +- server/install_server.sh | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 33d2cc3..af9fb15 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,7 @@ tmp="$(mktemp -d)" && curl -fL "https://git.ruslan.xyz/ruslan/Wireguard_server/a - порт WireGuard - параметры GUI (логин/пароль) -Если пароль GUI не передан аргументом, скрипт генерирует случайный пароль из 8 символов, предлагает заменить его и, если не заменили, показывает этот пароль в итоговой сводке. +Если пароль GUI не передан аргументом, скрипт генерирует случайный пароль из 8 символов. В интерактивном режиме можно ответить `y` и ввести новый пароль отдельным шагом или сразу ввести пароль в том же вопросе. ### Non-interactive пример diff --git a/server/install_server.sh b/server/install_server.sh index c530944..c713ce0 100755 --- a/server/install_server.sh +++ b/server/install_server.sh @@ -177,7 +177,9 @@ collect_inputs() { log_warn "Пароль GUI не задан. Сгенерирован пароль (8 символов): ${GUI_PASSWORD}" if (( ! NON_INTERACTIVE )); then - if confirm "Хотите заменить сгенерированный пароль GUI?"; then + local replace_or_password="" + read -r -p "Хотите заменить сгенерированный пароль GUI? [y/N] (или введите пароль сразу): " replace_or_password + if [[ "$replace_or_password" =~ ^([yY][eE][sS]|[yY])$ ]]; then local custom_gui_password="" ask_secret "Введите новый пароль GUI (${GUI_USER})" custom_gui_password if [[ -n "$custom_gui_password" ]]; then @@ -186,6 +188,9 @@ collect_inputs() { else log_warn "Пустой пароль не принят. Остается сгенерированный пароль." fi + elif [[ -n "$replace_or_password" && ! "$replace_or_password" =~ ^([nN][oO]?|[nN])$ ]]; then + GUI_PASSWORD="$replace_or_password" + GUI_PASSWORD_GENERATED=0 fi fi fi