feat: issue #10 — whiptail TUI меню с fallback на plain-text
setup.sh: если whiptail доступен — показывает интерактивное меню со стрелками (стандартный пакет newt, обычно уже установлен). Если whiptail не найден — прежнее plain-text меню без изменений. case-блок единый для обоих путей. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
85
setup.sh
85
setup.sh
@@ -12,41 +12,56 @@ mkdir -p "$HOME/.config/ai-setup"
|
|||||||
LOG="$HOME/.config/ai-setup/setup.log"
|
LOG="$HOME/.config/ai-setup/setup.log"
|
||||||
_log() { printf '%s [%s] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$1" "$2" >> "$LOG"; }
|
_log() { printf '%s [%s] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$1" "$2" >> "$LOG"; }
|
||||||
|
|
||||||
echo ""
|
if command -v whiptail >/dev/null 2>&1; then
|
||||||
echo -e "${BLD}=== AI Setup ===${CLR}"
|
choice=$(whiptail --title "AI Setup" \
|
||||||
echo ""
|
--menu "Выбери действие (стрелки + Enter):" 22 70 9 \
|
||||||
echo -e "${YEL}Шаги для новой машины (выполнить по порядку):${CLR}"
|
"1" "AI-инструменты (установить лаунчеры + ключи)" \
|
||||||
echo ""
|
"2" "Сеть: ru-bypass + kill switch" \
|
||||||
echo -e " ${BLD}1) AI-инструменты${CLR}"
|
"" "─── Дополнительно ───────────────────────────" \
|
||||||
echo -e " ${GRY}Устанавливает ai-claude, ai-gpt, ai-deepseek, ai-gemini и др.${CLR}"
|
"3" "Отключить kill switch (прямой доступ без VPN)" \
|
||||||
echo -e " ${GRY}Запрашивает API-ключи. Запускать один раз.${CLR}"
|
"4" "Включить kill switch (восстановить защиту)" \
|
||||||
echo ""
|
"5" "Статус (Amnezia, UFW, AI инструменты, ключи)" \
|
||||||
echo -e " ${BLD}2) Сеть: ru-bypass + kill switch${CLR}"
|
"6" "Проверить сеть (маршрутизация, geo)" \
|
||||||
echo -e " ${GRY}.ru сайты (ozon, госуслуги) — напрямую с российским IP.${CLR}"
|
"7" "Обновить (git pull + перегенерация скриптов)" \
|
||||||
echo -e " ${GRY}*.loc офисные адреса — тоже напрямую.${CLR}"
|
3>&1 1>&2 2>&3) || exit 0
|
||||||
echo -e " ${GRY}Всё остальное — только через Amnezia (kill switch).${CLR}"
|
echo ""
|
||||||
echo -e " ${GRY}Запускать один раз на каждой машине.${CLR}"
|
else
|
||||||
echo ""
|
echo ""
|
||||||
echo -e "${YEL}Дополнительно (по необходимости):${CLR}"
|
echo -e "${BLD}=== AI Setup ===${CLR}"
|
||||||
echo ""
|
echo ""
|
||||||
echo -e " ${BLD}3) Отключить kill switch${CLR}"
|
echo -e "${YEL}Шаги для новой машины (выполнить по порядку):${CLR}"
|
||||||
echo -e " ${GRY}Временно — когда нужен прямой доступ без VPN (российский IP).${CLR}"
|
echo ""
|
||||||
echo ""
|
echo -e " ${BLD}1) AI-инструменты${CLR}"
|
||||||
echo -e " ${BLD}4) Включить kill switch${CLR}"
|
echo -e " ${GRY}Устанавливает ai-claude, ai-gpt, ai-deepseek, ai-gemini и др.${CLR}"
|
||||||
echo -e " ${GRY}Вернуть защиту обратно после отключения.${CLR}"
|
echo -e " ${GRY}Запрашивает API-ключи. Запускать один раз.${CLR}"
|
||||||
echo ""
|
echo ""
|
||||||
echo -e " ${BLD}5) Статус${CLR}"
|
echo -e " ${BLD}2) Сеть: ru-bypass + kill switch${CLR}"
|
||||||
echo -e " ${GRY}Amnezia, UFW, сервисы, установленные AI инструменты и ключи.${CLR}"
|
echo -e " ${GRY}.ru сайты (ozon, госуслуги) — напрямую с российским IP.${CLR}"
|
||||||
echo ""
|
echo -e " ${GRY}*.loc офисные адреса — тоже напрямую.${CLR}"
|
||||||
echo -e " ${BLD}6) Проверить сеть${CLR}"
|
echo -e " ${GRY}Всё остальное — только через Amnezia (kill switch).${CLR}"
|
||||||
echo -e " ${GRY}Тесты маршрутизации: .ru напрямую, остальное через Amnezia.${CLR}"
|
echo -e " ${GRY}Запускать один раз на каждой машине.${CLR}"
|
||||||
echo ""
|
echo ""
|
||||||
echo -e " ${BLD}7) Обновить${CLR}"
|
echo -e "${YEL}Дополнительно (по необходимости):${CLR}"
|
||||||
echo -e " ${GRY}git pull + перегенерация всех скриптов в ~/.local/bin.${CLR}"
|
echo ""
|
||||||
echo ""
|
echo -e " ${BLD}3) Отключить kill switch${CLR}"
|
||||||
echo -n "Выбери [1-7] или Enter для выхода: "
|
echo -e " ${GRY}Временно — когда нужен прямой доступ без VPN (российский IP).${CLR}"
|
||||||
read -r choice
|
echo ""
|
||||||
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)"
|
[ -n "$choice" ] && _log "setup" "Пункт $choice на $(hostname)"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user