From 8ba2a266e502c792476326c446733ebc93c12045 Mon Sep 17 00:00:00 2001 From: andrey271192 <76248502+andrey271192@users.noreply.github.com> Date: Sun, 21 Jun 2026 18:14:02 +0300 Subject: [PATCH] fix: refresh stale awg profile snapshots --- package-lock.json | 4 ++-- package.json | 2 +- scripts/install.sh | 31 +++++++++++++++---------------- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/package-lock.json b/package-lock.json index bf8bcac..b02d931 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "amnezia-admin", - "version": "1.2.29", + "version": "1.2.30", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "amnezia-admin", - "version": "1.2.29", + "version": "1.2.30", "license": "MIT", "dependencies": { "express": "^4.21.2" diff --git a/package.json b/package.json index 205a54d..c1eafec 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "amnezia-admin", - "version": "1.2.29", + "version": "1.2.30", "private": false, "description": "amnezia_web-PRO — веб-панель AmneziaWG: несколько инстансов, WARP, каскад/Endpoint, экспорт .conf (Docker)", "license": "MIT", diff --git a/scripts/install.sh b/scripts/install.sh index f0c9504..c9ca711 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -134,7 +134,9 @@ fi # AWG_PROFILES: не терять при апдейте без переменной (пропадает список «Инстанс»). AWG_PROFILE_SNAPSHOT="/root/amnezia-admin.awg-profiles.json" +AWG_PROFILES_EXPLICIT=0 if [[ -n "${AWG_PROFILES:-}" ]]; then + AWG_PROFILES_EXPLICIT=1 umask 077 printf '%s\n' "${AWG_PROFILES}" >"${AWG_PROFILE_SNAPSHOT}" 2>/dev/null || true elif [[ -n "${PREV_CONTAINER_ENV}" ]]; then @@ -159,24 +161,21 @@ if [[ -z "${AWG_PROFILES:-}" ]] && [[ -f "${AWG_PROFILE_SNAPSHOT}" ]]; then fi fi -# Авто-определение единственного контейнера amnezia-awg* (например amnezia-awg2 — -# дефолт Amnezia для AWG 2.0), если AWG_CONTAINER и AWG_PROFILES не заданы вручную. -if [[ -z "${AWG_CONTAINER:-}" ]] && [[ -z "${AWG_PROFILES:-}" ]]; then - __awg_names="$(docker ps --format '{{.Names}}' 2>/dev/null | grep -E '^amnezia-awg' || true)" - __awg_names_count="$(printf '%s\n' "${__awg_names}" | grep -c . || true)" - if [[ "${__awg_names_count}" == "1" ]]; then - AWG_CONTAINER="$(printf '%s\n' "${__awg_names}" | head -n1)" - echo "→ AWG_CONTAINER авто-определён: ${AWG_CONTAINER}" - fi +__awg_names="$(docker ps --format '{{.Names}}' 2>/dev/null | awk '/^amnezia-awg/ { print }' | sort || true)" +__awg_multi_count="$(printf '%s\n' "${__awg_names}" | sed '/^$/d' | wc -l | tr -d '[:space:]')" +__profile_container_count=0 +if [[ -n "${AWG_PROFILES:-}" ]]; then + __profile_container_count="$(printf '%s' "${AWG_PROFILES}" | grep -o '"container"' | wc -l | tr -d '[:space:]' || true)" fi -if [[ -z "${AWG_PROFILES:-}" ]]; then - __awg_names="$(docker ps --format '{{.Names}}' 2>/dev/null | awk '/^amnezia-awg/ { print }' | sort || true)" - __awg_multi_count="$(printf '%s\n' "${__awg_names}" | sed '/^$/d' | wc -l | tr -d '[:space:]')" - if [[ "${__awg_multi_count:-0}" =~ ^[0-9]+$ ]] && [[ "${__awg_multi_count}" -eq 1 ]] && [[ -z "${AWG_CONTAINER:-}" ]]; then - AWG_CONTAINER="$(printf '%s\n' "${__awg_names}" | sed '/^$/d' | head -n1)" - echo "→ AWG_CONTAINER авто-выбран: ${AWG_CONTAINER}" - elif [[ "${__awg_multi_count:-0}" =~ ^[0-9]+$ ]] && [[ "${__awg_multi_count}" -gt 1 ]]; then +if [[ "${__awg_multi_count:-0}" =~ ^[0-9]+$ ]] && [[ "${__awg_multi_count}" -eq 1 ]] && [[ -z "${AWG_CONTAINER:-}" ]] && [[ -z "${AWG_PROFILES:-}" ]]; then + AWG_CONTAINER="$(printf '%s\n' "${__awg_names}" | sed '/^$/d' | head -n1)" + echo "→ AWG_CONTAINER авто-выбран: ${AWG_CONTAINER}" +elif [[ "${__awg_multi_count:-0}" =~ ^[0-9]+$ ]] && [[ "${__awg_multi_count}" -gt 1 ]]; then + if [[ -z "${AWG_PROFILES:-}" || ( "${AWG_PROFILES_EXPLICIT}" == "0" && "${__profile_container_count:-0}" -lt 2 ) ]]; then + if [[ -n "${AWG_PROFILES:-}" && "${__profile_container_count:-0}" -lt 2 ]]; then + echo "→ Найден старый одиночный AWG_PROFILES, но контейнеров amnezia-awg*: ${__awg_multi_count}. Пересобираю профили автоматически." + fi __awg_profiles="[" __sep="" while IFS= read -r __awg_name; do