mirror of
https://github.com/andrey271192/amnezia_web-PRO.git
synced 2026-09-20 14:42:00 +00:00
feat: direct client creation + auto-detect AWG container
Add "Новый клиент" (direct) flow alongside cascade: - server.js: POST /api/clients/create — Endpoint = this server's public IP:ListenPort (CLIENT_CONFIG_ENDPOINT or request host), reuses the same key/peer/conf pipeline as create-cascade. - public/index.html: "Новый клиент" panel with #direct-form (name + optional tunnel IP). - public/app.js: downloadDirectConf() handler + form binding. install.sh hardening so fresh installs work out of the box: - Auto-detect a single amnezia-awg* container (e.g. amnezia-awg2, Amnezia AWG 2.0 default) -> AWG_CONTAINER, instead of the fixed "amnezia-awg" default that mismatched and blocked client ops. - Auto-default CLIENT_CONFIG_ENDPOINT to the host primary IP so direct .conf exports get a correct Endpoint without manual env. Fixes "cannot create users" on servers whose WG container is named amnezia-awg2.
This commit is contained in:
@@ -145,6 +145,17 @@ 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
|
||||
fi
|
||||
|
||||
if [[ -z "${AWG_PROFILES:-}" ]]; then
|
||||
__awg_multi_count="$(
|
||||
docker ps --format '{{.Names}}' 2>/dev/null | awk '/^amnezia-awg/ { c++ } END { print c + 0 }' | tr -d '[:space:]'
|
||||
@@ -213,6 +224,14 @@ for __warp_var in WARP_DIR WARP_CONF_PATH WARP_CLIENTS_LIST AMNEZIA_START_SCRIPT
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ -z "${CLIENT_CONFIG_ENDPOINT:-}" ]]; then
|
||||
__pub_ip="$(hostname -I 2>/dev/null | awk '{print $1}' || true)"
|
||||
if [[ -n "${__pub_ip}" ]]; then
|
||||
CLIENT_CONFIG_ENDPOINT="${__pub_ip}"
|
||||
echo "→ CLIENT_CONFIG_ENDPOINT авто: ${CLIENT_CONFIG_ENDPOINT} (можно переопределить переменной окружения)"
|
||||
fi
|
||||
fi
|
||||
|
||||
for __export_var in CLIENT_CONFIG_ENDPOINT CLIENT_EXPORT_DNS1 CLIENT_EXPORT_DNS2 EXPORT_CONFIG_SECRET; do
|
||||
if [[ -n "${!__export_var:-}" ]]; then
|
||||
RUN_ENV+=( -e "${__export_var}=${!__export_var}" )
|
||||
|
||||
Reference in New Issue
Block a user