From 2805ade77387d0f90b783524f577b015f430a108 Mon Sep 17 00:00:00 2001 From: vitaly Date: Sun, 7 Jun 2026 20:20:25 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20issue=20#10=20=E2=80=94=20whiptail=20TU?= =?UTF-8?q?I=20=D0=BC=D0=B5=D0=BD=D1=8E=20=D1=81=20fallback=20=D0=BD=D0=B0?= =?UTF-8?q?=20plain-text?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit setup.sh: если whiptail доступен — показывает интерактивное меню со стрелками (стандартный пакет newt, обычно уже установлен). Если whiptail не найден — прежнее plain-text меню без изменений. case-блок единый для обоих путей. Co-Authored-By: Claude Sonnet 4.6 --- setup.sh | 85 +++++++++++++++++++++++++++++++++----------------------- 1 file changed, 50 insertions(+), 35 deletions(-) diff --git a/setup.sh b/setup.sh index ce5f323..3c63051 100755 --- a/setup.sh +++ b/setup.sh @@ -12,41 +12,56 @@ mkdir -p "$HOME/.config/ai-setup" LOG="$HOME/.config/ai-setup/setup.log" _log() { printf '%s [%s] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$1" "$2" >> "$LOG"; } -echo "" -echo -e "${BLD}=== AI Setup ===${CLR}" -echo "" -echo -e "${YEL}Шаги для новой машины (выполнить по порядку):${CLR}" -echo "" -echo -e " ${BLD}1) AI-инструменты${CLR}" -echo -e " ${GRY}Устанавливает ai-claude, ai-gpt, ai-deepseek, ai-gemini и др.${CLR}" -echo -e " ${GRY}Запрашивает API-ключи. Запускать один раз.${CLR}" -echo "" -echo -e " ${BLD}2) Сеть: ru-bypass + kill switch${CLR}" -echo -e " ${GRY}.ru сайты (ozon, госуслуги) — напрямую с российским IP.${CLR}" -echo -e " ${GRY}*.loc офисные адреса — тоже напрямую.${CLR}" -echo -e " ${GRY}Всё остальное — только через Amnezia (kill switch).${CLR}" -echo -e " ${GRY}Запускать один раз на каждой машине.${CLR}" -echo "" -echo -e "${YEL}Дополнительно (по необходимости):${CLR}" -echo "" -echo -e " ${BLD}3) Отключить kill switch${CLR}" -echo -e " ${GRY}Временно — когда нужен прямой доступ без VPN (российский IP).${CLR}" -echo "" -echo -e " ${BLD}4) Включить kill switch${CLR}" -echo -e " ${GRY}Вернуть защиту обратно после отключения.${CLR}" -echo "" -echo -e " ${BLD}5) Статус${CLR}" -echo -e " ${GRY}Amnezia, UFW, сервисы, установленные AI инструменты и ключи.${CLR}" -echo "" -echo -e " ${BLD}6) Проверить сеть${CLR}" -echo -e " ${GRY}Тесты маршрутизации: .ru напрямую, остальное через Amnezia.${CLR}" -echo "" -echo -e " ${BLD}7) Обновить${CLR}" -echo -e " ${GRY}git pull + перегенерация всех скриптов в ~/.local/bin.${CLR}" -echo "" -echo -n "Выбери [1-7] или Enter для выхода: " -read -r choice -echo "" +if command -v whiptail >/dev/null 2>&1; then + choice=$(whiptail --title "AI Setup" \ + --menu "Выбери действие (стрелки + Enter):" 22 70 9 \ + "1" "AI-инструменты (установить лаунчеры + ключи)" \ + "2" "Сеть: ru-bypass + kill switch" \ + "" "─── Дополнительно ───────────────────────────" \ + "3" "Отключить kill switch (прямой доступ без VPN)" \ + "4" "Включить kill switch (восстановить защиту)" \ + "5" "Статус (Amnezia, UFW, AI инструменты, ключи)" \ + "6" "Проверить сеть (маршрутизация, geo)" \ + "7" "Обновить (git pull + перегенерация скриптов)" \ + 3>&1 1>&2 2>&3) || exit 0 + echo "" +else + echo "" + echo -e "${BLD}=== AI Setup ===${CLR}" + echo "" + echo -e "${YEL}Шаги для новой машины (выполнить по порядку):${CLR}" + echo "" + echo -e " ${BLD}1) AI-инструменты${CLR}" + echo -e " ${GRY}Устанавливает ai-claude, ai-gpt, ai-deepseek, ai-gemini и др.${CLR}" + echo -e " ${GRY}Запрашивает API-ключи. Запускать один раз.${CLR}" + echo "" + echo -e " ${BLD}2) Сеть: ru-bypass + kill switch${CLR}" + echo -e " ${GRY}.ru сайты (ozon, госуслуги) — напрямую с российским IP.${CLR}" + echo -e " ${GRY}*.loc офисные адреса — тоже напрямую.${CLR}" + echo -e " ${GRY}Всё остальное — только через Amnezia (kill switch).${CLR}" + echo -e " ${GRY}Запускать один раз на каждой машине.${CLR}" + echo "" + echo -e "${YEL}Дополнительно (по необходимости):${CLR}" + echo "" + echo -e " ${BLD}3) Отключить kill switch${CLR}" + echo -e " ${GRY}Временно — когда нужен прямой доступ без VPN (российский IP).${CLR}" + echo "" + echo -e " ${BLD}4) Включить kill switch${CLR}" + echo -e " ${GRY}Вернуть защиту обратно после отключения.${CLR}" + echo "" + echo -e " ${BLD}5) Статус${CLR}" + echo -e " ${GRY}Amnezia, UFW, сервисы, установленные AI инструменты и ключи.${CLR}" + echo "" + echo -e " ${BLD}6) Проверить сеть${CLR}" + echo -e " ${GRY}Тесты маршрутизации: .ru напрямую, остальное через Amnezia.${CLR}" + echo "" + echo -e " ${BLD}7) Обновить${CLR}" + echo -e " ${GRY}git pull + перегенерация всех скриптов в ~/.local/bin.${CLR}" + echo "" + echo -n "Выбери [1-7] или Enter для выхода: " + read -r choice + echo "" +fi [ -n "$choice" ] && _log "setup" "Пункт $choice на $(hostname)"