diff --git a/ai-setup.sh b/ai-setup.sh index d985655..e918886 100755 --- a/ai-setup.sh +++ b/ai-setup.sh @@ -30,6 +30,17 @@ if ! command -v python3 &>/dev/null; then fi success "Python 3 найден" +# ── 0. Выбор режима работы (vless / direct) ───────────────── +read -r -p "Установить встроенный vless? [Y/n] " _vless_ans +_vless_ans="${_vless_ans:-Y}" +if [[ "$_vless_ans" =~ ^[Yy]$ ]]; then + USE_VLESS=1 + info "Режим: vless + proxychains4" +else + USE_VLESS=0 + info "Режим: direct (без проксирования)" +fi + # ── 1. npm prefix в домашнюю папку ────────────────────────── info "Настраиваю npm prefix..." mkdir -p "$NPM_GLOBAL" @@ -57,6 +68,61 @@ else warn "Node.js не найден. Некоторые функции могут не работать." fi +# ── 2.5. proxychains-ng + xray (только в режиме vless) ────── +if [ "$USE_VLESS" -eq 1 ]; then + info "Проверяю proxychains-ng..." + if ! command -v proxychains4 &>/dev/null; then + info "Устанавливаю proxychains-ng (нужен sudo)..." + if command -v apt-get &>/dev/null; then + sudo apt-get install -y proxychains-ng + elif command -v dnf &>/dev/null; then + sudo dnf install -y proxychains-ng + else + warn "Не удалось установить proxychains-ng автоматически. Установите вручную." + fi + fi + if command -v proxychains4 &>/dev/null; then + success "proxychains4 найден" + else + warn "proxychains4 не найден. Продолжаю без проксирования." + fi + + info "Устанавливаю xray..." + XRAY_VERSION="26.3.27" + XRAY_ARCH="64" + XRAY_URL="https://github.com/XTLS/Xray-core/releases/download/v${XRAY_VERSION}/Xray-linux-${XRAY_ARCH}.zip" + + TMPDIR=$(mktemp -d) + curl -fsSL "$XRAY_URL" -o "$TMPDIR/xray.zip" + unzip -q "$TMPDIR/xray.zip" -d "$TMPDIR" + sudo install -m 755 "$TMPDIR/xray" /usr/local/bin/xray + rm -rf "$TMPDIR" + + sudo mkdir -p /etc/xray + sudo cp "$SCRIPT_DIR/home-configs/xray/config.json" /etc/xray/config.json + sudo chmod 644 /etc/xray/config.json + + sudo tee /etc/systemd/system/xray.service > /dev/null << 'SVCEOF' +[Unit] +Description=Xray Service +After=network.target + +[Service] +ExecStart=/usr/local/bin/xray run -c /etc/xray/config.json +Restart=on-failure + +[Install] +WantedBy=multi-user.target +SVCEOF + + sudo systemctl daemon-reload + sudo systemctl enable --now xray + success "xray установлен и запущен" + + cp "$SCRIPT_DIR/home-configs/proxychains/proxychains-xray.conf" "$HOME/.proxychains-xray.conf" + success "Proxychains конфиг обновлён" +fi + # ── 3. Claude Code ─────────────────────────────────────────── info "Проверяю Claude Code..." if ! command -v claude &>/dev/null; then @@ -699,6 +765,17 @@ exec claude --dangerously-skip-permissions --system-prompt "$SYS_PROMPT" "$@" CLAUDEEOF chmod +x "$BIN_DIR/ai-claude" +# ── 8.5. Proxychains инъекция (только в режиме vless) ──────── +if [ "$USE_VLESS" -eq 1 ]; then + info "Включаю proxychains4 в ai-лаунчеры..." + sed -i 's/^exec "\$codex_bin"/exec proxychains4 -f "\$HOME\/\.proxychains-xray\.conf" "\$codex_bin"/' "$BIN_DIR/ai-gpt" + sed -i 's/^claude --dangerously-skip-permissions/proxychains4 -f "\$HOME\/\.proxychains-xray\.conf" claude --dangerously-skip-permissions/' "$BIN_DIR/ai-deepseek" + sed -i 's/^claude --dangerously-skip-permissions/proxychains4 -f "\$HOME\/\.proxychains-xray\.conf" claude --dangerously-skip-permissions/' "$BIN_DIR/ai-kimi" + sed -i 's/^\([[:space:]]*\)exec "\$agy_bin"/\1exec proxychains4 -f "\$HOME\/\.proxychains-xray\.conf" "\$agy_bin"/' "$BIN_DIR/ai-gemini" + sed -i 's/^exec claude/exec proxychains4 -f "\$HOME\/\.proxychains-xray\.conf" claude/' "$BIN_DIR/ai-claude" + success "proxychains4 интегрирован" +fi + info "Удаляю старые версии скриптов (claude_*)..." rm -f "$BIN_DIR/claude_gpt" "$BIN_DIR/claude_deepseek" "$BIN_DIR/claude_kimi" "$BIN_DIR/claude_gemini" "$BIN_DIR/claude_api_helpers.sh" diff --git a/home-configs/proxychains/proxychains-xray.conf b/home-configs/proxychains/proxychains-xray.conf new file mode 100644 index 0000000..060bc2c --- /dev/null +++ b/home-configs/proxychains/proxychains-xray.conf @@ -0,0 +1,9 @@ +# ProxyChains-NG config for xray SOCKS5 proxy +strict_chain +proxy_dns +remote_dns_subnet 224 +tcp_read_time_out 15000 +tcp_connect_time_out 8000 + +[ProxyList] +socks5 127.0.0.1 1080 diff --git a/home-configs/xray/config.json b/home-configs/xray/config.json new file mode 100755 index 0000000..db47183 --- /dev/null +++ b/home-configs/xray/config.json @@ -0,0 +1,51 @@ +{ + "inbounds": [ + { + "port": 1080, + "listen": "127.0.0.1", + "protocol": "socks", + "settings": { + "udp": true + } + }, + { + "port": 2080, + "listen": "127.0.0.1", + "protocol": "http" + } + ], + "outbounds": [ + { + "protocol": "vless", + "settings": { + "vnext": [ + { + "address": "92.118.8.29", + "port": 443, + "users": [ + { + "id": "495ac855-d718-4581-8344-f1e62105a904", + "encryption": "mlkem768x25519plus.native.0rtt.gNGR8kO_UDWjoeer_TenoRbA09ajfrSfahqkS4q0dTeCFutCHGJjIdhSl8Fv8HyYUyWB_2GqMrSIzLS9l1BiidClOnliyUmZylQwQoUFl6CsLsZxdrrDz3w2isuIhtXPfZw8lANOErk7p7mm4QN0H2ZKCOQQaxkL3XA8EcxqNuGhK4XLqlFBDommPJUQfPuP7LV3V7s8YTcwq1EUr-Nyv0CZRdcF9WCNCWq26TVYXFwHSkeknBBFKYEJiytB8DpIvlmTvREQfEVnTziwOdYKikQXeOYdbcuKSWGb2okDZjFzYckULaWhavOwRWnOquZqdXiatrNPmCWnG2mfcSxA0UdLu8ALiOtuPjBGDUqqaXhZLLuH1zhdsUE4PMqqkNnMvsRwmvAYgWwSKWioz3wTQ1sKVfW1jTh8LyouZaVkuqRTunwWBcVCRDYEFUh4TBB_-WOpu7eh4ROmj9w0mhWBrtRO-uin8ZwqhkeScQhwoFUEvlwCsAl8AevGmAm1qpdOzfXNUgBTtVoXG9OTMUk9ZORiTzO0tutVTlKjaiBb1vOqgiFqiPuG1csvaPt63LQ1e9ywvEek7NkLVnrJopmCnTiu9UhE7GwZbxI8FBFYrBmPpIUszLiWLQZqvySbqBrIFTC5lIw9WymdW5wKONs5DZmYtFZOHUVEFtVFJvcZqwnEJARKI_M-rvkS7FWPPCkKHpEVe_IJsgOgoUzI9yQI5kNlS5XAzUG7ZMGWtzYjOZNZ1FYP5NbBTTy9I8kpLRQv3yp7PYBGdBQapaYX82Qjc4orJdghG5UOTQwsokojPVaAzSWG4qk5hoNugvogx9KHdsitKXCDlhdksQS5Obc8uMg1TxO2c0AnR2nNNVqgb_prVUlaNHcP4wARfCqrMwdgYQSSoLZluah9a2eZxGcC6CMxPBsThCEwNzIJUZiuPIvEQVFyJpiCHeUErGZFLpmaE0MK2cEzD9N7pRVgEExvwIMnO3jIGmCz80FFuAmEjDG5iyMkzQpsEnBHwAaihjkSwgCsZzTL26OtIDUUYMZ1N8ciRRqTvSGzn_K6EUp7JaWygZGw3QCBRocO7SEWpuGvakJc0QV32vpty3c8UeIcJZlgGKgtcNcsVYvLpEkkYviNCbpq6jnECRYUuXGp_oQv1mwqx2WMqGic7LVZNtYCJ3fHAsGi4yh5nfU0dNSCC0cgeyakNXvL3eyqHIB_e8RrEiMywUg7_MGP2oE9ZOqayLRapVTGQ-YATgcnZ_Eg5bKHNcRVqBpo0heElCtMPoEdQYE_HZSOm1cf9nFIYqRJ6_RPJNKGDOBwy1wJWJel54y-CeY3S2vAWRibOFiwVGW01tHNSCEQBaiLEzQ2Xml6IkSAHNm9eifPrdxuBChibzco4dUFpumbxrRkJYAuqmQfWgi36ziojeEDLlUd55ZDeCOVn4MoHMcD4yzAkpdUelyBafeUoQEs6hCDf2p7CvCquWKoEzcwvuccR0GcN5un2sqQAMVKw3Gs3fsRwkgcdsK69oE4KfUKVjrBGkIk9ChYCJMYGZJ-pGkWFp1qLua2QnNmPVJlpPjurRJVoiAiOVE", + "flow": "" + } + ] + } + ] + }, + "streamSettings": { + "network": "xhttp", + "security": "reality", + "realitySettings": { + "serverName": "www.amd.com", + "fingerprint": "chrome", + "publicKey": "AMoGtXyztJYD6GRP6m8K82Mi-5vthrNrppJkEmconTU", + "shortId": "9cd28fd258f8b99c" + }, + "xhttpSettings": { + "path": "/", + "mode": "auto" + } + } + } + ] +}