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}"