--- /dev/null
+#!/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