Files
ai-setup/setup.sh

147 lines
6.0 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# Мастер-скрипт. Запускай от обычного пользователя (sudo попросит сам где нужно).
cd "$(dirname "$0")"
BLD='\033[1m'
GRN='\033[0;32m'
YEL='\033[0;33m'
GRY='\033[0;37m'
CLR='\033[0m'
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 -n "Выбери [1-6] или Enter для выхода: "
read -r choice
echo ""
case "$choice" in
1)
bash scripts/ai-setup.sh
;;
2)
echo -e "${GRY}Нужно указать два параметра твоей локальной сети:${CLR}"
echo -e "${GRY} GATEWAY — IP домашнего/офисного роутера (через него пойдёт .ru трафик напрямую)${CLR}"
echo -e "${GRY} DEV — сетевой интерфейс (wifi или провод), через который ты подключён к роутеру${CLR}"
echo ""
net_conf="$HOME/.config/ai-setup/network_$(hostname).conf"
auto_gw=$(ip route show default 2>/dev/null | awk '/default/ {print $3; exit}')
auto_dev=$(ip route show default 2>/dev/null | awk '/default/ {print $5; exit}')
auto_gw="${auto_gw:-192.168.1.1}"
auto_dev="${auto_dev:-wlp1s0}"
if [ -f "$net_conf" ]; then
saved_gw=$(grep '^GATEWAY=' "$net_conf" | cut -d= -f2)
saved_dev=$(grep '^DEV=' "$net_conf" | cut -d= -f2)
auto_gw="${saved_gw:-$auto_gw}"
auto_dev="${saved_dev:-$auto_dev}"
echo -e "Загружены сохранённые параметры для ${BLD}$(hostname)${CLR}: GATEWAY=${BLD}${auto_gw}${CLR} DEV=${BLD}${auto_dev}${CLR}"
else
echo -e "Определено автоматически: GATEWAY=${BLD}${auto_gw}${CLR} DEV=${BLD}${auto_dev}${CLR}"
fi
echo -e "${GRY}(просто Enter чтобы принять, или введи другое значение)${CLR}"
echo ""
read -rp "GATEWAY (IP роутера) [${auto_gw}]: " gw
read -rp "DEV (интерфейс) [${auto_dev}]: " dev
gw="${gw:-$auto_gw}"
dev="${dev:-$auto_dev}"
mkdir -p "$HOME/.config/ai-setup"
printf 'GATEWAY=%s\nDEV=%s\n' "$gw" "$dev" > "$net_conf"
echo ""
sudo GATEWAY="$gw" DEV="$dev" bash scripts/ru-bypass.sh
;;
3)
echo -e "${YEL}Перед этим выйди из Claude Code — сессия сменит IP.${CLR}"
echo -n "Продолжить? [y/N] "
read -r confirm
[ "$confirm" = "y" ] || [ "$confirm" = "Y" ] || exit 0
sudo bash scripts/ks-off.sh
;;
4)
sudo bash scripts/ks-on.sh
;;
5)
echo -e "${BLD}=== Статус ===${CLR}"
echo ""
echo -e "${BLD}Сеть:${CLR}"
if ip link show amn0 &>/dev/null; then
echo -e " ${GRN}${CLR} Amnezia (amn0) подключена"
else
echo -e " ${YEL}${CLR} Amnezia (amn0) не найдена"
fi
if sudo ufw status 2>/dev/null | grep -qE "активен|active"; then
echo -e " ${GRN}${CLR} UFW kill switch активен"
else
echo -e " ${YEL}${CLR} UFW выключен"
fi
if systemctl is-active --quiet ru-bypass.service 2>/dev/null || systemctl is-enabled --quiet ru-bypass.service 2>/dev/null; then
echo -e " ${GRN}${CLR} ru-bypass.service установлен"
else
echo -e " ${YEL}${CLR} ru-bypass.service не установлен (запусти пункт 2)"
fi
if systemctl is-enabled --quiet ru-ipset-restore.service 2>/dev/null; then
echo -e " ${GRN}${CLR} ru-ipset-restore.service установлен"
else
echo -e " ${YEL}${CLR} ru-ipset-restore.service не установлен (запусти пункт 2)"
fi
echo ""
echo -e "${BLD}AI инструменты:${CLR}"
for cmd in ai-claude ai-gpt ai-deepseek ai-kimi ai-openrouter ai-gemini; do
if command -v "$cmd" &>/dev/null; then
echo -e " ${GRN}${CLR} $cmd"
else
echo -e " ${YEL}${CLR} $cmd"
fi
done
echo ""
echo -e "${BLD}API ключи:${CLR}"
cfg="$HOME/.config/ai-setup"
for f in deepseek_key kimi_key openrouter_key; do
name="${f/_key/}"
if [ -s "$cfg/$f" ]; then
echo -e " ${GRN}${CLR} $name"
else
echo -e " ${YEL}${CLR} $name (не задан)"
fi
done
;;
6)
bash tests/test_network.sh
;;
"")
exit 0
;;
*)
echo "Неверный выбор."
exit 1
;;
esac