feat: beautiful UI redesign with icons, colors, and improved UX

 Added:
- Beautiful gradient banner with colors
- Icons for all menu items (🔧 🚀 ⚖️ 🌐 etc)
- Improved color scheme with better contrast
- Enhanced logging with icons (✓ ✗ ⚠ ℹ)
- Better spinner animation
- Structured menu sections with boxes
- Descriptions for all menu items

🎨 Changed:
- Redesigned main menu with sections
- Redesigned install menu with icons
- Redesigned reverse-proxy-manager menu
- Updated banner.sh with gradient effects
- Enhanced visual hierarchy

💅 Improved:
- Better readability with spacing
- Consistent icon usage
- Professional look and feel
- User-friendly interface

Co-Authored-By: Claude Sonnet 4 <noreply@anthropic.com>
This commit is contained in:
houseassassin
2026-04-25 10:45:08 +03:00
parent bf0819aea9
commit 7e53b6ca34
3 changed files with 354 additions and 97 deletions
Regular → Executable
+143 -21
View File
@@ -1,30 +1,152 @@
#!/bin/bash #!/bin/bash
# Proxy-Core Banner # Proxy-Core Beautiful Banner
# Version: 2.1.1
# Author: houseassassin # Author: houseassassin
show_banner() { # Colors
CYAN='\033[0;36m'
MAGENTA='\033[0;35m'
YELLOW='\033[1;33m'
GREEN='\033[0;32m'
BLUE='\033[0;34m'
RED='\033[0;31m'
WHITE='\033[1;37m'
GRAY='\033[0;90m'
NC='\033[0m'
# Gradient effect
show_gradient_banner() {
clear clear
echo -e "\033[1;36m"
cat << "EOF"
╔═══════════════════════════════════════════════════════════════════╗
║ ██████╗ ██████╗ ██████╗ ██╗ ██╗██╗ ██╗ ██████╗ ██████╗ ║
║ ██╔══██╗██╔══██╗██╔═══██╗╚██╗██╔╝╚██╗ ██╔╝ ██╔════╝██╔═══██╗║
║ ██████╔╝██████╔╝██║ ██║ ╚███╔╝ ╚████╔╝█████╗██║ ██║ ██║║
║ ██╔═══╝ ██╔══██╗██║ ██║ ██╔██╗ ╚██╔╝ ╚════╝██║ ██║ ██║║
║ ██║ ██║ ██║╚██████╔╝██╔╝ ██╗ ██║ ╚██████╗╚██████╔╝║
║ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ║
║ ║
║ Advanced VPN & Proxy Panel Auto-Installer ║
╚═══════════════════════════════════════════════════════════════════╝
EOF
echo -e "\033[0m"
echo -e "\033[1;32mVersion: 2.0.0\033[0m"
echo -e "\033[1;33mAuthor: houseassassin\033[0m"
echo -e "\033[1;34mGitHub: https://github.com/houseassassin/proxy-core\033[0m"
echo "" echo ""
echo -e "\033[0;36m────────────────────────────────────────────────────────────────────\033[0m" echo -e "${CYAN}╔═══════════════════════════════════════════════════════════════════════╗${NC}"
echo -e "${CYAN}${MAGENTA} ██████╗ ██████╗ ██████╗ ██╗ ██╗██╗ ██╗ ██████╗ ██████╗ ${CYAN}${NC}"
echo -e "${CYAN}${MAGENTA} ██╔══██╗██╔══██╗██╔═══██╗╚██╗██╔╝╚██╗ ██╔╝ ██╔════╝██╔═══██╗ ${CYAN}${NC}"
echo -e "${CYAN}${BLUE} ██████╔╝██████╔╝██║ ██║ ╚███╔╝ ╚████╔╝█████╗██║ ██║ ██║ ${CYAN}${NC}"
echo -e "${CYAN}${BLUE} ██╔═══╝ ██╔══██╗██║ ██║ ██╔██╗ ╚██╔╝ ╚════╝██║ ██║ ██║ ${CYAN}${NC}"
echo -e "${CYAN}${CYAN} ██║ ██║ ██║╚██████╔╝██╔╝ ██╗ ██║ ╚██████╗╚██████╔╝ ${CYAN}${NC}"
echo -e "${CYAN}${CYAN} ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ${CYAN}${NC}"
echo -e "${CYAN}║ ║${NC}"
echo -e "${CYAN}${WHITE} 🚀 Advanced VPN & Proxy Panel Auto-Installer 🚀 ${CYAN}${NC}"
echo -e "${CYAN}╚═══════════════════════════════════════════════════════════════════════╝${NC}"
echo ""
echo -e " ${GREEN}┌─────────────────────────────────────────────────────────────────┐${NC}"
echo -e " ${GREEN}${NC} ${YELLOW}Version:${NC} ${WHITE}2.1.1${NC} ${GREEN}${NC}"
echo -e " ${GREEN}${NC} ${YELLOW}Author:${NC} ${WHITE}houseassassin${NC} ${GREEN}${NC}"
echo -e " ${GREEN}${NC} ${YELLOW}GitHub:${NC} ${BLUE}https://github.com/houseassassin/proxy-core${NC} ${GREEN}${NC}"
echo -e " ${GREEN}└─────────────────────────────────────────────────────────────────┘${NC}"
echo "" echo ""
} }
show_banner # Animated loading
show_loading() {
local text="$1"
local duration=${2:-2}
local frames=("⠋" "⠙" "⠹" "⠸" "⠼" "⠴" "⠦" "⠧" "⠇" "⠏")
local end=$((SECONDS + duration))
while [ $SECONDS -lt $end ]; do
for frame in "${frames[@]}"; do
echo -ne "\r ${CYAN}${frame}${NC} ${text}"
sleep 0.1
done
done
echo -ne "\r ${GREEN}${NC} ${text}\n"
}
# Progress bar
show_progress() {
local current=$1
local total=$2
local width=50
local percentage=$((current * 100 / total))
local completed=$((width * current / total))
local remaining=$((width - completed))
echo -ne "\r ${CYAN}["
printf "%${completed}s" | tr ' ' '█'
printf "%${remaining}s" | tr ' ' '░'
echo -ne "]${NC} ${WHITE}${percentage}%${NC}"
if [ $current -eq $total ]; then
echo ""
fi
}
# Success box
show_success() {
local message="$1"
echo ""
echo -e " ${GREEN}╔═══════════════════════════════════════════════════════════════╗${NC}"
echo -e " ${GREEN}${NC} ${WHITE}${NC} ${message}${GREEN}"
echo -e " ${GREEN}╚═══════════════════════════════════════════════════════════════╝${NC}"
echo ""
}
# Error box
show_error() {
local message="$1"
echo ""
echo -e " ${RED}╔═══════════════════════════════════════════════════════════════╗${NC}"
echo -e " ${RED}${NC} ${WHITE}${NC} ${message}${RED}"
echo -e " ${RED}╚═══════════════════════════════════════════════════════════════╝${NC}"
echo ""
}
# Info box
show_info() {
local message="$1"
echo ""
echo -e " ${BLUE}╔═══════════════════════════════════════════════════════════════╗${NC}"
echo -e " ${BLUE}${NC} ${WHITE}${NC} ${message}${BLUE}"
echo -e " ${BLUE}╚═══════════════════════════════════════════════════════════════╝${NC}"
echo ""
}
# Warning box
show_warning() {
local message="$1"
echo ""
echo -e " ${YELLOW}╔═══════════════════════════════════════════════════════════════╗${NC}"
echo -e " ${YELLOW}${NC} ${WHITE}${NC} ${message}${YELLOW}"
echo -e " ${YELLOW}╚═══════════════════════════════════════════════════════════════╝${NC}"
echo ""
}
# Menu header
show_menu_header() {
local title="$1"
echo ""
echo -e " ${MAGENTA}╔═══════════════════════════════════════════════════════════════╗${NC}"
echo -e " ${MAGENTA}${NC} ${WHITE}${title}${MAGENTA}"
echo -e " ${MAGENTA}╚═══════════════════════════════════════════════════════════════╝${NC}"
echo ""
}
# Menu item
show_menu_item() {
local number="$1"
local icon="$2"
local text="$3"
local description="$4"
echo -e " ${CYAN}${number}.${NC} ${icon} ${WHITE}${text}${NC}"
if [ -n "$description" ]; then
echo -e " ${GRAY}${description}${NC}"
fi
}
# Separator
show_separator() {
echo -e " ${GRAY}─────────────────────────────────────────────────────────────────${NC}"
}
# Export functions
export -f show_gradient_banner show_loading show_progress
export -f show_success show_error show_info show_warning
export -f show_menu_header show_menu_item show_separator
# Run if executed directly
if [ "${BASH_SOURCE[0]}" = "${0}" ]; then
show_gradient_banner
fi
+119 -30
View File
@@ -15,7 +15,7 @@ SCRIPT_VERSION="2.1.1"
PROJECT_DIR="/opt/proxy-core" PROJECT_DIR="/opt/proxy-core"
LANG_FILE="${PROJECT_DIR}/.selected_language" LANG_FILE="${PROJECT_DIR}/.selected_language"
# Colors # Colors and styles
RED='\033[0;31m' RED='\033[0;31m'
GREEN='\033[0;32m' GREEN='\033[0;32m'
YELLOW='\033[1;33m' YELLOW='\033[1;33m'
@@ -23,32 +23,61 @@ BLUE='\033[0;34m'
MAGENTA='\033[0;35m' MAGENTA='\033[0;35m'
CYAN='\033[0;36m' CYAN='\033[0;36m'
GRAY='\033[0;90m' GRAY='\033[0;90m'
WHITE='\033[1;37m'
NC='\033[0m' NC='\033[0m'
# Styles
BOLD='\033[1m'
DIM='\033[2m'
UNDERLINE='\033[4m'
BLINK='\033[5m'
# Background colors
BG_RED='\033[41m'
BG_GREEN='\033[42m'
BG_BLUE='\033[44m'
BG_MAGENTA='\033[45m'
BG_CYAN='\033[46m'
# Create project directory first # Create project directory first
mkdir -p "$PROJECT_DIR" mkdir -p "$PROJECT_DIR"
# Logging # Logging
LOGFILE="${PROJECT_DIR}/installer.log" LOGFILE="${PROJECT_DIR}/installer.log"
log() { echo -e "${GREEN}[INFO]${NC} $1" | tee -a "$LOGFILE"; } log() {
warn() { echo -e "${YELLOW}[WARN]${NC} $1" | tee -a "$LOGFILE"; } echo -e " ${CYAN}${NC} ${WHITE}$1${NC}"
error() { echo -e "${RED}[ERROR]${NC} $1" | tee -a "$LOGFILE"; exit 1; } echo "[$(date '+%Y-%m-%d %H:%M:%S')] [INFO] $1" >> "$LOGFILE" 2>/dev/null
success() { echo -e "${GREEN}[SUCCESS]${NC} $1" | tee -a "$LOGFILE"; } }
warn() {
echo -e " ${YELLOW}${NC} ${YELLOW}$1${NC}"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [WARN] $1" >> "$LOGFILE" 2>/dev/null
}
error() {
echo -e " ${RED}${NC} ${RED}$1${NC}"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [ERROR] $1" >> "$LOGFILE" 2>/dev/null
}
success() {
echo -e " ${GREEN}${NC} ${GREEN}$1${NC}"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [SUCCESS] $1" >> "$LOGFILE" 2>/dev/null
}
# Spinner animation # Spinner animation
spinner() { spinner() {
local pid=$1 local pid=$1
local text=$2 local text=$2
local spinstr='⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏' local frames=("⠋" "⠙" "⠹" "⠸" "⠼" "⠴" "⠦" "⠧" "⠇" "⠏")
while kill -0 "$pid" 2>/dev/null; do while kill -0 "$pid" 2>/dev/null; do
for (( i=0; i<${#spinstr}; i++ )); do for frame in "${frames[@]}"; do
printf "\r${GREEN}[%s]${NC} %s" "${spinstr:$i:1}" "$text" printf "\r ${CYAN}${frame}${NC} ${WHITE}%s${NC}" "$text"
sleep 0.1 sleep 0.1
done done
done done
printf "\r\033[K" printf "\r ${GREEN}${NC} ${WHITE}%s${NC}\n" "$text"
} }
# Language support # Language support
@@ -631,34 +660,94 @@ EOF
# Main menu # Main menu
show_main_menu() { show_main_menu() {
clear SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
echo -e "${MAGENTA}╔════════════════════════════════════════╗${NC}"
echo -e "${MAGENTA}$(L MENU_TITLE)${NC}" # Source banner
echo -e "${MAGENTA}║ Version: ${SCRIPT_VERSION}${NC}" if [ -f "$SCRIPT_DIR/banner.sh" ]; then
echo -e "${MAGENTA}╚════════════════════════════════════════╝${NC}" source "$SCRIPT_DIR/banner.sh"
show_gradient_banner
else
clear
echo -e "${MAGENTA}╔════════════════════════════════════════╗${NC}"
echo -e "${MAGENTA}║ 🚀 Proxy-Core Installer ║${NC}"
echo -e "${MAGENTA}║ Version: ${SCRIPT_VERSION}${NC}"
echo -e "${MAGENTA}╚════════════════════════════════════════╝${NC}"
echo ""
fi
echo -e " ${CYAN}╔═══════════════════════════════════════════════════════════════╗${NC}"
echo -e " ${CYAN}${NC} ${WHITE}📦 УСТАНОВКА${NC} ${CYAN}${NC}"
echo -e " ${CYAN}╚═══════════════════════════════════════════════════════════════╝${NC}"
echo "" echo ""
echo -e "${YELLOW}1.${NC} $(L MENU_INSTALL)" echo -e " ${YELLOW}1.${NC} 🔧 ${WHITE}Установить панель${NC}"
echo -e "${YELLOW}2.${NC} $(L MENU_MANAGE)" echo -e " ${GRAY}WireGuard, 3x-ui, Remnawave, Hysteria2, MTProxy${NC}"
echo -e "${YELLOW}3.${NC} $(L MENU_BACKUP)" echo ""
echo -e "${YELLOW}4.${NC} $(L MENU_UPDATE)"
echo -e "${YELLOW}5.${NC} $(L MENU_UNINSTALL)" echo -e " ${CYAN}╔═══════════════════════════════════════════════════════════════╗${NC}"
echo -e "${YELLOW}6.${NC} $(L SELFSTEAL)" echo -e " ${CYAN}${NC} ${WHITE}⚙️ УПРАВЛЕНИЕ${NC} ${CYAN}${NC}"
echo -e "${YELLOW}9.${NC} Сменить язык / Change language" echo -e " ${CYAN}╚═══════════════════════════════════════════════════════════════╝${NC}"
echo -e "${YELLOW}0.${NC} $(L MENU_EXIT)" echo ""
echo -e " ${YELLOW}2.${NC} 🎮 ${WHITE}Управление сервисами${NC}"
echo -e " ${GRAY}Запуск, остановка, перезапуск панелей${NC}"
echo ""
echo -e " ${YELLOW}3.${NC} 💾 ${WHITE}Резервное копирование${NC}"
echo -e " ${GRAY}Создание и восстановление бэкапов${NC}"
echo ""
echo -e " ${YELLOW}4.${NC} 🔄 ${WHITE}Обновить компоненты${NC}"
echo -e " ${GRAY}Обновление установленных панелей${NC}"
echo ""
echo -e " ${CYAN}╔═══════════════════════════════════════════════════════════════╗${NC}"
echo -e " ${CYAN}${NC} ${WHITE}🌐 ДОПОЛНИТЕЛЬНО${NC} ${CYAN}${NC}"
echo -e " ${CYAN}╚═══════════════════════════════════════════════════════════════╝${NC}"
echo ""
echo -e " ${YELLOW}5.${NC} 🗑️ ${WHITE}Удалить панель${NC}"
echo -e " ${GRAY}Полное удаление установленных компонентов${NC}"
echo ""
echo -e " ${YELLOW}6.${NC} 🎭 ${WHITE}Установить Selfsteal${NC}"
echo -e " ${GRAY}Маскировка трафика под обычный сайт${NC}"
echo ""
echo -e " ${YELLOW}7.${NC} 🌐 ${WHITE}Настроить Reverse Proxy${NC}"
echo -e " ${GRAY}Nginx, Caddy, HAProxy - установка и настройка${NC}"
echo ""
echo -e " ${GRAY}─────────────────────────────────────────────────────────────────${NC}"
echo ""
echo -e " ${YELLOW}9.${NC} 🌍 ${WHITE}Сменить язык / Change language${NC}"
echo -e " ${YELLOW}0.${NC} 🚪 ${WHITE}Выход / Exit${NC}"
echo ""
echo -e " ${GRAY}─────────────────────────────────────────────────────────────────${NC}"
echo "" echo ""
} }
show_install_menu() { show_install_menu() {
clear clear
echo -e "${GREEN}$(L SELECT_PANEL)${NC}"
echo "" echo ""
echo -e "${YELLOW}1.${NC} $(L WIREGUARD)" echo -e " ${GREEN}╔═══════════════════════════════════════════════════════════════╗${NC}"
echo -e "${YELLOW}2.${NC} $(L 3XUI)" echo -e " ${GREEN}${NC} ${WHITE}📦 Выберите панель для установки${NC} ${GREEN}${NC}"
echo -e "${YELLOW}3.${NC} $(L REMNAWAVE)" echo -e " ${GREEN}╚═══════════════════════════════════════════════════════════════╝${NC}"
echo -e "${YELLOW}4.${NC} $(L HYSTERIA2)" echo ""
echo -e "${YELLOW}5.${NC} $(L MTPROXY)" echo -e " ${YELLOW}1.${NC} 🔐 ${WHITE}WireGuard VPN${NC}"
echo -e "${YELLOW}6.${NC} $(L ALL)" echo -e " ${GRAY}Современный, быстрый и безопасный VPN${NC}"
echo -e "${YELLOW}0.${NC} Назад / Back" echo ""
echo -e " ${YELLOW}2.${NC} 🌐 ${WHITE}3x-ui Panel${NC}"
echo -e " ${GRAY}VLESS, VMess, Trojan, Shadowsocks${NC}"
echo ""
echo -e " ${YELLOW}3.${NC} 🐳 ${WHITE}Remnawave Panel${NC}"
echo -e " ${GRAY}Современная панель с Docker${NC}"
echo ""
echo -e " ${YELLOW}4.${NC}${WHITE}Hysteria2 Proxy${NC}"
echo -e " ${GRAY}Высокоскоростной прокси с маскировкой${NC}"
echo ""
echo -e " ${YELLOW}5.${NC} 📱 ${WHITE}MTProxy (Telegram)${NC}"
echo -e " ${GRAY}Официальный прокси для Telegram${NC}"
echo ""
echo -e " ${GRAY}─────────────────────────────────────────────────────────────────${NC}"
echo ""
echo -e " ${YELLOW}6.${NC} 🚀 ${WHITE}Установить всё${NC}"
echo -e " ${GRAY}Последовательная установка всех панелей${NC}"
echo ""
echo -e " ${YELLOW}0.${NC} ⬅️ ${WHITE}Назад / Back${NC}"
echo "" echo ""
} }
+92 -46
View File
@@ -304,80 +304,126 @@ EOF
# Show configuration tips # Show configuration tips
show_tips() { show_tips() {
clear clear
echo -e "${MAGENTA}╔════════════════════════════════════════════════════════════╗${NC}" echo ""
echo -e "${MAGENTA}║ Подсказки по настройке Reverse Proxy ║${NC}" echo -e "${MAGENTA}╔════════════════════════════════════════════════════════════════════╗${NC}"
echo -e "${MAGENTA}╚════════════════════════════════════════════════════════════╝${NC}" echo -e "${MAGENTA}${NC} ${WHITE}💡 Подсказки по настройке Reverse Proxy${NC} ${MAGENTA}${NC}"
echo -e "${MAGENTA}╚════════════════════════════════════════════════════════════════════╝${NC}"
echo "" echo ""
echo -e "${CYAN}📌 Nginx${NC}" echo -e " ${CYAN}╔═══════════════════════════════════════════════════════════════╗${NC}"
echo " ✓ Лучший выбор для высоких нагрузок" echo -e " ${CYAN}${NC} ${WHITE}🔧 Nginx${NC} ${CYAN}${NC}"
echo " ✓ Отличное кэширование и обработка статики" echo -e " ${CYAN}╚═══════════════════════════════════════════════════════════════╝${NC}"
echo " ✓ Гибкая конфигурация" echo -e " ${GREEN}${NC} Лучший выбор для высоких нагрузок"
echo " ✗ Требует ручной настройки SSL" echo -e " ${GREEN}${NC} Отличное кэширование и обработка статики"
echo -e " ${GREEN}${NC} Гибкая конфигурация"
echo -e " ${RED}${NC} Требует ручной настройки SSL"
echo "" echo ""
echo -e "${CYAN}📌 Caddy${NC}" echo -e " ${CYAN}╔═══════════════════════════════════════════════════════════════╗${NC}"
echo " ✓ Автоматический SSL из коробки" echo -e " ${CYAN}${NC} ${WHITE}🚀 Caddy${NC} ${CYAN}${NC}"
echo " ✓ Простая конфигурация" echo -e " ${CYAN}╚═══════════════════════════════════════════════════════════════╝${NC}"
echo " ✓ HTTP/3 поддержка" echo -e " ${GREEN}${NC} Автоматический SSL из коробки"
echo " ✗ Меньше производительность чем Nginx" echo -e " ${GREEN}${NC} Простая конфигурация"
echo -e " ${GREEN}${NC} HTTP/3 поддержка"
echo -e " ${RED}${NC} Меньше производительность чем Nginx"
echo "" echo ""
echo -e "${CYAN}📌 HAProxy${NC}" echo -e " ${CYAN}╔═══════════════════════════════════════════════════════════════╗${NC}"
echo " ✓ Лучший для балансировки нагрузки" echo -e " ${CYAN}${NC} ${WHITE}⚖️ HAProxy${NC} ${CYAN}${NC}"
echo " ✓ TCP и HTTP режимы" echo -e " ${CYAN}╚═══════════════════════════════════════════════════════════════╝${NC}"
echo " ✓ Продвинутые health checks" echo -e " ${GREEN}${NC} Лучший для балансировки нагрузки"
echo " ✗ Не обрабатывает SSL (нужен Nginx/Caddy)" echo -e " ${GREEN}${NC} TCP и HTTP режимы"
echo -e " ${GREEN}${NC} Продвинутые health checks"
echo -e " ${RED}${NC} Не обрабатывает SSL (нужен Nginx/Caddy)"
echo "" echo ""
echo -e "${CYAN}📌 Гибридные решения${NC}" echo -e " ${CYAN}╔═══════════════════════════════════════════════════════════════╗${NC}"
echo " • Nginx + Caddy: статика + автоSSL" echo -e " ${CYAN}${NC} ${WHITE}🔄 Гибридные решения${NC} ${CYAN}${NC}"
echo " • HAProxy + Nginx: балансировка + кэш" echo -e " ${CYAN}╚═══════════════════════════════════════════════════════════════╝${NC}"
echo " • Caddy + HAProxy: автоSSL + балансировка" echo -e " ${BLUE}${NC} Nginx + Caddy: статика + автоSSL"
echo -e " ${BLUE}${NC} HAProxy + Nginx: балансировка + кэш"
echo -e " ${BLUE}${NC} Caddy + HAProxy: автоSSL + балансировка"
echo "" echo ""
echo -e "${YELLOW}Рекомендации:${NC}" echo -e " ${YELLOW}╔═══════════════════════════════════════════════════════════════╗${NC}"
echo " 1. Для простых VPN панелей: Caddy" echo -e " ${YELLOW}${NC} ${WHITE}📋 Рекомендации${NC} ${YELLOW}${NC}"
echo " 2. Для высоких нагрузок: Nginx" echo -e " ${YELLOW}╚═══════════════════════════════════════════════════════════════╝${NC}"
echo " 3. Для кластера серверов: HAProxy + Nginx" echo -e " ${WHITE}1.${NC} Для простых VPN панелей: ${GREEN}Caddy${NC}"
echo " 4. Для максимальной автоматизации: Caddy" echo -e " ${WHITE}2.${NC} Для высоких нагрузок: ${GREEN}Nginx${NC}"
echo -e " ${WHITE}3.${NC} Для кластера серверов: ${GREEN}HAProxy + Nginx${NC}"
echo -e " ${WHITE}4.${NC} Для максимальной автоматизации: ${GREEN}Caddy${NC}"
echo "" echo ""
read -p "Нажмите Enter для продолжения..." read -p " Нажмите Enter для продолжения..."
} }
# Main menu # Main menu
show_main_menu() { show_main_menu() {
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
clear clear
echo -e "${MAGENTA}╔════════════════════════════════════════════════════════════╗${NC}" echo ""
echo -e "${MAGENTA}║ Reverse Proxy Manager ║${NC}" echo -e "${CYAN}╔═══════════════════════════════════════════════════════════════════════╗${NC}"
echo -e "${MAGENTA} Version: 2.1.1${NC}" echo -e "${CYAN}${MAGENTA} 🌐 REVERSE PROXY MANAGER ${CYAN}${NC}"
echo -e "${MAGENTA}╚════════════════════════════════════════════════════════════╝${NC}" echo -e "${CYAN}${BLUE} Nginx • Caddy • HAProxy ${CYAN}${NC}"
echo -e "${CYAN}╚═══════════════════════════════════════════════════════════════════════╝${NC}"
echo "" echo ""
local installed=$(detect_installed_proxies) local installed=$(detect_installed_proxies)
echo -e "${CYAN}Установлено:${NC} ${installed:-нет}" if [ -n "$installed" ]; then
echo -e " ${GREEN}${NC} ${WHITE}Установлено:${NC} ${CYAN}${installed}${NC}"
else
echo -e " ${GRAY}${NC} ${GRAY}Ничего не установлено${NC}"
fi
echo "" echo ""
echo -e "${YELLOW}Установка:${NC}" echo -e " ${CYAN}╔═══════════════════════════════════════════════════════════════╗${NC}"
echo " 1) Установить Nginx" echo -e " ${CYAN}${NC} ${WHITE}📦 УСТАНОВКА${NC} ${CYAN}${NC}"
echo " 2) Установить Caddy" echo -e " ${CYAN}╚═══════════════════════════════════════════════════════════════╝${NC}"
echo " 3) Установить HAProxy" echo ""
echo -e " ${YELLOW}1.${NC} 🔧 ${WHITE}Установить Nginx${NC}"
echo -e " ${GRAY}Высокая производительность и кэширование${NC}"
echo ""
echo -e " ${YELLOW}2.${NC} 🚀 ${WHITE}Установить Caddy${NC}"
echo -e " ${GRAY}Автоматический SSL из коробки${NC}"
echo ""
echo -e " ${YELLOW}3.${NC} ⚖️ ${WHITE}Установить HAProxy${NC}"
echo -e " ${GRAY}Балансировка нагрузки${NC}"
echo "" echo ""
echo -e "${YELLOW}Настройка:${NC}" echo -e " ${CYAN}╔═══════════════════════════════════════════════════════════════╗${NC}"
echo " 4) Настроить Nginx для 3x-ui" echo -e " ${CYAN}${NC} ${WHITE}⚙️ НАСТРОЙКА${NC} ${CYAN}${NC}"
echo " 5) Настроить Caddy для 3x-ui" echo -e " ${CYAN}╚═══════════════════════════════════════════════════════════════╝${NC}"
echo " 6) Настроить HAProxy (балансировка)" echo ""
echo " 7) Настроить Nginx + Caddy (гибрид)" echo -e " ${YELLOW}4.${NC} 🌐 ${WHITE}Настроить Nginx для 3x-ui${NC}"
echo -e " ${GRAY}Автоматическая настройка с SSL${NC}"
echo ""
echo -e " ${YELLOW}5.${NC} 🔐 ${WHITE}Настроить Caddy для 3x-ui${NC}"
echo -e " ${GRAY}Автоматический HTTPS${NC}"
echo ""
echo -e " ${YELLOW}6.${NC} ⚖️ ${WHITE}Настроить HAProxy (балансировка)${NC}"
echo -e " ${GRAY}Распределение нагрузки между серверами${NC}"
echo ""
echo -e " ${YELLOW}7.${NC} 🔄 ${WHITE}Настроить Nginx + Caddy (гибрид)${NC}"
echo -e " ${GRAY}Статика + автоматический SSL${NC}"
echo "" echo ""
echo -e "${YELLOW}Информация:${NC}" echo -e " ${CYAN}╔═══════════════════════════════════════════════════════════════╗${NC}"
echo " 8) Показать подсказки" echo -e " ${CYAN}${NC} ${WHITE}️ ИНФОРМАЦИЯ${NC} ${CYAN}${NC}"
echo " 9) Статус сервисов" echo -e " ${CYAN}╚═══════════════════════════════════════════════════════════════╝${NC}"
echo ""
echo -e " ${YELLOW}8.${NC} 💡 ${WHITE}Показать подсказки${NC}"
echo -e " ${GRAY}Рекомендации по выбору${NC}"
echo ""
echo -e " ${YELLOW}9.${NC} 📊 ${WHITE}Статус сервисов${NC}"
echo -e " ${GRAY}Проверка работы установленных proxy${NC}"
echo "" echo ""
echo " 0) Выход" echo -e " ${GRAY}─────────────────────────────────────────────────────────────────${NC}"
echo ""
echo -e " ${YELLOW}0.${NC} 🚪 ${WHITE}Выход${NC}"
echo ""
echo -e " ${GRAY}─────────────────────────────────────────────────────────────────${NC}"
echo "" echo ""
} }