fix: refresh stale awg profile snapshots

This commit is contained in:
andrey271192
2026-06-21 18:14:02 +03:00
parent cbc20a1b71
commit 8ba2a266e5
3 changed files with 18 additions and 19 deletions

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "amnezia-admin", "name": "amnezia-admin",
"version": "1.2.29", "version": "1.2.30",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "amnezia-admin", "name": "amnezia-admin",
"version": "1.2.29", "version": "1.2.30",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"express": "^4.21.2" "express": "^4.21.2"

View File

@@ -1,6 +1,6 @@
{ {
"name": "amnezia-admin", "name": "amnezia-admin",
"version": "1.2.29", "version": "1.2.30",
"private": false, "private": false,
"description": "amnezia_web-PRO — веб-панель AmneziaWG: несколько инстансов, WARP, каскад/Endpoint, экспорт .conf (Docker)", "description": "amnezia_web-PRO — веб-панель AmneziaWG: несколько инстансов, WARP, каскад/Endpoint, экспорт .conf (Docker)",
"license": "MIT", "license": "MIT",

View File

@@ -134,7 +134,9 @@ fi
# AWG_PROFILES: не терять при апдейте без переменной (пропадает список «Инстанс»). # AWG_PROFILES: не терять при апдейте без переменной (пропадает список «Инстанс»).
AWG_PROFILE_SNAPSHOT="/root/amnezia-admin.awg-profiles.json" AWG_PROFILE_SNAPSHOT="/root/amnezia-admin.awg-profiles.json"
AWG_PROFILES_EXPLICIT=0
if [[ -n "${AWG_PROFILES:-}" ]]; then if [[ -n "${AWG_PROFILES:-}" ]]; then
AWG_PROFILES_EXPLICIT=1
umask 077 umask 077
printf '%s\n' "${AWG_PROFILES}" >"${AWG_PROFILE_SNAPSHOT}" 2>/dev/null || true printf '%s\n' "${AWG_PROFILES}" >"${AWG_PROFILE_SNAPSHOT}" 2>/dev/null || true
elif [[ -n "${PREV_CONTAINER_ENV}" ]]; then elif [[ -n "${PREV_CONTAINER_ENV}" ]]; then
@@ -159,24 +161,21 @@ if [[ -z "${AWG_PROFILES:-}" ]] && [[ -f "${AWG_PROFILE_SNAPSHOT}" ]]; then
fi fi
fi fi
# Авто-определение единственного контейнера amnezia-awg* (например amnezia-awg2 — __awg_names="$(docker ps --format '{{.Names}}' 2>/dev/null | awk '/^amnezia-awg/ { print }' | sort || true)"
# дефолт Amnezia для AWG 2.0), если AWG_CONTAINER и AWG_PROFILES не заданы вручную. __awg_multi_count="$(printf '%s\n' "${__awg_names}" | sed '/^$/d' | wc -l | tr -d '[:space:]')"
if [[ -z "${AWG_CONTAINER:-}" ]] && [[ -z "${AWG_PROFILES:-}" ]]; then __profile_container_count=0
__awg_names="$(docker ps --format '{{.Names}}' 2>/dev/null | grep -E '^amnezia-awg' || true)" if [[ -n "${AWG_PROFILES:-}" ]]; then
__awg_names_count="$(printf '%s\n' "${__awg_names}" | grep -c . || true)" __profile_container_count="$(printf '%s' "${AWG_PROFILES}" | grep -o '"container"' | wc -l | tr -d '[:space:]' || true)"
if [[ "${__awg_names_count}" == "1" ]]; then
AWG_CONTAINER="$(printf '%s\n' "${__awg_names}" | head -n1)"
echo "→ AWG_CONTAINER авто-определён: ${AWG_CONTAINER}"
fi
fi fi
if [[ -z "${AWG_PROFILES:-}" ]]; then if [[ "${__awg_multi_count:-0}" =~ ^[0-9]+$ ]] && [[ "${__awg_multi_count}" -eq 1 ]] && [[ -z "${AWG_CONTAINER:-}" ]] && [[ -z "${AWG_PROFILES:-}" ]]; then
__awg_names="$(docker ps --format '{{.Names}}' 2>/dev/null | awk '/^amnezia-awg/ { print }' | sort || true)" AWG_CONTAINER="$(printf '%s\n' "${__awg_names}" | sed '/^$/d' | head -n1)"
__awg_multi_count="$(printf '%s\n' "${__awg_names}" | sed '/^$/d' | wc -l | tr -d '[:space:]')" echo "→ AWG_CONTAINER авто-выбран: ${AWG_CONTAINER}"
if [[ "${__awg_multi_count:-0}" =~ ^[0-9]+$ ]] && [[ "${__awg_multi_count}" -eq 1 ]] && [[ -z "${AWG_CONTAINER:-}" ]]; then elif [[ "${__awg_multi_count:-0}" =~ ^[0-9]+$ ]] && [[ "${__awg_multi_count}" -gt 1 ]]; then
AWG_CONTAINER="$(printf '%s\n' "${__awg_names}" | sed '/^$/d' | head -n1)" if [[ -z "${AWG_PROFILES:-}" || ( "${AWG_PROFILES_EXPLICIT}" == "0" && "${__profile_container_count:-0}" -lt 2 ) ]]; then
echo "→ AWG_CONTAINER авто-выбран: ${AWG_CONTAINER}" if [[ -n "${AWG_PROFILES:-}" && "${__profile_container_count:-0}" -lt 2 ]]; then
elif [[ "${__awg_multi_count:-0}" =~ ^[0-9]+$ ]] && [[ "${__awg_multi_count}" -gt 1 ]]; then echo "→ Найден старый одиночный AWG_PROFILES, но контейнеров amnezia-awg*: ${__awg_multi_count}. Пересобираю профили автоматически."
fi
__awg_profiles="[" __awg_profiles="["
__sep="" __sep=""
while IFS= read -r __awg_name; do while IFS= read -r __awg_name; do