From a4feeca0bb28b2a7e3c76fff39d24393e0a8e199 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D1=82=D0=B0=D0=BB=D0=B8=D0=B9=20=D0=9D=D0=B8?= =?UTF-8?q?=D0=BA=D0=B8=D1=82=D0=B5=D0=BD=D0=BA=D0=BE?= Date: Fri, 5 Jun 2026 13:23:16 +0700 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=B8=D0=BD=D0=B4=D0=B8=D0=BA=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=20=D0=B4=D0=BE=D1=81=D1=82=D1=83=D0=BF=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B8=20VLESS=20=D1=81=D0=B5=D1=80=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=BE=D0=B2=20(TCP=20check)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit При выборе Y скрипт проверяет TCP-коннект к IP:port каждого сервера и показывает цветной статус: - зелёный ✓ доступен - красный ✗ недоступен Co-Authored-By: Claude Opus 4.8 --- ai-setup.sh | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/ai-setup.sh b/ai-setup.sh index f042af2..ee75c29 100755 --- a/ai-setup.sh +++ b/ai-setup.sh @@ -90,6 +90,8 @@ if [[ "$_vless_ans" =~ ^[Yy]$ ]]; then # Читаем список серверов _VL_URLS=() _VL_LABELS=() + _VL_IPS=() + _VL_PORTS=() _SERVERS_FILE="$SCRIPT_DIR/home-configs/vless/servers.conf" if [ ! -f "$_SERVERS_FILE" ]; then @@ -102,21 +104,38 @@ if [[ "$_vless_ans" =~ ^[Yy]$ ]]; then _vl_rest="${line#vless://}" _vl_rest="${_vl_rest#*@}" _vl_ip="${_vl_rest%%:*}" + _vl_tmp="${_vl_rest#*:}" + _vl_port="${_vl_tmp%%\?*}" _vl_name="${line##*#}" [[ "$_vl_name" == "$line" ]] && _vl_name="" _VL_URLS+=("$line") _VL_LABELS+=("$_vl_ip ($_vl_name)") + _VL_IPS+=("$_vl_ip") + _VL_PORTS+=("$_vl_port") done < "$_SERVERS_FILE" if [ "${#_VL_URLS[@]}" -eq 0 ]; then err "Нет VLESS серверов в $_SERVERS_FILE" fi + # Проверка доступности echo "" - info "Доступные VLESS серверы:" - for i in "${!_VL_LABELS[@]}"; do - echo -e " ${GREEN}$((i+1))${NC}) ${_VL_LABELS[$i]}" + info "Проверяю доступность серверов..." + _VL_STATUS=() + for i in "${!_VL_IPS[@]}"; do + _ip="${_VL_IPS[$i]}" + _port="${_VL_PORTS[$i]}" + _label="${_VL_LABELS[$i]}" + printf " %-45s" "$((i+1))) $_label" + if timeout 3 bash -c "echo >/dev/tcp/$_ip/$_port" 2>/dev/null; then + echo -e "${GREEN}✓ доступен${NC}" + _VL_STATUS+=("ok") + else + echo -e "${RED}✗ недоступен${NC}" + _VL_STATUS+=("fail") + fi done + echo "" read -r -p "Выбери сервер [1-${#_VL_URLS[@]}]: " _vl_choice _vl_choice="${_vl_choice:-1}"