Restructure menu: WARP key / 3X-UI / AmneziaWG / Bot / Other sections; auto-confirm wgcf

Made-with: Cursor
This commit is contained in:
anten-ka
2026-03-20 15:48:42 +03:00
parent 29a4f168a7
commit 0a4b0c4620
2 changed files with 97 additions and 87 deletions

View File

@@ -255,7 +255,7 @@ curl -s --proxy socks5h://127.0.0.1:40000 ifconfig.me
**Через SSH-меню:** **Через SSH-меню:**
1. Выберите пункт **5** Добавить клиентов в WARP 1. Выберите пункт **6** Добавить клиентов в WARP
2. Вы увидите список всех клиентов AmneziaWG с их IP и именами 2. Вы увидите список всех клиентов AmneziaWG с их IP и именами
3. Введите номер клиента, которого хотите добавить, или `all` для всех 3. Введите номер клиента, которого хотите добавить, или `all` для всех
4. Скрипт: 4. Скрипт:
@@ -286,11 +286,11 @@ docker exec <имя_контейнера> curl -s --interface warp ifconfig.me
| Действие | SSH-меню | Telegram-бот | | Действие | SSH-меню | Telegram-бот |
|----------|----------|--------------| |----------|----------|--------------|
| Добавить в WARP | пункт **5** | Клиенты → Добавить | | Добавить в WARP | пункт **6** | Клиенты → Добавить |
| Убрать из WARP | пункт **6** | Клиенты → Убрать | | Убрать из WARP | пункт **7** | Клиенты → Убрать |
| Список клиентов в WARP | пункт **7** | Клиенты | | Список клиентов в WARP | пункт **8** | Клиенты |
| Перевыпуск ключа | пункт **12** | 🔑 Перевыпуск ключа | | Перевыпуск ключа | пункт **5** | 🔑 Перевыпуск ключа |
| Перезапуск контейнера | пункт **13** | 🔄 Контейнер | | Перезапуск контейнера | пункт **9** | 🔄 Контейнер |
### Что происходит при добавлении клиента ### Что происходит при добавлении клиента
@@ -320,24 +320,9 @@ docker exec <имя_контейнера> curl -s --interface warp ifconfig.me
## Меню WARP Manager ## Меню WARP Manager
### Режим 3X-UI Меню организовано по секциям. Нумерация пунктов 15 и 1013 одинакова в обоих режимах, а секция 69 адаптируется.
| Пункт | Действие | ### Общая секция — WARP-ключ (оба режима)
|-------|----------|
| 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
| Пункт | Действие | | Пункт | Действие |
|-------|----------| |-------|----------|
@@ -345,15 +330,32 @@ docker exec <имя_контейнера> curl -s --interface warp ifconfig.me
| 2 | Запустить WARP | | 2 | Запустить WARP |
| 3 | Остановить WARP | | 3 | Остановить WARP |
| 4 | Статус | | 4 | Статус |
| 5 | Добавить клиентов в WARP | | 5 | Перевыпуск ключа (новый WARP IP) |
| 6 | Убрать клиентов из WARP |
| 7 | Показать клиентов | ### Секция 3X-UI (только в режиме 3X-UI)
| 8 | Telegram Bot |
| 9 | PROMO | | Пункт | Действие |
| 10 | Инструкция | |-------|----------|
| 11 | Полное удаление | | 6 | JSON конфиг для 3X-UI |
| 12 | Перевыпуск ключа | | 7 | Изменить порт SOCKS5 |
| 13 | Перезапуск контейнера |
### Секция AmneziaWG (только в режиме AmneziaWG)
| Пункт | Действие |
|-------|----------|
| 6 | Добавить клиентов в WARP |
| 7 | Убрать клиентов из WARP |
| 8 | Показать клиентов в WARP |
| 9 | Перезапуск контейнера |
### Общая секция — бот и прочее (оба режима)
| Пункт | Действие |
|-------|----------|
| 10 | Telegram Bot (настройка и управление) |
| 11 | PROMO |
| 12 | Инструкция |
| 13 | Полное удаление |
| 0 | Выход | | 0 | Выход |
--- ---
@@ -368,7 +370,7 @@ WARP Manager включает встроенный Telegram-бот для уда
2. Отправьте `/newbot` 2. Отправьте `/newbot`
3. Задайте имя и username бота 3. Задайте имя и username бота
4. Скопируйте полученный **токен** 4. Скопируйте полученный **токен**
5. На сервере выполните `gowarp` → пункт **8** (Telegram Bot) 5. На сервере выполните `gowarp` → пункт **10** (Telegram Bot)
6. Выберите **1) Токен бота** — вставьте токен 6. Выберите **1) Токен бота** — вставьте токен
7. Выберите **2) Chat ID (авто)**: 7. Выберите **2) Chat ID (авто)**:
- Откройте вашего бота в Telegram - Откройте вашего бота в Telegram
@@ -436,7 +438,7 @@ warp-cli --accept-tos status
journalctl -u warp-svc --no-pager -n 20 journalctl -u warp-svc --no-pager -n 20
``` ```
Попробуйте перевыпустить ключ (пункт 6 в меню). Попробуйте перевыпустить ключ (пункт 5 в меню).
### WARP не подключается (AmneziaWG) ### WARP не подключается (AmneziaWG)
@@ -451,7 +453,7 @@ docker exec <контейнер> cat /opt/warp/warp.conf
docker exec <контейнер> ip link show warp docker exec <контейнер> ip link show warp
``` ```
Попробуйте перевыпустить ключ (пункт 12) или перезапустить контейнер (пункт 13). Попробуйте перевыпустить ключ (пункт 5) или перезапустить контейнер (пункт 9).
### Сайт всё ещё заблокирован после настройки (3X-UI) ### Сайт всё ещё заблокирован после настройки (3X-UI)
@@ -462,15 +464,15 @@ docker exec <контейнер> ip link show warp
### Клиент не видит WARP IP (AmneziaWG) ### Клиент не видит WARP IP (AmneziaWG)
1. Убедитесь, что клиент **добавлен** в WARP (`gowarp` → пункт 7) 1. Убедитесь, что клиент **добавлен** в WARP (`gowarp` → пункт 8)
2. Проверьте, что интерфейс `warp` поднят (`gowarp` → пункт 4) 2. Проверьте, что интерфейс `warp` поднят (`gowarp` → пункт 4)
3. Перезапустите контейнер (`gowarp` → пункт 13) 3. Перезапустите контейнер (`gowarp` → пункт 9)
4. Переподключитесь к VPN на клиентском устройстве 4. Переподключитесь к VPN на клиентском устройстве
### Как сменить WARP IP ### Как сменить WARP IP
- **3X-UI:** `gowarp` → пункт **6** или кнопка бота **🔑 Перевыпуск ключа** - **3X-UI:** `gowarp` → пункт **5** или кнопка бота **🔑 Перевыпуск ключа**
- **AmneziaWG:** `gowarp` → пункт **12** или кнопка бота **🔑 Перевыпуск ключа** - **AmneziaWG:** `gowarp` → пункт **5** или кнопка бота **🔑 Перевыпуск ключа**
### Как изменить порт SOCKS5 (только 3X-UI) ### Как изменить порт SOCKS5 (только 3X-UI)
@@ -490,7 +492,7 @@ docker exec <контейнер> ip link show warp
gowarp gowarp
``` ```
Выберите пункт **11** — Полное удаление. Выберите пункт **13** — Полное удаление.
### Что удаляется (3X-UI) ### Что удаляется (3X-UI)

