diff --git a/install.sh b/install.sh index e71a10f..2ca529a 100755 --- a/install.sh +++ b/install.sh @@ -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}" }