v2.2.1: redesign dashboard menu - no right borders, clean layout

This commit is contained in:
anten-ka
2026-04-08 21:05:46 +03:00
parent f445f7a27e
commit 364501d66d

View File

@@ -33,59 +33,68 @@ show_main_menu() {
port=$(get_config_value port 2>/dev/null || echo "443")
ip=$(get_server_ip 2>/dev/null || echo "N/A")
# Proxy badge
local proxy_badge
case "$proxy_status" in
running) proxy_badge="${GREEN}● Работает${NC}" ;;
stopped) proxy_badge="${YELLOW}○ Остановлен${NC}" ;;
*) proxy_badge="${RED}Не установлен${NC}" ;;
esac
# nginx badge
local nginx_badge
case "$nginx_st" in
running) nginx_badge="${GREEN}● nginx${NC}" ;;
*) nginx_badge="${RED}✗ nginx${NC}" ;;
esac
# Bot badge
local bot_badge
case "$bot_status" in
running) bot_badge="${GREEN}● Бот${NC}" ;;
stopped) bot_badge="${YELLOW}○ Бот${NC}" ;;
*) bot_badge="" ;;
esac
local W=60
local line; line=$(printf '━%.0s' $(seq 1 $W))
local line2; line2=$(printf '─%.0s' $(seq 1 $W))
# ── Заголовок ──
echo ""
echo -e " ${BOLD}${WHITE}╔══════════════════════════════════════════════════════════╗${NC}"
echo -e " ${BOLD}${WHITE}${NC} ${BOLD}GoTelegram v${GOTELEGRAM_VERSION}${NC}Мониторинг ${BOLD}${WHITE}${NC}"
echo -e " ${BOLD}${WHITE}╠══════════════════════════════════════════════════════════╣${NC}"
echo -e " ${BOLD}${CYAN}${line}${NC}"
echo -e " ${BOLD}${CYAN}${NC} ${BOLD}${WHITE}GoTelegram v${GOTELEGRAM_VERSION}${NC} Панель мониторинга ${BOLD}${CYAN}${NC}"
echo -e " ${BOLD}${CYAN}${line}${NC}"
# Status line
echo -ne " ${BOLD}${WHITE}${NC} Прокси: ${proxy_badge}"
echo -ne " ${nginx_badge}"
[ -n "$bot_badge" ] && echo -ne "${bot_badge}"
echo -e " ${BOLD}${WHITE}${NC}"
# ── Здоровье сервисов ──
echo ""
echo -e " ${DIM}${line2}${NC}"
# Mode & IP
echo -e " ${BOLD}${WHITE}${NC} Режим: ${CYAN}${mode}${NC} │ IP: ${CYAN}${ip}${NC} │ Порт: ${CYAN}${port}${NC} ${BOLD}${WHITE}${NC}"
# Proxy
local proxy_icon proxy_color
case "$proxy_status" in
running) proxy_icon="●"; proxy_color="${GREEN}" ;;
stopped) proxy_icon="○"; proxy_color="${YELLOW}" ;;
*) proxy_icon="✗"; proxy_color="${RED}" ;;
esac
echo -e " ${proxy_color}${proxy_icon}${NC} Прокси ${proxy_color}${proxy_status}${NC} ${DIM}(telemt ${mode})${NC}"
# Domain & SSL (stealth only)
# nginx
local nginx_icon nginx_color
case "$nginx_st" in
running) nginx_icon="●"; nginx_color="${GREEN}" ;;
*) nginx_icon="✗"; nginx_color="${RED}" ;;
esac
echo -e " ${nginx_color}${nginx_icon}${NC} nginx ${nginx_color}${nginx_st}${NC} ${DIM}(127.0.0.1:8443)${NC}"
# Site (stealth)
if [ "$mode" = "stealth" ] && [ -n "$domain" ]; then
ssl_expiry=$(get_ssl_expiry "$domain" 2>/dev/null || echo "N/A")
local site_ok
if curl -sk --connect-timeout 3 "https://${domain}/" -o /dev/null 2>/dev/null; then
site_ok="${GREEN}● OK${NC}"
local site_icon site_color
if curl -sk --max-time 3 "https://${domain}/" -o /dev/null 2>/dev/null; then
site_icon="●"; site_color="${GREEN}"
else
site_ok="${RED}✗ Down${NC}"
site_icon="✗"; site_color="${RED}"
fi
echo -e " ${BOLD}${WHITE}${NC} Домен: ${CYAN}${domain}${NC} SSL: ${ssl_expiry} ${BOLD}${WHITE}${NC}"
echo -e " ${BOLD}${WHITE}${NC} Сайт: ${site_ok}${GREEN}https://${domain}${NC} ${BOLD}${WHITE}${NC}"
echo -e " ${site_color}${site_icon}${NC} Сайт ${site_color}https://${domain}${NC}"
ssl_expiry=$(get_ssl_expiry "$domain" 2>/dev/null || echo "N/A")
echo -e " ${GREEN}${NC} SSL ${DIM}до ${ssl_expiry}${NC}"
fi
echo -e " ${BOLD}${WHITE}╠══════════════════════════════════════════════════════════╣${NC}"
# Bot
case "$bot_status" in
running) echo -e " ${GREEN}${NC} Бот ${GREEN}running${NC}" ;;
stopped) echo -e " ${YELLOW}${NC} Бот ${YELLOW}stopped${NC}" ;;
esac
# Proxy link
echo -e " ${DIM}${line2}${NC}"
# ── Сетевые параметры ──
echo -e " ${WHITE}IP:${NC} ${CYAN}${ip}${NC} ${WHITE}Порт:${NC} ${CYAN}${port}${NC} ${WHITE}Режим:${NC} ${CYAN}${mode}${NC}"
if [ -n "$domain" ]; then
echo -e " ${WHITE}Домен:${NC} ${CYAN}${domain}${NC}"
fi
echo -e " ${DIM}${line2}${NC}"
# ── Прокси-ссылка + QR ──
if [ -n "$secret" ] && [ "$proxy_status" = "running" ]; then
if [ "$mode" = "stealth" ] && [ -n "$domain" ]; then
local raw_secret faketls_secret domain_hex
@@ -96,35 +105,36 @@ show_main_menu() {
else
link="tg://proxy?server=${ip}&port=${port}&secret=${secret}"
fi
echo -e " ${BOLD}${WHITE}${NC} ${WHITE}Ссылка для Telegram:${NC} ${BOLD}${WHITE}${NC}"
echo -e " ${BOLD}${WHITE}${NC} ${GREEN}${link}${NC}"
echo -e " ${BOLD}${WHITE}${NC} ${BOLD}${WHITE}${NC}"
# QR code
echo -e " ${BOLD}${WHITE}Ссылка для Telegram:${NC}"
echo -e " ${GREEN}${link}${NC}"
echo ""
if command -v qrencode &>/dev/null; then
echo -e " ${BOLD}${WHITE}${NC} ${DIM}QR-код:${NC} ${BOLD}${WHITE}${NC}"
qrencode -t UTF8 -m 1 "$link" 2>/dev/null | while IFS= read -r qr_line; do
echo -e " ${BOLD}${WHITE}${NC} ${qr_line}"
echo " ${qr_line}"
done
echo ""
fi
else
echo -e " ${BOLD}${WHITE}${NC} ${DIM}Прокси не настроен. Выберите п.1 для установки.${NC} ${BOLD}${WHITE}${NC}"
echo -e " ${DIM}Прокси не настроен. Выберите п.1 для установки.${NC}"
echo ""
fi
echo -e " ${BOLD}${WHITE}╠══════════════════════════════════════════════════════════╣${NC}"
echo -e " ${BOLD}${WHITE}${NC} ${DIM}── Прокси ──${NC} ${BOLD}${WHITE}${NC}"
echo -e " ${BOLD}${WHITE}${NC} ${CYAN} 1)${NC} 🔧 Установить / Обновить ${CYAN} 5)${NC} 🔄 Перезапуск ${BOLD}${WHITE}${NC}"
echo -e " ${BOLD}${WHITE}${NC} ${CYAN} 2)${NC} 📊 Статус подробно ${CYAN} 6)${NC} 📋 Логи ${BOLD}${WHITE}${NC}"
echo -e " ${BOLD}${WHITE}${NC} ${CYAN} 3)${NC} 🔗 Скопировать ссылку ${CYAN} 7)${NC} 🎭 Сменить режим ${BOLD}${WHITE}${NC}"
echo -e " ${BOLD}${WHITE}${NC} ${CYAN} 4)${NC} 📤 Поделиться ключом ${BOLD}${WHITE}${NC}"
echo -e " ${BOLD}${WHITE}${NC} ${DIM}── Управление ──${NC} ${BOLD}${WHITE}${NC}"
echo -e " ${BOLD}${WHITE}${NC} ${CYAN} 8)${NC} 💾 Бекап ${CYAN}10)${NC} ⬆️ Обновить telemt ${BOLD}${WHITE}${NC}"
echo -e " ${BOLD}${WHITE}${NC} ${CYAN} 9)${NC} 📦 Восстановить ${CYAN}11)${NC} 🌐 Сайт (SSL) ${BOLD}${WHITE}${NC}"
echo -e " ${BOLD}${WHITE}${NC} ${DIM}── Бот и прочее ──${NC} ${BOLD}${WHITE}${NC}"
echo -e " ${BOLD}${WHITE}${NC} ${CYAN}12)${NC} 🤖 Telegram-бот ${CYAN}14)${NC} 🏷 Промо ${BOLD}${WHITE}${NC}"
echo -e " ${BOLD}${WHITE}${NC} ${CYAN}13)${NC} 🗑 Удалить всё ${CYAN} 0)${NC} 🚪 Выход ${BOLD}${WHITE}${NC}"
echo -e " ${BOLD}${WHITE}╚══════════════════════════════════════════════════════════╝${NC}"
echo -e " ${DIM}Авто-обновление каждые 30 сек. Введите номер:${NC}"
# ── Меню ──
echo -e " ${DIM}${line2}${NC}"
echo -e " ${DIM}ПРОКСИ${NC} ${DIM}УПРАВЛЕНИЕ${NC}"
echo -e " ${CYAN}1${NC}) Установить / Обновить ${CYAN}8${NC}) Бекап"
echo -e " ${CYAN}2${NC}) Статус подробно ${CYAN}9${NC}) Восстановить"
echo -e " ${CYAN}3${NC}) Скопировать ссылку ${CYAN}10${NC}) Обновить telemt"
echo -e " ${CYAN}4${NC}) Поделиться ключом ${CYAN}11${NC}) Сайт / SSL"
echo -e " ${CYAN}5${NC}) Перезапуск"
echo -e " ${CYAN}6${NC}) Логи ${DIM}БОТ И ПРОЧЕЕ${NC}"
echo -e " ${CYAN}7${NC}) Сменить режим / шаблон ${CYAN}12${NC}) Telegram-бот"
echo -e " ${CYAN}13${NC}) Удалить всё"
echo -e " ${CYAN}0${NC}) ${DIM}Выход${NC} ${CYAN}14${NC}) Промо"
echo -e " ${DIM}${line2}${NC}"
echo -e " ${DIM}Обновление через 30 сек${NC}"
echo -ne " ${WHITE}${NC}"
}