From 29048e6f8365879901281eaee537f5845bb14198 Mon Sep 17 00:00:00 2001 From: anten-ka Date: Fri, 20 Mar 2026 17:49:40 +0300 Subject: [PATCH] v2.1: optional routing text, full promo codes, bot wizard, upgrade compat, 3-cycle audit fixes Made-with: Cursor --- warp.sh | 123 ++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 89 insertions(+), 34 deletions(-) diff --git a/warp.sh b/warp.sh index ec62368..564c5c3 100644 --- a/warp.sh +++ b/warp.sh @@ -430,7 +430,9 @@ show_3xui_guide() { echo -e " ${CYAN}(пункт 1 основного подменю показывает полный JSON)${NC}" echo -e "" - echo -e "${YELLOW}═══ НАСТРОЙКА МАРШРУТИЗАЦИИ ═══${NC}\n" + echo -e "${YELLOW}═══ МАРШРУТИЗАЦИЯ (по желанию) ═══${NC}\n" + echo -e " ${DIM}По умолчанию WARP не используется пока нет маршрутизации.${NC}" + echo -e " ${DIM}Добавьте правило, чтобы указать какие сайты идут через WARP:${NC}\n" echo -e "${YELLOW}Шаг 5.${NC} Перейдите в ${WHITE}Настройки Xray${NC} → ${WHITE}Routing Rules${NC}" echo -e "${YELLOW}Шаг 6.${NC} Нажмите ${GREEN}+ Добавить правило${NC}" echo -e "${YELLOW}Шаг 7.${NC} Заполните:" @@ -441,9 +443,11 @@ show_3xui_guide() { echo -e " ${GREEN}geosite:netflix${NC}" echo -e " ${GREEN}geosite:disney${NC}" echo -e " ${GREEN}geosite:spotify${NC}" + echo -e " ${GREEN}domain:chat.openai.com${NC}" echo -e " ${GREEN}domain:claude.ai${NC}" echo -e "" - echo -e " ${DIM}Каждый домен — на отдельной строке в поле Domain${NC}" + echo -e " ${DIM}Каждый домен на отдельной строке.${NC}" + echo -e " ${DIM}Можно добавить свои домены или использовать network: tcp,udp для всего трафика.${NC}" echo -e "" echo -e "${YELLOW}═══ ПРИМЕНЕНИЕ ═══${NC}\n" @@ -1453,7 +1457,7 @@ bot_handle_callback() { tg_edit "$chat_id" "$msg_id" "$s" "$(kbd_back)" ;; promo) - local pt="🏢 Хостинг\n\n🌍 РФ и Европа\n👉 https://vk.cc/ct29NQ\n\nOFF60 — 60%\nantenka20 — +20% (3мес)\n\n🇧🇾 Беларусь\n👉 https://vk.cc/cUxAhj\nOFF60 — 60%" + local pt="🏢 Хостинг со скидкой до -60%\n\n🌍 РФ и Европа\n👉 https://vk.cc/ct29NQ\n\nOFF60 — 60% скидка\nantenka20 — +20% к балансу (3мес)\nantenka6 — +15% к балансу (6мес)\nantenka12 — +5% к балансу (12мес)\n\n🇧🇾 Беларусь\n👉 https://vk.cc/cUxAhj\nOFF60 — 60% скидка" tg_edit "$chat_id" "$msg_id" "$pt" "$(kbd_back)" ;; esac } @@ -1535,41 +1539,88 @@ stop_bot() { echo -e "${GREEN}[OK] Бот остановлен.${NC}"; log_action "Bot stopped" } +bot_auto_chatid() { + echo -e "${YELLOW} Отправьте боту любое сообщение в Telegram, затем нажмите Enter.${NC}" + read -p " > " _ + local c; c=$(curl -s "https://api.telegram.org/bot${BOT_TOKEN}/getUpdates?limit=1&offset=-1" | jq -r '.result[0].message.chat.id // empty') + if [ -n "$c" ]; then + save_config_val "BOT_CHAT_ID" "$c"; BOT_CHAT_ID="$c" + echo -e " ${GREEN}✓ Chat ID: $c${NC}" + return 0 + else + echo -e " ${RED}✗ Не удалось определить Chat ID.${NC}" + return 1 + fi +} + +bot_wizard() { + clear + echo -e "\n${CYAN}━━━ Настройка Telegram-бота (быстрый старт) ━━━${NC}\n" + + echo -e "${YELLOW}Шаг 1/3.${NC} Введите токен бота" + echo -e "${DIM} Получить: @BotFather → /newbot → скопировать токен${NC}\n" + read -p " Токен: " t + if [ -z "$t" ]; then echo -e " ${RED}Отменено.${NC}"; read -p "Enter..."; return; fi + save_config_val "BOT_TOKEN" "$t"; BOT_TOKEN="$t" + echo -e " ${GREEN}✓ Токен сохранён${NC}\n" + + echo -e "${YELLOW}Шаг 2/3.${NC} Определение Chat ID (авто)" + if ! bot_auto_chatid; then + echo -e "\n ${YELLOW}Chat ID не определён — бот будет доступен всем.${NC}" + echo -e " ${WHITE}Можно задать вручную позже через меню бота (п.3).${NC}" + fi + echo "" + + echo -e "${YELLOW}Шаг 3/3.${NC} Запуск бота" + start_bot + echo "" + + if systemctl is-active warp-bot &>/dev/null; then + echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" + echo -e "${GREEN} ✅ Бот настроен и запущен!${NC}" + echo -e "${GREEN} Откройте бота в Telegram и нажмите /start${NC}" + echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" + else + echo -e "${YELLOW} ⚠ Бот может не запуститься. Проверьте:${NC}" + echo -e " ${WHITE}journalctl -u warp-bot --no-pager -n 10${NC}" + fi + read -p " Enter..." +} + bot_menu() { + source "$WARP_CONF" 2>/dev/null + if [ -z "${BOT_TOKEN:-}" ]; then + bot_wizard + return + fi + while true; do clear; source "$WARP_CONF" 2>/dev/null local bs="${RED}Выкл${NC}" - [ -f "$BOT_PID_FILE" ] && kill -0 "$(cat "$BOT_PID_FILE" 2>/dev/null)" 2>/dev/null && bs="${GREEN}Вкл ($(cat "$BOT_PID_FILE"))${NC}" - local td="нет"; [ -n "${BOT_TOKEN:-}" ] && td="***${BOT_TOKEN: -6}" - echo -e "${CYAN}━━━ Telegram Bot ━━━${NC}" - echo -e "Статус: $bs" - echo -e "Токен: ${YELLOW}$td${NC}" - echo -e "Chat ID: ${YELLOW}${BOT_CHAT_ID:-нет}${NC}\n" - echo -e "1) Токен бота" - echo -e "2) Chat ID (авто)" - echo -e "3) Chat ID (вручную)" - echo -e "4) ${GREEN}Запустить${NC}" - echo -e "5) ${RED}Остановить${NC}" - echo -e "0) Назад" - read -p "Выбор: " ch + systemctl is-active warp-bot &>/dev/null && bs="${GREEN}Вкл${NC}" + local td="***${BOT_TOKEN: -6}" + echo -e "\n${CYAN}━━━ Telegram Bot ━━━${NC}\n" + echo -e " Статус: $bs" + echo -e " Токен: ${YELLOW}$td${NC}" + echo -e " Chat ID: ${YELLOW}${BOT_CHAT_ID:-нет}${NC}\n" + echo -e " 1) Изменить токен" + echo -e " 2) Chat ID (авто)" + echo -e " 3) Chat ID (вручную)" + echo -e " 4) ${GREEN}Запустить${NC}" + echo -e " 5) ${RED}Остановить${NC}" + echo -e " 0) Назад" + echo "" + read -p " Выбор: " ch case $ch in - 1) echo "Токен:"; read -p "> " t - [ -n "$t" ] && save_config_val "BOT_TOKEN" "$t" && BOT_TOKEN="$t" && echo -e "${GREEN}OK${NC}" - read -p "Enter..." ;; - 2) [ -z "${BOT_TOKEN:-}" ] && echo -e "${RED}Сначала токен!${NC}" && read -p "" && continue - echo -e "${YELLOW}Отправьте боту сообщение, нажмите Enter.${NC}"; read -p "" - local c; c=$(curl -s "https://api.telegram.org/bot${BOT_TOKEN}/getUpdates?limit=1&offset=-1" | jq -r '.result[0].message.chat.id // empty') - if [ -n "$c" ]; then - save_config_val "BOT_CHAT_ID" "$c"; BOT_CHAT_ID="$c"; echo -e "${GREEN}Chat ID: $c${NC}" - else - echo -e "${RED}Не удалось.${NC}" - fi - read -p "Enter..." ;; - 3) echo "Chat ID:"; read -p "> " c - [ -n "$c" ] && save_config_val "BOT_CHAT_ID" "$c" && BOT_CHAT_ID="$c" && echo -e "${GREEN}OK${NC}" - read -p "Enter..." ;; - 4) start_bot; read -p "Enter..." ;; - 5) stop_bot; read -p "Enter..." ;; + 1) echo " Токен:"; read -p " > " t + [ -n "$t" ] && save_config_val "BOT_TOKEN" "$t" && BOT_TOKEN="$t" && echo -e " ${GREEN}OK${NC}" + read -p " Enter..." ;; + 2) bot_auto_chatid; read -p " Enter..." ;; + 3) echo " Chat ID:"; read -p " > " c + [ -n "$c" ] && save_config_val "BOT_CHAT_ID" "$c" && BOT_CHAT_ID="$c" && echo -e " ${GREEN}OK${NC}" + read -p " Enter..." ;; + 4) start_bot; read -p " Enter..." ;; + 5) stop_bot; read -p " Enter..." ;; 0) return ;; esac done @@ -1759,10 +1810,14 @@ run_startup() { ((s++)) printf " ${CYAN}[%d/%d]${NC} ${YELLOW}⏳${NC} Установка gowarp..." "$s" "$total" + local upgrade_msg="установлена" + if [ -f "/usr/local/bin/gowarp" ] && [ "$(readlink -f "$0" 2>/dev/null)" != "/usr/local/bin/gowarp" ]; then + upgrade_msg="обновлена (v${WARP_VERSION})" + fi if [ "$(readlink -f "$0" 2>/dev/null)" != "/usr/local/bin/gowarp" ]; then cp -f "$0" "/usr/local/bin/gowarp"; chmod +x "/usr/local/bin/gowarp" fi - printf "\r ${CYAN}[%d/%d]${NC} ${GREEN}✓${NC} Команда gowarp \n" "$s" "$total" + printf "\r ${CYAN}[%d/%d]${NC} ${GREEN}✓${NC} Команда gowarp %s \n" "$s" "$total" "$upgrade_msg" ((s++)) printf " ${CYAN}[%d/%d]${NC} ${YELLOW}⏳${NC} Определение IP..." "$s" "$total"