]> Git [git.vados.ru] :: Repos - Mikrotiks/ros.vados.ru.git/commitdiff
Autocommit in repo: ros.vados.ru, generated by owner: root, in 03:05:03 18.07.2026.
authorvados-dev <192440777+vados-dev@users.noreply.github.com>
Sat, 18 Jul 2026 00:05:03 +0000 (03:05 +0300)
committervados-dev <192440777+vados-dev@users.noreply.github.com>
Sat, 18 Jul 2026 00:05:03 +0000 (03:05 +0300)
html/AM-GlobalFunc.rsc
html/amneziawg/awg-manager-agent [new submodule]
html/amneziawg/potap1978/awg-manager-agent [new submodule]
html/amneziawg/potap1978/awg_client-go-ubuntu.sh [new file with mode: 0755]

index 2e9fa27605acdc76e9c5d96229534e72a83fb0c0..6b964fa24a9972b6347512adec6fd202c7b6618a 100644 (file)
@@ -17,9 +17,9 @@
 :global GlobalFuncReady false;
 
 # Git commit id & info, expected configuration version
-:global CommitId "main/736/80e2ca4c";
+:global CommitId "main/737/0c95d49c";
 :global CommitTAG "unknown";
-:global CommitInfo "Autocommit in repo: ros.vados.ru, generated by owner: root, in 02:35:04 15.07.2026.";
+:global CommitInfo "Autocommit in repo: ros.vados.ru, generated by owner: root, in 03:05:03 18.07.2026.";
 
 # The variables are received right here.
 :global GlobalConfVersion 140;
