#!/bin/bash # Скрипт обновления панелей # Version: 2.0.0 # Author: houseassassin # GitHub: https://github.com/houseassassin/proxy-core set -euo pipefail GREEN='\033[0;32m' RED='\033[0;31m' NC='\033[0m' print_msg() { echo -e "${GREEN}[INFO]${NC} $1" } print_error() { echo -e "${RED}[ERROR]${NC} $1" } run_remote_script() { local url=$1 local tmp_script tmp_script="$(mktemp /tmp/proxy-core-remote.XXXXXX.sh)" curl -fsSL "$url" -o "$tmp_script" chmod 700 "$tmp_script" bash "$tmp_script" rm -f "$tmp_script" } check_root() { if [[ $EUID -ne 0 ]]; then print_error "Требуются права root" exit 1 fi } update_3xui() { print_msg "Обновление 3x-ui..." run_remote_script "https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh" print_msg "3x-ui обновлен" } update_remnawave() { print_msg "Обновление Remnawave..." if [ ! -d "/opt/remnawave" ]; then print_error "Remnawave не установлен" return fi cd /opt/remnawave docker compose pull docker compose up -d docker image prune -f print_msg "Remnawave обновлен" } backup_configs() { print_msg "Создание резервной копии конфигураций..." BACKUP_DIR="/root/vpn-backup-$(date +%Y%m%d-%H%M%S)" mkdir -p "$BACKUP_DIR" [ -d "/etc/wireguard" ] && cp -r /etc/wireguard "$BACKUP_DIR/" [ -d "/opt/remnawave" ] && cp -r /opt/remnawave/config "$BACKUP_DIR/remnawave-config" [ -d "/usr/local/x-ui" ] && cp -r /usr/local/x-ui "$BACKUP_DIR/" print_msg "Резервная копия создана: $BACKUP_DIR" } show_menu() { clear echo "╔════════════════════════════════════════╗" echo "║ VPN Panel Updater ║" echo "╚════════════════════════════════════════╝" echo "" echo "1) Обновить 3x-ui" echo "2) Обновить Remnawave" echo "3) Обновить все" echo "4) Создать резервную копию" echo "5) Выход" echo "" read -p "Ваш выбор [1-5]: " choice } main() { check_root show_menu case $choice in 1) update_3xui ;; 2) update_remnawave ;; 3) update_3xui update_remnawave ;; 4) backup_configs ;; 5) print_msg "Выход..." exit 0 ;; *) print_error "Неверный выбор" exit 1 ;; esac } main