diff --git a/gotelegram-bot/bot.py b/gotelegram-bot/bot.py index 1266670..49a57fc 100644 --- a/gotelegram-bot/bot.py +++ b/gotelegram-bot/bot.py @@ -967,10 +967,16 @@ async def get_proxy_link() -> Optional[str]: faketls_secret = f"ee{secret}{domain_hex}" return f"tg://proxy?server={domain}&port={port}&secret={faketls_secret}" - # Lite-режим: IP + # Lite-режим: IP + fake-TLS с mask_host code, stdout, _ = await sh("curl", "-s", "-4", "--max-time", "5", "https://api.ipify.org") server = stdout.strip() if code == 0 and stdout.strip() else "0.0.0.0" + mask_host = config.get("mask_host", "") + if mask_host: + domain_hex = mask_host.encode().hex() + faketls_secret = f"ee{secret}{domain_hex}" + return f"tg://proxy?server={server}&port={port}&secret={faketls_secret}" + return f"tg://proxy?server={server}&port={port}&secret={secret}" diff --git a/install.sh b/install.sh index 2aa68a6..bff3707 100755 --- a/install.sh +++ b/install.sh @@ -96,15 +96,13 @@ show_main_menu() { echo -e " ${DIM}${line2}${NC}" # ── Прокси-ссылка + QR ── + local mask_host + mask_host=$(config_get mask_host 2>/dev/null || echo "") if [ -n "$secret" ] && [ "$proxy_status" = "running" ]; then if [ "$mode" = "pro" ] && [ -n "$domain" ]; then - local raw_secret faketls_secret domain_hex - raw_secret="$secret" - domain_hex=$(printf '%s' "$domain" | xxd -p | tr -d '\n') - faketls_secret="ee${raw_secret}${domain_hex}" - link="tg://proxy?server=${domain}&port=${port}&secret=${faketls_secret}" + link=$(generate_proxy_link "$domain" "$port" "$secret" "$domain") else - link="tg://proxy?server=${ip}&port=${port}&secret=${secret}" + link=$(generate_proxy_link "$ip" "$port" "$secret" "$mask_host") fi echo -e " ${BOLD}${WHITE}Ссылка для Telegram:${NC}" @@ -454,20 +452,18 @@ menu_status() { # ── Ссылка ─────────────────────────────────────────────────────────────────── menu_link() { - local secret port ip link mode domain + local secret port ip link mode domain mask_host secret=$(get_config_value secret) port=$(get_config_value port) ip=$(get_server_ip) mode=$(config_get mode 2>/dev/null || echo "lite") domain=$(config_get domain 2>/dev/null || echo "") + mask_host=$(config_get mask_host 2>/dev/null || echo "") if [ "$mode" = "pro" ] && [ -n "$domain" ]; then - local domain_hex faketls_secret - domain_hex=$(printf '%s' "$domain" | xxd -p | tr -d '\n') - faketls_secret="ee${secret}${domain_hex}" - link="tg://proxy?server=${domain}&port=${port}&secret=${faketls_secret}" + link=$(generate_proxy_link "$domain" "$port" "$secret" "$domain") else - link=$(generate_proxy_link "$ip" "$port" "$secret") + link=$(generate_proxy_link "$ip" "$port" "$secret" "$mask_host") fi echo "" @@ -483,21 +479,19 @@ menu_link() { # ── Поделиться ─────────────────────────────────────────────────────────────── menu_share() { - local secret port ip link mode domain server_display + local secret port ip link mode domain mask_host server_display secret=$(get_config_value secret) port=$(get_config_value port) ip=$(get_server_ip) mode=$(config_get mode 2>/dev/null || echo "lite") domain=$(config_get domain 2>/dev/null || echo "") + mask_host=$(config_get mask_host 2>/dev/null || echo "") if [ "$mode" = "pro" ] && [ -n "$domain" ]; then - local domain_hex faketls_secret - domain_hex=$(printf '%s' "$domain" | xxd -p | tr -d '\n') - faketls_secret="ee${secret}${domain_hex}" - link="tg://proxy?server=${domain}&port=${port}&secret=${faketls_secret}" + link=$(generate_proxy_link "$domain" "$port" "$secret" "$domain") server_display="$domain" else - link=$(generate_proxy_link "$ip" "$port" "$secret") + link=$(generate_proxy_link "$ip" "$port" "$secret" "$mask_host") server_display="$ip" fi @@ -1010,20 +1004,20 @@ bot_remove() { menu_promo() { echo "" echo -e " ${YELLOW}╔══════════════════════════════════════════════════════╗${NC}" - echo -e " ${YELLOW}║${NC} ${BOLD}💰 ХОСТИНГ #1 — СКИДКА ДО 60%${NC} ${YELLOW}║${NC}" - echo -e " ${YELLOW}║${NC} Ссылка: ${CYAN}https://vk.cc/ct29NQ${NC} ${YELLOW}║${NC}" + echo -e " ${YELLOW}║${NC} ${BOLD}💰 ХОСТИНГ #1 — СКИДКА ДО 60%${NC} ${YELLOW}║${NC}" + echo -e " ${YELLOW}║${NC} Ссылка: ${CYAN}https://vk.cc/ct29NQ${NC} ${YELLOW}║${NC}" echo -e " ${YELLOW}║${NC} ${YELLOW}║${NC}" echo -e " ${YELLOW}║${NC} ${WHITE}OFF60${NC} — 60% скидки на первый месяц ${YELLOW}║${NC}" - echo -e " ${YELLOW}║${NC} ${WHITE}antenka20${NC} — 20% + 3% при оплате за 3 месяца ${YELLOW}║${NC}" - echo -e " ${YELLOW}║${NC} ${WHITE}antenka6${NC} — 15% + 5% при оплате за 6 месяцев ${YELLOW}║${NC}" + echo -e " ${YELLOW}║${NC} ${WHITE}antenka20${NC} — 20% + 3% при оплате за 3 месяца ${YELLOW}║${NC}" + echo -e " ${YELLOW}║${NC} ${WHITE}antenka6${NC} — 15% + 5% при оплате за 6 месяцев ${YELLOW}║${NC}" echo -e " ${YELLOW}╟──────────────────────────────────────────────────────╢${NC}" - echo -e " ${YELLOW}║${NC} ${BOLD}💰 ХОСТИНГ #2 — СКИДКА ДО 60%${NC} ${YELLOW}║${NC}" - echo -e " ${YELLOW}║${NC} Ссылка: ${CYAN}https://vk.cc/cUxAhj${NC} ${YELLOW}║${NC}" + echo -e " ${YELLOW}║${NC} ${BOLD}💰 ХОСТИНГ #2 — СКИДКА ДО 60%${NC} ${YELLOW}║${NC}" + echo -e " ${YELLOW}║${NC} Ссылка: ${CYAN}https://vk.cc/cUxAhj${NC} ${YELLOW}║${NC}" echo -e " ${YELLOW}║${NC} ${YELLOW}║${NC}" echo -e " ${YELLOW}║${NC} ${WHITE}OFF60${NC} — 60% скидки на первый месяц ${YELLOW}║${NC}" echo -e " ${YELLOW}╟──────────────────────────────────────────────────────╢${NC}" - echo -e " ${YELLOW}║${NC} ${BOLD}☕ Донат / Чаевые${NC} ${YELLOW}║${NC}" - echo -e " ${YELLOW}║${NC} ${CYAN}https://pay.cloudtips.ru/p/7410814f${NC} ${YELLOW}║${NC}" + echo -e " ${YELLOW}║${NC} ${BOLD}☕ Донат / Чаевые${NC} ${YELLOW}║${NC}" + echo -e " ${YELLOW}║${NC} ${CYAN}https://pay.cloudtips.ru/p/7410814f${NC} ${YELLOW}║${NC}" echo -e " ${YELLOW}╚══════════════════════════════════════════════════════╝${NC}" echo "" } @@ -1053,15 +1047,15 @@ mark_promo_shown() { show_promo_with_qr() { echo "" echo -e " ${YELLOW}╔══════════════════════════════════════════════════════╗${NC}" - echo -e " ${YELLOW}║${NC} ${BOLD}💰 ХОСТИНГ #1 — СКИДКА ДО 60%${NC} ${YELLOW}║${NC}" - echo -e " ${YELLOW}║${NC} Ссылка: ${CYAN}https://vk.cc/ct29NQ${NC} ${YELLOW}║${NC}" + echo -e " ${YELLOW}║${NC} ${BOLD}💰 ХОСТИНГ #1 — СКИДКА ДО 60%${NC} ${YELLOW}║${NC}" + echo -e " ${YELLOW}║${NC} Ссылка: ${CYAN}https://vk.cc/ct29NQ${NC} ${YELLOW}║${NC}" echo -e " ${YELLOW}║${NC} ${YELLOW}║${NC}" echo -e " ${YELLOW}║${NC} ${WHITE}OFF60${NC} — 60% скидки на первый месяц ${YELLOW}║${NC}" - echo -e " ${YELLOW}║${NC} ${WHITE}antenka20${NC} — 20% + 3% при оплате за 3 месяца ${YELLOW}║${NC}" - echo -e " ${YELLOW}║${NC} ${WHITE}antenka6${NC} — 15% + 5% при оплате за 6 месяцев ${YELLOW}║${NC}" + echo -e " ${YELLOW}║${NC} ${WHITE}antenka20${NC} — 20% + 3% при оплате за 3 месяца ${YELLOW}║${NC}" + echo -e " ${YELLOW}║${NC} ${WHITE}antenka6${NC} — 15% + 5% при оплате за 6 месяцев ${YELLOW}║${NC}" echo -e " ${YELLOW}╟──────────────────────────────────────────────────────╢${NC}" - echo -e " ${YELLOW}║${NC} ${BOLD}💰 ХОСТИНГ #2 — СКИДКА ДО 60%${NC} ${YELLOW}║${NC}" - echo -e " ${YELLOW}║${NC} Ссылка: ${CYAN}https://vk.cc/cUxAhj${NC} ${YELLOW}║${NC}" + echo -e " ${YELLOW}║${NC} ${BOLD}💰 ХОСТИНГ #2 — СКИДКА ДО 60%${NC} ${YELLOW}║${NC}" + echo -e " ${YELLOW}║${NC} Ссылка: ${CYAN}https://vk.cc/cUxAhj${NC} ${YELLOW}║${NC}" echo -e " ${YELLOW}║${NC} ${YELLOW}║${NC}" echo -e " ${YELLOW}║${NC} ${WHITE}OFF60${NC} — 60% скидки на первый месяц ${YELLOW}║${NC}" echo -e " ${YELLOW}╚══════════════════════════════════════════════════════╝${NC}" diff --git a/lib/common.sh b/lib/common.sh index 7bc52db..d4ca412 100755 --- a/lib/common.sh +++ b/lib/common.sh @@ -225,7 +225,7 @@ install_pkg() { ensure_deps() { local missing=() - for cmd in curl jq openssl git; do + for cmd in curl jq openssl git qrencode; do if ! command -v "$cmd" &>/dev/null; then missing+=("$cmd") fi diff --git a/lib/telemt_config.sh b/lib/telemt_config.sh index d081e85..1a4dd2e 100755 --- a/lib/telemt_config.sh +++ b/lib/telemt_config.sh @@ -242,10 +242,19 @@ select_port() { # ── Генерация ссылки tg://proxy ────────────────────────────────────────────── generate_proxy_link() { - local ip="${1:-$(get_server_ip)}" + local server="${1:-$(get_server_ip)}" local port="${2:-443}" local secret="$3" - echo "tg://proxy?server=${ip}&port=${port}&secret=${secret}" + local mask_host="${4:-}" + + # Если указан mask_host (fake-TLS), формируем ee-секрет + if [ -n "$mask_host" ]; then + local domain_hex + domain_hex=$(printf '%s' "$mask_host" | xxd -p | tr -d '\n') + secret="ee${secret}${domain_hex}" + fi + + echo "tg://proxy?server=${server}&port=${port}&secret=${secret}" } # ── Вывод информации о прокси ──────────────────────────────────────────────── @@ -263,14 +272,11 @@ show_proxy_info() { mode=$(config_get mode 2>/dev/null || echo "lite") domain=$(config_get domain 2>/dev/null || echo "") - # Pro-режим: ссылка с доменом и fake-TLS секретом + # Генерация ссылки: оба режима используют ee-секрет с mask_host if [ "$mode" = "pro" ] && [ -n "$domain" ]; then - local domain_hex faketls_secret - domain_hex=$(printf '%s' "$domain" | xxd -p | tr -d '\n') - faketls_secret="ee${secret}${domain_hex}" - link="tg://proxy?server=${domain}&port=${port}&secret=${faketls_secret}" + link=$(generate_proxy_link "$domain" "$port" "$secret" "$domain") else - link=$(generate_proxy_link "$ip" "$port" "$secret") + link=$(generate_proxy_link "$ip" "$port" "$secret" "$mask_host") fi local status_icon status_text