diff --git a/html/amneziawg/awg-manager-agent b/html/amneziawg/awg-manager-agent
new file mode 160000 (submodule)
index 0000000..1f79a06
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 1f79a06d04b42de32a20d6d52e630b41f1abcb22
diff --git a/html/amneziawg/potap1978/awg-manager-agent b/html/amneziawg/potap1978/awg-manager-agent
new file mode 160000 (submodule)
index 0000000..1f79a06
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 1f79a06d04b42de32a20d6d52e630b41f1abcb22
diff --git a/html/amneziawg/potap1978/awg_client-go-ubuntu.sh b/html/amneziawg/potap1978/awg_client-go-ubuntu.sh
new file mode 100755 (executable)
index 0000000..83c2c7b
--- /dev/null
@@ -0,0 +1,448 @@
+#!/bin/bash
+
+# ============================================
+# AmneziaWG Client Installer / Uninstaller
+# Автоматическая установка и удаление AmneziaWG на Ubuntu/Debian
+# ============================================
+
+set -e
+
+# Цвета для вывода
+RED='\033[0;31m'
+GREEN='\033[0;32m'
+YELLOW='\033[1;33m'
+BLUE='\033[0;34m'
+CYAN='\033[0;36m'
+MAGENTA='\033[0;35m'
+BOLD='\033[1m'
+NC='\033[0m'
+
+# Функции вывода
+print_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
+print_success() { echo -e "${GREEN}[OK]${NC} $1"; }
+print_warning() { echo -e "${YELLOW}[WARN]${NC} $1"; }
+print_error() { echo -e "${RED}[ERROR]${NC} $1"; }
+
+# Функция проверки успешности
+check_success() {
+    if [ $? -eq 0 ]; then
+        print_success "$1"
+    else
+        print_error "$1"
+        exit 1
+    fi
+}
+
+#echo -e "$YELLOW ⚠️  ВАЖНО:                                                                 ║"
+#echo -e $YELLOW ⚠⚠
+
+# ============================================
+# ЗАГОЛОВОК
+# ============================================
+show_header() {
+    clear
+    echo -e "${CYAN}${BOLD}"
+    echo "╔══════════════════════════════════════════════════════════════════════════════╗"
+    echo "║                                                                              ║"
+    echo "║   █████╗ ███╗   ███╗███╗   ██╗███████╗███████╗██╗ █████╗ ██╗    ██╗ ██████╗  ║"
+    echo "║  ██╔══██╗████╗ ████║████╗  ██║╚══███╔╝██╔════╝██║██╔══██╗██║    ██║██╔════╝  ║"
+    echo "║  ███████║██╔████╔██║██╔██╗ ██║  ███╔╝ █████╗  ██║███████║██║ █╗ ██║██║  ███╗ ║"
+    echo "║  ██╔══██║██║╚██╔╝██║██║╚██╗██║ ███╔╝  ██╔══╝  ██║██╔══██║██║███╗██║██║   ██║ ║"
+    echo "║  ██║  ██║██║ ╚═╝ ██║██║ ╚████║███████╗███████╗██║██║  ██║╚███╔███╔╝╚██████╔╝ ║"
+    echo "║  ╚═╝  ╚═╝╚═╝     ╚═╝╚═╝  ╚═══╝╚══════╝╚══════╝╚═╝╚═╝  ╚═╝ ╚══╝╚══╝  ╚═════╝  ║"
+    echo "║                                                                              ║"
+    echo "║                Установка / Удаление AmneziaWG Client                         ║"
+    echo "║                           v1.0.0                                             ║"
+    echo "║                                                                              ║"
+    echo "║              ✨ Передай привеД ПОТАПу ! ✨                                    ║"
+    echo "║                                                                              ║"
+    echo "╚══════════════════════════════════════════════════════════════════════════════╝${NC}"
+    echo ""
+}
+
+# ============================================
+# МЕНЮ
+# ============================================
+show_menu() {
+    echo -e "${CYAN}${BOLD}┌──────────────────────────────────────────────────────────────────────────────────────┐${NC}"
+    echo -e "${CYAN}${BOLD}│                              📋 ГЛАВНОЕ МЕНЮ                                          │${NC}"
+    echo -e "${CYAN}${BOLD}└──────────────────────────────────────────────────────────────────────────────────────┘${NC}"
+    echo ""
+    echo -e "  ${GREEN}1${NC}) Установить AmneziaWG"
+    echo -e "  ${RED}2${NC}) Удалить AmneziaWG"
+    echo -e "  ${YELLOW}0${NC}) Выход"
+    echo ""
+    read -p "👉 Выберите пункт меню [0-2]: " choice
+    echo ""
+    
+    case $choice in
+        1)
+            install_amneziawg
+            ;;
+        2)
+            uninstall_amneziawg
+            ;;
+        0)
+            echo -e "${GREEN}До свидания!${NC}"
+            exit 0
+            ;;
+        *)
+            print_error "Неверный выбор. Попробуйте снова."
+            sleep 2
+            show_menu
+            ;;
+    esac
+}
+
+# ============================================
+# ФУНКЦИЯ УСТАНОВКИ
+# ============================================
+install_amneziawg() {
+    clear
+    show_header
+    
+    # Проверка прав root
+    if [ "$EUID" -ne 0 ]; then 
+        print_error "Запустите скрипт от root (sudo ./install_amneziawg.sh)"
+        exit 1
+    fi
+    
+    # ============================================
+    # УСТАНОВКА ЗАВИСИМОСТЕЙ
+    # ============================================
+    echo ""
+    echo -e "${CYAN}${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
+    echo -e "${CYAN}${BOLD}                         📦 УСТАНОВКА ЗАВИСИМОСТЕЙ                                           ${NC}"
+    echo -e "${CYAN}${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
+    echo -e "${MAGENTA}✨ Передай привеД ПОТАПу ! ✨${NC}"
+    echo ""
+    
+    print_info "Обновление списка пакетов..."
+    apt update -qq
+    
+    print_info "Установка зависимостей..."
+    
+    # Установка с игнорированием openresolv
+    if ! apt install -y git build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison make mokutil dkms qrencode iptables 2>/dev/null; then
+        print_warning "Повторная попытка без openresolv..."
+        apt install -y git build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison make mokutil dkms qrencode iptables
+    fi
+    check_success "Установка зависимостей"
+    
+    # Установка MC если нет
+    if ! command -v mcedit &> /dev/null; then
+        print_info "Установка Midnight Commander..."
+        apt install -y mc > /dev/null 2>&1
+        check_success "Установка Midnight Commander"
+    fi
+    
+    # ============================================
+    # УСТАНОВКА AMNEZIAWG-TOOLS
+    # ============================================
+    echo ""
+    echo -e "${CYAN}${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
+    echo -e "${CYAN}${BOLD}                         🔧 УСТАНОВКА AMNEZIANG-TOOLS                                        ${NC}"
+    echo -e "${CYAN}${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
+    echo -e "${MAGENTA}✨ Передай привеД ПОТАПу ! ✨${NC}"
+    echo ""
+    
+    cd /tmp
+    print_info "Загрузка amneziawg-tools..."
+    wget -q https://github.com/amnezia-vpn/amneziawg-tools/archive/refs/tags/v1.0.20260223.tar.gz
+    check_success "Загрузка amneziawg-tools"
+    
+    tar xvfz v1.0.20260223.tar.gz > /dev/null 2>&1
+    cd amneziawg-tools-1.0.20260223/src
+    
+    print_info "Сборка amneziawg-tools..."
+    make > /dev/null 2>&1
+    make install > /dev/null 2>&1
+    check_success "Установка amneziawg-tools"
+    
+    # ============================================
+    # УСТАНОВКА GO
+    # ============================================
+    echo ""
+    echo -e "${CYAN}${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
+    echo -e "${CYAN}${BOLD}                         🐹 УСТАНОВКА GO                                                     ${NC}"
+    echo -e "${CYAN}${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
+    echo -e "${MAGENTA}✨ Передай привеД ПОТАПу ! ✨${NC}"
+    echo ""
+    
+    cd /tmp
+    if [ ! -f "/usr/local/bin/go" ]; then
+        print_info "Загрузка Go..."
+        wget -q https://go.dev/dl/go1.22.3.linux-amd64.tar.gz
+        check_success "Загрузка Go"
+        
+        tar xvfz go1.22.3.linux-amd64.tar.gz > /dev/null 2>&1
+        mv go /opt/go1.22.3
+        ln -s /opt/go1.22.3/bin/go /usr/local/bin/go
+        check_success "Установка Go"
+    else
+        print_success "Go уже установлен"
+    fi
+    
+    # ============================================
+    # УСТАНОВКА AMNEZIAWG-GO
+    # ============================================
+    echo ""
+    echo -e "${CYAN}${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
+    echo -e "${CYAN}${BOLD}                         🚀 УСТАНОВКА AMNEZIANG-GO                                           ${NC}"
+    echo -e "${CYAN}${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
+    echo -e "${MAGENTA}✨ Передай привеД ПОТАПу ! ✨${NC}"
+    echo ""
+    
+    cd /tmp
+    print_info "Загрузка amneziawg-go..."
+    wget -q https://github.com/amnezia-vpn/amneziawg-go/archive/refs/tags/v0.2.16.tar.gz
+    check_success "Загрузка amneziawg-go"
+    
+    tar xvfz v0.2.16.tar.gz > /dev/null 2>&1
+    cd amneziawg-go-0.2.16
+    
+    print_info "Сборка amneziawg-go..."
+    make > /dev/null 2>&1
+    cp amneziawg-go /usr/local/bin
+    check_success "Установка amneziawg-go"
+    
+    # ============================================
+    # СОЗДАНИЕ ДИРЕКТОРИИ ДЛЯ КОНФИГОВ
+    # ============================================
+    mkdir -p /etc/amnezia/amneziawg
+    
+    # ============================================
+    # РЕДАКТИРОВАНИЕ КОНФИГУРАЦИИ
+    # ============================================
+    echo ""
+    echo -e "${YELLOW}${BOLD}"
+    echo "╔══════════════════════════════════════════════════════════════════════════════╗"
+    echo "║                                                                              ║"
+    echo "║   🔧  ОТКРЫТИЕ ФАЙЛА КОНФИГУРАЦИИ  🔧                                        ║"
+    echo "║                                                                              ║"
+    echo "║   📁 Файл: /etc/amnezia/amneziawg/awg0.conf                                  ║"
+    echo "║                                                                              ║"
+    echo "║   ⚠️  ВАЖНО:                                                                 ║"
+    echo "║   ─────────────────────────────────────────────────────────────────────       ║"
+    echo "║   1️⃣  Вставьте конфигурацию клиента AmneziaWG (полностью)                    ║"
+    echo -e "║   2️⃣  Сохраните файл:  ${GREEN}F2${YELLOW}  или  ${GREEN}Ctrl + S${YELLOW}                                    ║"
+    echo -e "║   3️⃣  Закройте редактор:  ${GREEN}F10${YELLOW}  или  ${GREEN}Ctrl + X${YELLOW}                                ║"
+    echo "║                                                                              ║"
+    echo "║   ✅ После сохранения и выхода установка продолжится автоматически           ║"
+    echo "║                                                                              ║"
+    echo "║              ✨ Передай привеД ПОТАПу ! ✨                                    ║"
+    echo "║                                                                              ║"
+    echo "╚══════════════════════════════════════════════════════════════════════════════╝${NC}"
+    echo ""
+    echo -e "${YELLOW}👉 Нажмите Enter для открытия редактора...${NC}"
+    read -p ""
+    
+    mcedit /etc/amnezia/amneziawg/awg0.conf
+    
+    # ============================================
+    # ПРОВЕРКА КОНФИГУРАЦИИ
+    # ============================================
+    if [ ! -s /etc/amnezia/amneziawg/awg0.conf ]; then
+        echo ""
+        print_error "Файл конфигурации пуст! Установка прервана."
+        echo -e "${YELLOW}👉 Запустите скрипт заново и добавьте конфигурацию.${NC}"
+        exit 1
+    fi
+    
+    print_success "Конфигурация сохранена"
+    
+    # ============================================
+    # ЗАПУСК VPN
+    # ============================================
+    echo ""
+    echo -e "${CYAN}${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
+    echo -e "${CYAN}${BOLD}                         🚀 ЗАПУСК VPN                                                     ${NC}"
+    echo -e "${CYAN}${BOLD}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
+    echo -e "${MAGENTA}✨ Передай привеД ПОТАПу ! ✨${NC}"
+    echo ""
+    
+    print_info "Запуск AmneziaWG..."
+    awg-quick up awg0 2>&1
+    
+    # ============================================
+    # ПРОВЕРКА СТАТУСА
+    # ============================================
+    sleep 2
+    
+    if ip link show awg0 > /dev/null 2>&1; then
+        # Получаем внешний IP
+        EXTERNAL_IP=$(curl -s --max-time 5 https://api.ipify.org 2>/dev/null || curl -s --max-time 5 https://ifconfig.me 2>/dev/null || echo "не удалось определить")
+        
+        echo ""
+        echo -e "${GREEN}${BOLD}"
+        echo "╔══════════════════════════════════════════════════════════════════════════════╗"
+        echo "║                                                                              ║"
+        echo "║                     ✅  VPN УСПЕШНО ЗАПУЩЕН!  ✅                             ║"
+        echo "║                                                                              ║"
+        echo "║   📡 Интерфейс: awg0                                                         ║"
+        IP_ADDR=$(ip addr show awg0 2>/dev/null | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
+        if [ ! -z "$IP_ADDR" ]; then
+            echo "║   🌐 Локальный IP: $IP_ADDR                                                ║"
+        fi
+        echo "║   🌍 Внешний IP:  $EXTERNAL_IP                                                ║"
+        echo "║                                                                              ║"
+        echo "║   🔧 Управление:                                                             ║"
+        echo "║      • Остановка:  awg-quick down awg0                                       ║"
+        echo "║      • Статус:     awg-quick status awg0                                     ║"
+        echo "║      • Логи:       journalctl -u awg-quick@awg0 -f                          ║"
+        echo "║                                                                              ║"
+        echo "║              ✨ Передай привеД ПОТАПу ! ✨                                    ║"
+        echo "║                                                                              ║"
+        echo "╚══════════════════════════════════════════════════════════════════════════════╝"
+        echo -e "${NC}"
+        echo ""
+    else
+        echo ""
+        echo -e "${RED}${BOLD}"
+        echo "╔══════════════════════════════════════════════════════════════════════════════╗"
+        echo "║                                                                              ║"
+        echo "║                     ❌  VPN НЕ ЗАПУЩЕН!  ❌                                   ║"
+        echo "║                                                                              ║"
+        echo "║   🔍 Возможные причины:                                                      ║"
+        echo "║      • Неверная конфигурация в файле                                         ║"
+        echo "║      • Проблемы с сетью или портами                                          ║"
+        echo "║                                                                              ║"
+        echo "║   🔧 Для диагностики выполните:                                              ║"
+        echo "║      awg-quick up awg0                                                       ║"
+        echo "║      journalctl -xe                                                          ║"
+        echo "║                                                                              ║"
+        echo "║              ✨ Передай привеД ПОТАПу ! ✨                                    ║"
+        echo "║                                                                              ║"
+        echo "╚══════════════════════════════════════════════════════════════════════════════╝"
+        echo -e "${NC}"
+        echo ""
+        exit 1
+    fi
+    
+    # ============================================
+    # ЗАВЕРШЕНИЕ
+    # ============================================
+    echo -e "${GREEN}✅ Установка AmneziaWG успешно завершена!${NC}"
+    echo -e "${MAGENTA}✨ Передай привеД ПОТАПу ! ✨${NC}"
+    echo ""
+    
+    read -p "👉 Нажмите Enter для возврата в главное меню..."
+    show_menu
+}
+
+# ============================================
+# ФУНКЦИЯ УДАЛЕНИЯ
+# ============================================
+uninstall_amneziawg() {
+    clear
+    show_header
+    
+    echo -e "${RED}${BOLD}"
+    echo "╔══════════════════════════════════════════════════════════════════════════════╗"
+    echo "║                                                                              ║"
+    echo "║                     🗑️  УДАЛЕНИЕ AMNEZIAWG  🗑️                               ║"
+    echo "║                                                                              ║"
+    echo "║   ⚠️  ВНИМАНИЕ!                                                              ║"
+    echo "║   ─────────────────────────────────────────────────────────────────────       ║"
+    echo "║   Будет удалено:                                                             ║"
+    echo "║   • amneziawg-tools (скомпилированный)                                       ║"
+    echo "║   • amneziawg-go (скомпилированный)                                          ║"
+    echo "║   • Go (установленный в /opt/go1.22.3)                                       ║"
+    echo "║   • Конфигурационные файлы (/etc/amnezia/)                                   ║"
+    echo "║   • Временные файлы сборки                                                   ║"
+    echo "║                                                                              ║"
+    echo "║   ✅ Зависимости (apt install) останутся нетронутыми                         ║"
+    echo "║                                                                              ║"
+    echo "║              ✨ Передай привеД ПОТАПу ! ✨                                    ║"
+    echo "║                                                                              ║"
+    echo "╚══════════════════════════════════════════════════════════════════════════════╝${NC}"
+    echo ""
+    
+    read -p "👉 Вы уверены, что хотите удалить AmneziaWG? (y/N): " confirm
+    
+    if [[ ! "$confirm" =~ ^[Yy]$ ]]; then
+        print_info "Удаление отменено"
+        read -p "👉 Нажмите Enter для возврата в главное меню..."
+        show_menu
+        return
+    fi
+    
+    echo ""
+    print_info "Начинаю удаление AmneziaWG..."
+    
+    # Остановка VPN если запущен
+    if ip link show awg0 > /dev/null 2>&1; then
+        print_info "Остановка VPN интерфейса awg0..."
+        awg-quick down awg0 2>/dev/null || true
+        print_success "VPN остановлен"
+    fi
+    
+    # Удаление amneziawg-go
+    if [ -f "/usr/local/bin/amneziawg-go" ]; then
+        print_info "Удаление amneziawg-go..."
+        rm -f /usr/local/bin/amneziawg-go
+        print_success "amneziawg-go удалён"
+    fi
+    
+    # Удаление amneziawg-tools (awg, awg-quick и др.)
+    print_info "Удаление amneziawg-tools..."
+    rm -f /usr/local/bin/awg
+    rm -f /usr/local/bin/awg-quick
+    rm -f /usr/local/bin/awg-genkey
+    rm -f /usr/local/bin/awg-pubkey
+    rm -f /usr/local/bin/awg-show
+    rm -f /usr/local/bin/awg-syncconf
+    print_success "amneziawg-tools удалены"
+    
+    # Удаление Go
+    if [ -d "/opt/go1.22.3" ]; then
+        print_info "Удаление Go..."
+        rm -rf /opt/go1.22.3
+        rm -f /usr/local/bin/go
+        print_success "Go удалён"
+    fi
+    
+    # Удаление конфигурационных файлов
+    if [ -d "/etc/amnezia" ]; then
+        print_info "Удаление конфигурационных файлов..."
+        rm -rf /etc/amnezia
+        print_success "Конфигурационные файлы удалены"
+    fi
+    
+    # Удаление временных файлов сборки
+    print_info "Очистка временных файлов..."
+    rm -rf /tmp/amneziawg-tools-*
+    rm -rf /tmp/amneziawg-go-*
+    rm -f /tmp/v1.0.20260223.tar.gz
+    rm -f /tmp/v0.2.16.tar.gz
+    rm -f /tmp/go1.22.3.linux-amd64.tar.gz
+    print_success "Временные файлы удалены"
+    
+    echo ""
+    echo -e "${GREEN}${BOLD}"
+    echo "╔══════════════════════════════════════════════════════════════════════════════╗"
+    echo "║                                                                              ║"
+    echo "║                     ✅  AMNEZIAWG УСПЕШНО УДАЛЁН!  ✅                         ║"
+    echo "║                                                                              ║"
+    echo "║   🧹 Удалено:                                                               ║"
+    echo "║      • amneziawg-tools и amneziawg-go                                        ║"
+    echo "║      • Go (из /opt/go1.22.3)                                                 ║"
+    echo "║      • Конфигурация (/etc/amnezia/)                                          ║"
+    echo "║                                                                              ║"
+    echo "║   📦 Системные зависимости (apt) остались установленными                     ║"
+    echo "║                                                                              ║"
+    echo "║              ✨ Передай привеД ПОТАПу ! ✨                                    ║"
+    echo "║                                                                              ║"
+    echo "╚══════════════════════════════════════════════════════════════════════════════╝"
+    echo -e "${NC}"
+    echo ""
+    
+    read -p "👉 Нажмите Enter для возврата в главное меню..."
+    show_menu
+}
+
+# ============================================
+# ЗАПУСК
+# ============================================
+show_header
+show_menu