diff --git a/README.md b/README.md index 362ae3a..8fe97f6 100644 --- a/README.md +++ b/README.md @@ -255,7 +255,7 @@ curl -s --proxy socks5h://127.0.0.1:40000 ifconfig.me **Через SSH-меню:** -1. Выберите пункт **5** — ➕ Добавить клиентов в WARP +1. Выберите пункт **6** — ➕ Добавить клиентов в WARP 2. Вы увидите список всех клиентов AmneziaWG с их IP и именами 3. Введите номер клиента, которого хотите добавить, или `all` для всех 4. Скрипт: @@ -286,11 +286,11 @@ docker exec <имя_контейнера> curl -s --interface warp ifconfig.me | Действие | SSH-меню | Telegram-бот | |----------|----------|--------------| -| Добавить в WARP | пункт **5** | Клиенты → ➕ Добавить | -| Убрать из WARP | пункт **6** | Клиенты → ➖ Убрать | -| Список клиентов в WARP | пункт **7** | Клиенты | -| Перевыпуск ключа | пункт **12** | 🔑 Перевыпуск ключа | -| Перезапуск контейнера | пункт **13** | 🔄 Контейнер | +| Добавить в WARP | пункт **6** | Клиенты → ➕ Добавить | +| Убрать из WARP | пункт **7** | Клиенты → ➖ Убрать | +| Список клиентов в WARP | пункт **8** | Клиенты | +| Перевыпуск ключа | пункт **5** | 🔑 Перевыпуск ключа | +| Перезапуск контейнера | пункт **9** | 🔄 Контейнер | ### Что происходит при добавлении клиента @@ -320,24 +320,9 @@ docker exec <имя_контейнера> curl -s --interface warp ifconfig.me ## Меню WARP Manager -### Режим 3X-UI +Меню организовано по секциям. Нумерация пунктов 1–5 и 10–13 одинакова в обоих режимах, а секция 6–9 адаптируется. -| Пункт | Действие | -|-------|----------| -| 1 | Установить WARP | -| 2 | Запустить WARP | -| 3 | Остановить WARP | -| 4 | Статус и конфигурация | -| 5 | JSON для 3X-UI (готовые конфиги) | -| 6 | Перевыпуск ключа (новый WARP IP) | -| 7 | Изменить порт SOCKS5 | -| 8 | Telegram Bot | -| 9 | PROMO | -| 10 | Инструкция | -| 11 | Полное удаление | -| 0 | Выход | - -### Режим AmneziaWG +### Общая секция — WARP-ключ (оба режима) | Пункт | Действие | |-------|----------| @@ -345,15 +330,32 @@ docker exec <имя_контейнера> curl -s --interface warp ifconfig.me | 2 | Запустить WARP | | 3 | Остановить WARP | | 4 | Статус | -| 5 | ➕ Добавить клиентов в WARP | -| 6 | ➖ Убрать клиентов из WARP | -| 7 | Показать клиентов | -| 8 | Telegram Bot | -| 9 | PROMO | -| 10 | Инструкция | -| 11 | Полное удаление | -| 12 | Перевыпуск ключа | -| 13 | Перезапуск контейнера | +| 5 | Перевыпуск ключа (новый WARP IP) | + +### Секция 3X-UI (только в режиме 3X-UI) + +| Пункт | Действие | +|-------|----------| +| 6 | JSON конфиг для 3X-UI | +| 7 | Изменить порт SOCKS5 | + +### Секция AmneziaWG (только в режиме AmneziaWG) + +| Пункт | Действие | +|-------|----------| +| 6 | ➕ Добавить клиентов в WARP | +| 7 | ➖ Убрать клиентов из WARP | +| 8 | Показать клиентов в WARP | +| 9 | Перезапуск контейнера | + +### Общая секция — бот и прочее (оба режима) + +| Пункт | Действие | +|-------|----------| +| 10 | Telegram Bot (настройка и управление) | +| 11 | PROMO | +| 12 | Инструкция | +| 13 | Полное удаление | | 0 | Выход | --- @@ -368,7 +370,7 @@ WARP Manager включает встроенный Telegram-бот для уда 2. Отправьте `/newbot` 3. Задайте имя и username бота 4. Скопируйте полученный **токен** -5. На сервере выполните `gowarp` → пункт **8** (Telegram Bot) +5. На сервере выполните `gowarp` → пункт **10** (Telegram Bot) 6. Выберите **1) Токен бота** — вставьте токен 7. Выберите **2) Chat ID (авто)**: - Откройте вашего бота в Telegram @@ -436,7 +438,7 @@ warp-cli --accept-tos status journalctl -u warp-svc --no-pager -n 20 ``` -Попробуйте перевыпустить ключ (пункт 6 в меню). +Попробуйте перевыпустить ключ (пункт 5 в меню). ### WARP не подключается (AmneziaWG) @@ -451,7 +453,7 @@ docker exec <контейнер> cat /opt/warp/warp.conf docker exec <контейнер> ip link show warp ``` -Попробуйте перевыпустить ключ (пункт 12) или перезапустить контейнер (пункт 13). +Попробуйте перевыпустить ключ (пункт 5) или перезапустить контейнер (пункт 9). ### Сайт всё ещё заблокирован после настройки (3X-UI) @@ -462,15 +464,15 @@ docker exec <контейнер> ip link show warp ### Клиент не видит WARP IP (AmneziaWG) -1. Убедитесь, что клиент **добавлен** в WARP (`gowarp` → пункт 7) +1. Убедитесь, что клиент **добавлен** в WARP (`gowarp` → пункт 8) 2. Проверьте, что интерфейс `warp` поднят (`gowarp` → пункт 4) -3. Перезапустите контейнер (`gowarp` → пункт 13) +3. Перезапустите контейнер (`gowarp` → пункт 9) 4. Переподключитесь к VPN на клиентском устройстве ### Как сменить WARP IP -- **3X-UI:** `gowarp` → пункт **6** или кнопка бота **🔑 Перевыпуск ключа** -- **AmneziaWG:** `gowarp` → пункт **12** или кнопка бота **🔑 Перевыпуск ключа** +- **3X-UI:** `gowarp` → пункт **5** или кнопка бота **🔑 Перевыпуск ключа** +- **AmneziaWG:** `gowarp` → пункт **5** или кнопка бота **🔑 Перевыпуск ключа** ### Как изменить порт SOCKS5 (только 3X-UI) @@ -490,7 +492,7 @@ docker exec <контейнер> ip link show warp gowarp ``` -Выберите пункт **11** — Полное удаление. +Выберите пункт **13** — Полное удаление. ### Что удаляется (3X-UI) diff --git a/warp.sh b/warp.sh index b093032..ab24b9e 100644 --- a/warp.sh +++ b/warp.sh @@ -492,14 +492,13 @@ awg_install_wgcf() { awg_ensure_account() { if [ ! -f "$WGCF_ACCOUNT" ]; then echo -e "${YELLOW}Регистрация WARP через wgcf...${NC}" - echo -e "${WHITE}Если попросит подтверждение — введите ${GREEN}y${NC}" - (cd /root && ./wgcf register) + (cd /root && yes | ./wgcf register 2>/dev/null) fi [ -f "$WGCF_ACCOUNT" ] || { echo -e "${RED}Не создан $WGCF_ACCOUNT${NC}"; return 1; } } awg_generate_profile() { - (cd /root && ./wgcf generate) + (cd /root && yes | ./wgcf generate 2>/dev/null) [ -f "$WGCF_PROFILE" ] || { echo -e "${RED}Не создан профиль.${NC}"; return 1; } } @@ -1135,7 +1134,7 @@ bot_handle_callback() { else docker exec "$CONTAINER" sh -c "wg-quick down '$AWG_WARP_CONF' 2>/dev/null || true" rm -f "$WGCF_ACCOUNT" - (cd /root && ./wgcf register --accept-tos 2>/dev/null && ./wgcf generate 2>/dev/null) + (cd /root && yes | ./wgcf register 2>/dev/null && yes | ./wgcf generate 2>/dev/null) if [ -f "$WGCF_PROFILE" ]; then local ep; ep=$(awg_resolve_endpoint 2>/dev/null) if [ -n "$ep" ]; then @@ -1467,57 +1466,66 @@ show_menu() { sc="$RED"; [[ "$st" == "Подключён" ]] && sc="$GREEN"; [[ "$st" == "Отключён" ]] && sc="$YELLOW" local mode_label="3X-UI"; [ "$MODE" = "amnezia" ] && mode_label="AmneziaWG" - echo -e "${MAGENTA}******************************************************" - echo " anten-ka · WARP Manager v${WARP_VERSION} (${mode_label})" - echo " YouTube: https://www.youtube.com/@antenkaru" - echo -e "******************************************************${NC}" - echo -e "${WHITE}IP сервера: ${GREEN}${MY_IP}${NC} ${WHITE}WARP: ${sc}${st}${NC}" + echo -e "${MAGENTA}╔══════════════════════════════════════════════════════╗" + echo -e "║ anten-ka · WARP Manager v${WARP_VERSION} ║" + echo -e "║ YouTube: https://www.youtube.com/@antenkaru ║" + echo -e "╚══════════════════════════════════════════════════════╝${NC}" + echo -e " ${WHITE}IP сервера:${NC} ${GREEN}${MY_IP}${NC} ${WHITE}Режим:${NC} ${CYAN}${mode_label}${NC}" + echo -e " ${WHITE}WARP:${NC} ${sc}${st}${NC}" if [ "$MODE" = "3xui" ] && is_warp_running; then - echo -e "${WHITE}SOCKS5: ${CYAN}127.0.0.1:${SOCKS_PORT}${NC}" + echo -e " ${WHITE}SOCKS5:${NC} ${CYAN}127.0.0.1:${SOCKS_PORT}${NC}" fi - if [ "$MODE" = "amnezia" ]; then - echo -e "${WHITE}Контейнер: ${CYAN}${CONTAINER:-N/A}${NC}" + if [ "$MODE" = "amnezia" ] && [ -n "${CONTAINER:-}" ]; then + echo -e " ${WHITE}Контейнер:${NC} ${CYAN}${CONTAINER}${NC}" fi - echo -e "------------------------------------------------------" - echo -e " 1) ${GREEN}Установить WARP${NC}" - echo -e " 2) ${CYAN}Запустить WARP${NC}" - echo -e " 3) ${YELLOW}Остановить WARP${NC}" - echo -e " 4) 📊 ${WHITE}Статус${NC}" + + echo -e "\n${CYAN}── WARP-ключ ──────────────────────────────────────────${NC}" + echo -e " 1) ${GREEN}Установить WARP${NC}" + echo -e " 2) ${CYAN}Запустить WARP${NC}" + echo -e " 3) ${YELLOW}Остановить WARP${NC}" + echo -e " 4) 📊 Статус" + echo -e " 5) 🔑 ${YELLOW}Перевыпуск ключа${NC}" if [ "$MODE" = "3xui" ]; then - echo -e " 5) 📋 ${CYAN}JSON для 3X-UI${NC}" - echo -e " 6) 🔑 ${YELLOW}Перевыпуск ключа${NC}" - echo -e " 7) 🔧 ${WHITE}Изменить порт SOCKS5${NC}" - else - echo -e " 5) ${GREEN}➕ Добавить клиентов в WARP${NC}" - echo -e " 6) ${YELLOW}➖ Убрать клиентов из WARP${NC}" - echo -e " 7) 👥 ${WHITE}Показать клиентов${NC}" - echo -e "12) 🔑 ${YELLOW}Перевыпуск ключа${NC}" - echo -e "13) 🔄 ${CYAN}Перезапуск контейнера${NC}" + echo -e "\n${CYAN}── 3X-UI ──────────────────────────────────────────────${NC}" + echo -e " 6) 📋 ${CYAN}JSON конфиг для 3X-UI${NC}" + echo -e " 7) 🔧 ${WHITE}Изменить порт SOCKS5${NC}" fi - echo -e " 8) 🤖 ${CYAN}Telegram Bot${NC}" - echo -e " 9) ${YELLOW}PROMO${NC}" - echo -e "10) ${MAGENTA}📚 Инструкция${NC}" - echo -e "11) ${RED}⚠ Полное удаление${NC}" - echo -e " 0) Выход" - echo -e "------------------------------------------------------" - read -p "Выбор: " ch + if [ "$MODE" = "amnezia" ]; then + echo -e "\n${CYAN}── AmneziaWG ──────────────────────────────────────────${NC}" + echo -e " 6) ${GREEN}➕ Добавить клиентов в WARP${NC}" + echo -e " 7) ${YELLOW}➖ Убрать клиентов из WARP${NC}" + echo -e " 8) 👥 ${WHITE}Показать клиентов в WARP${NC}" + echo -e " 9) 🔄 ${CYAN}Перезапуск контейнера${NC}" + fi + + echo -e "\n${CYAN}── Telegram-бот ───────────────────────────────────────${NC}" + echo -e " 10) 🤖 ${CYAN}Настройка и управление ботом${NC}" + + echo -e "\n${CYAN}── Прочее ─────────────────────────────────────────────${NC}" + echo -e " 11) ${YELLOW}PROMO${NC}" + echo -e " 12) ${MAGENTA}📚 Инструкция${NC}" + echo -e " 13) ${RED}⚠ Полное удаление${NC}" + echo -e " 0) Выход" + echo -e "${CYAN}──────────────────────────────────────────────────────${NC}" + read -p " Выбор: " ch + case $ch in - 1) [ "$MODE" = "3xui" ] && install_warp_3xui || install_warp_awg ;; - 2) [ "$MODE" = "3xui" ] && start_warp_3xui || start_warp_awg ;; - 3) [ "$MODE" = "3xui" ] && stop_warp_3xui || stop_warp_awg ;; - 4) [ "$MODE" = "3xui" ] && show_status_3xui || show_status_awg ;; - 5) [ "$MODE" = "3xui" ] && show_xui_json || awg_add_clients_ssh ;; - 6) [ "$MODE" = "3xui" ] && rekey_warp_3xui || awg_remove_clients_ssh ;; - 7) [ "$MODE" = "3xui" ] && change_port_3xui || awg_show_clients_ssh ;; - 8) bot_menu ;; - 9) show_promo ;; - 10) show_info ;; - 11) full_uninstall ;; - 12) [ "$MODE" = "amnezia" ] && rekey_warp_awg ;; - 13) [ "$MODE" = "amnezia" ] && awg_restart_container ;; - 0) exit 0 ;; + 1) [ "$MODE" = "3xui" ] && install_warp_3xui || install_warp_awg ;; + 2) [ "$MODE" = "3xui" ] && start_warp_3xui || start_warp_awg ;; + 3) [ "$MODE" = "3xui" ] && stop_warp_3xui || stop_warp_awg ;; + 4) [ "$MODE" = "3xui" ] && show_status_3xui || show_status_awg ;; + 5) [ "$MODE" = "3xui" ] && rekey_warp_3xui || rekey_warp_awg ;; + 6) [ "$MODE" = "3xui" ] && show_xui_json || awg_add_clients_ssh ;; + 7) [ "$MODE" = "3xui" ] && change_port_3xui || awg_remove_clients_ssh ;; + 8) [ "$MODE" = "amnezia" ] && awg_show_clients_ssh ;; + 9) [ "$MODE" = "amnezia" ] && awg_restart_container ;; + 10) bot_menu ;; + 11) show_promo ;; + 12) show_info ;; + 13) full_uninstall ;; + 0) exit 0 ;; esac done }