feat(server): добавить --gui-reset-db для синхронизации дефолтов GUI

This commit is contained in:
Ruslan
2026-04-14 00:39:26 +03:00
parent 2cd09198e1
commit 99136b5403
2 changed files with 21 additions and 0 deletions

View File

@@ -24,6 +24,7 @@ GUI_USER="admin"
GUI_PASSWORD=""
GUI_PASSWORD_GENERATED=0
GUI_SESSION_SECRET=""
GUI_RESET_DB="no"
usage() {
cat <<'USAGE'
@@ -47,6 +48,7 @@ usage() {
--gui-port <port> Порт GUI (по умолчанию: 5000)
--gui-user <user> Логин GUI (по умолчанию: admin)
--gui-password <pass> Пароль GUI (если не указан, будет запрос)
--gui-reset-db <yes|no> Сбросить БД GUI, чтобы применить новые дефолты (по умолчанию: no)
-h, --help Показать помощь
USAGE
@@ -88,6 +90,8 @@ parse_args() {
GUI_USER="$2"; shift 2 ;;
--gui-password)
GUI_PASSWORD="$2"; shift 2 ;;
--gui-reset-db)
GUI_RESET_DB="$2"; shift 2 ;;
-h|--help)
usage; exit 0 ;;
*)
@@ -155,6 +159,7 @@ collect_inputs() {
fi
fi
GUI_SESSION_SECRET="$(random_alnum 32)"
[[ "$GUI_RESET_DB" == "yes" || "$GUI_RESET_DB" == "no" ]] || die "--gui-reset-db должен быть yes или no"
fi
validate_inputs
@@ -279,6 +284,14 @@ setup_gui() {
mkdir -p /opt/wireguard-ui/{db,data}
safe_chmod_700 /opt/wireguard-ui
if [[ "$GUI_RESET_DB" == "yes" ]]; then
rm -rf /opt/wireguard-ui/db/*
log_warn "БД GUI очищена. Дефолтные настройки GUI будут инициализированы заново."
elif [[ -n "$(find /opt/wireguard-ui/db -mindepth 1 -maxdepth 1 2>/dev/null)" ]]; then
log_warn "Обнаружена существующая БД GUI. Дефолты (подсеть/endpoint/пароль) могли сохраниться старыми."
log_warn "Если нужен чистый старт GUI, перезапустите с --gui-reset-db yes"
fi
cat > /opt/wireguard-ui/docker-compose.yml <<EOF_COMPOSE
services:
wireguard-ui:
@@ -373,6 +386,7 @@ GUI адрес: http://${GUI_HOST}:${GUI_PORT}
GUI логин: ${GUI_USER}
GUI статус: ${gui_status}
$(if [[ "$GUI_ENABLE" == "yes" && "$GUI_PASSWORD_GENERATED" -eq 1 ]]; then echo "GUI пароль: ${GUI_PASSWORD} (сгенерирован, рекомендуется заменить)"; fi)
GUI reset db: ${GUI_RESET_DB}
Helper для peer: /usr/local/sbin/wg-peerctl
Лог установки: ${LOG_FILE}