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:
@@ -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
@@ -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
@@ -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 ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user