80
warp.sh
View File

@@ -492,14 +492,13 @@ awg_install_wgcf() {
awg_ensure_account() { awg_ensure_account() {
if [ ! -f "$WGCF_ACCOUNT" ]; then if [ ! -f "$WGCF_ACCOUNT" ]; then
echo -e "${YELLOW}Регистрация WARP через wgcf...${NC}" echo -e "${YELLOW}Регистрация WARP через wgcf...${NC}"
echo -e "${WHITE}Если попросит подтверждение — введите ${GREEN}y${NC}" (cd /root && yes | ./wgcf register 2>/dev/null)
(cd /root && ./wgcf register)
fi fi
[ -f "$WGCF_ACCOUNT" ] || { echo -e "${RED}Не создан $WGCF_ACCOUNT${NC}"; return 1; } [ -f "$WGCF_ACCOUNT" ] || { echo -e "${RED}Не создан $WGCF_ACCOUNT${NC}"; return 1; }
} }
awg_generate_profile() { awg_generate_profile() {
(cd /root && ./wgcf generate) (cd /root && yes | ./wgcf generate 2>/dev/null)
[ -f "$WGCF_PROFILE" ] || { echo -e "${RED}Не создан профиль.${NC}"; return 1; } [ -f "$WGCF_PROFILE" ] || { echo -e "${RED}Не создан профиль.${NC}"; return 1; }
} }
@@ -1135,7 +1134,7 @@ bot_handle_callback() {
else else
docker exec "$CONTAINER" sh -c "wg-quick down '$AWG_WARP_CONF' 2>/dev/null || true" docker exec "$CONTAINER" sh -c "wg-quick down '$AWG_WARP_CONF' 2>/dev/null || true"
rm -f "$WGCF_ACCOUNT" 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 if [ -f "$WGCF_PROFILE" ]; then
local ep; ep=$(awg_resolve_endpoint 2>/dev/null) local ep; ep=$(awg_resolve_endpoint 2>/dev/null)
if [ -n "$ep" ]; then if [ -n "$ep" ]; then
@@ -1467,56 +1466,65 @@ show_menu() {
sc="$RED"; [[ "$st" == "Подключён" ]] && sc="$GREEN"; [[ "$st" == "Отключён" ]] && sc="$YELLOW" sc="$RED"; [[ "$st" == "Подключён" ]] && sc="$GREEN"; [[ "$st" == "Отключён" ]] && sc="$YELLOW"
local mode_label="3X-UI"; [ "$MODE" = "amnezia" ] && mode_label="AmneziaWG" local mode_label="3X-UI"; [ "$MODE" = "amnezia" ] && mode_label="AmneziaWG"
echo -e "${MAGENTA}******************************************************" echo -e "${MAGENTA}╔══════════════════════════════════════════════════════╗"
echo " anten-ka · WARP Manager v${WARP_VERSION} (${mode_label})" echo -e " anten-ka · WARP Manager v${WARP_VERSION} "
echo " YouTube: https://www.youtube.com/@antenkaru" echo -e " YouTube: https://www.youtube.com/@antenkaru"
echo -e "******************************************************${NC}" echo -e "╚══════════════════════════════════════════════════════╝${NC}"
echo -e "${WHITE}IP сервера: ${GREEN}${MY_IP}${NC} ${WHITE}WARP: ${sc}${st}${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 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 fi
if [ "$MODE" = "amnezia" ]; then if [ "$MODE" = "amnezia" ] && [ -n "${CONTAINER:-}" ]; then
echo -e "${WHITE}Контейнер: ${CYAN}${CONTAINER:-N/A}${NC}" echo -e " ${WHITE}Контейнер:${NC} ${CYAN}${CONTAINER}${NC}"
fi fi
echo -e "------------------------------------------------------"
echo -e "\n${CYAN}── WARP-ключ ──────────────────────────────────────────${NC}"
echo -e " 1) ${GREEN}Установить WARP${NC}" echo -e " 1) ${GREEN}Установить WARP${NC}"
echo -e " 2) ${CYAN}Запустить WARP${NC}" echo -e " 2) ${CYAN}Запустить WARP${NC}"
echo -e " 3) ${YELLOW}Остановить WARP${NC}" echo -e " 3) ${YELLOW}Остановить WARP${NC}"
echo -e " 4) 📊 ${WHITE}Статус${NC}" echo -e " 4) 📊 Статус"
echo -e " 5) 🔑 ${YELLOW}Перевыпуск ключа${NC}"
if [ "$MODE" = "3xui" ]; then if [ "$MODE" = "3xui" ]; then
echo -e " 5) 📋 ${CYAN}JSON для 3X-UI${NC}" echo -e "\n${CYAN}── 3X-UI ──────────────────────────────────────────────${NC}"
echo -e " 6) 🔑 ${YELLOW}Перевыпуск ключа${NC}" echo -e " 6) 📋 ${CYAN}JSON конфиг для 3X-UI${NC}"
echo -e " 7) 🔧 ${WHITE}Изменить порт SOCKS5${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}"
fi fi
echo -e " 8) 🤖 ${CYAN}Telegram Bot${NC}" if [ "$MODE" = "amnezia" ]; then
echo -e " 9) ${YELLOW}PROMO${NC}" echo -e "\n${CYAN}── AmneziaWG ──────────────────────────────────────────${NC}"
echo -e "10) ${MAGENTA}📚 Инструкция${NC}" echo -e " 6) ${GREEN} Добавить клиентов в WARP${NC}"
echo -e "11) ${RED}⚠ Полное удаление${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 " 0) Выход"
echo -e "------------------------------------------------------" echo -e "${CYAN}──────────────────────────────────────────────────────${NC}"
read -p " Выбор: " ch read -p " Выбор: " ch
case $ch in case $ch in
1) [ "$MODE" = "3xui" ] && install_warp_3xui || install_warp_awg ;; 1) [ "$MODE" = "3xui" ] && install_warp_3xui || install_warp_awg ;;
2) [ "$MODE" = "3xui" ] && start_warp_3xui || start_warp_awg ;; 2) [ "$MODE" = "3xui" ] && start_warp_3xui || start_warp_awg ;;
3) [ "$MODE" = "3xui" ] && stop_warp_3xui || stop_warp_awg ;; 3) [ "$MODE" = "3xui" ] && stop_warp_3xui || stop_warp_awg ;;
4) [ "$MODE" = "3xui" ] && show_status_3xui || show_status_awg ;; 4) [ "$MODE" = "3xui" ] && show_status_3xui || show_status_awg ;;
5) [ "$MODE" = "3xui" ] && show_xui_json || awg_add_clients_ssh ;; 5) [ "$MODE" = "3xui" ] && rekey_warp_3xui || rekey_warp_awg ;;
6) [ "$MODE" = "3xui" ] && rekey_warp_3xui || awg_remove_clients_ssh ;; 6) [ "$MODE" = "3xui" ] && show_xui_json || awg_add_clients_ssh ;;
7) [ "$MODE" = "3xui" ] && change_port_3xui || awg_show_clients_ssh ;; 7) [ "$MODE" = "3xui" ] && change_port_3xui || awg_remove_clients_ssh ;;
8) bot_menu ;; 8) [ "$MODE" = "amnezia" ] && awg_show_clients_ssh ;;
9) show_promo ;; 9) [ "$MODE" = "amnezia" ] && awg_restart_container ;;
10) show_info ;; 10) bot_menu ;;
11) full_uninstall ;; 11) show_promo ;;
12) [ "$MODE" = "amnezia" ] && rekey_warp_awg ;; 12) show_info ;;
13) [ "$MODE" = "amnezia" ] && awg_restart_container ;; 13) full_uninstall ;;
0) exit 0 ;; 0) exit 0 ;;
esac esac
done done