From df256ede0e30d66764bb5697461693fb4ebd2950 Mon Sep 17 00:00:00 2001 From: Petro1990 Date: Fri, 13 Mar 2026 16:04:30 +0300 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81:=20=D0=B8=D1=81=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=BE=20=D1=87=D1=82=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20VPS=5FHOST=20=D0=BF=D1=80=D0=B8=20=D0=B0?= =?UTF-8?q?=D0=B2=D1=82=D0=BE=D0=BE=D0=BF=D1=80=D0=B5=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B8=20(v1.0.8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rproxy | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/rproxy b/rproxy index 26e1209..5d015fa 100644 --- a/rproxy +++ b/rproxy @@ -3,7 +3,7 @@ # Публикация локальных сервисов через SSH-туннели + nginx на VPS # http://5.104.75.50:3000/Petro1990/rProxy -VERSION="1.0.6" +VERSION="1.0.8" CONF_DIR="/opt/etc/rproxy" CONF_FILE="$CONF_DIR/rproxy.conf" SERVICES_DIR="$CONF_DIR/services" @@ -296,29 +296,24 @@ show_status() { # ПОМОЩНИКИ VPS # ══════════════════════════════════════════════════════════════════════ + find_vps_by_domain() { local dom="$1" - msg "Отладка: Резолвлю $dom..." >&2 # Пытаемся получить IP через ping (BusyBox стиль) local ip=$(ping -c 1 "$dom" 2>/dev/null | grep -o "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" | head -n 1) # Если не вышло, пробуем nslookup (парсим более надежно через grep -o) [ -z "$ip" ] && ip=$(nslookup "$dom" 2>/dev/null | grep "Address" | tail -n 1 | grep -o "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" | head -n 1) - msg "Отладка: Получен IP: '$ip'" >&2 [ -z "$ip" ] && return 1 for f in "$VPS_DIR"/*.conf; do [ -f "$f" ] || continue - ( - VPS_HOST="" - . "$f" - msg "Отладка: Сравниваю с VPS '$(basename "$f" .conf)' (HOST: $VPS_HOST)" >&2 - if [ "$VPS_HOST" = "$ip" ]; then - basename "$f" .conf - exit 0 - fi - exit 1 - ) && { basename "$f" .conf; return 0; } + # Используем grep для извлечения IP из конфига (быстрее и надежнее источника) + local v_host=$(grep "VPS_HOST=" "$f" | cut -d'"' -f2) + if [ "$v_host" = "$ip" ]; then + basename "$f" .conf + return 0 + fi done return 1 }