diff --git a/gotelegram-bot/bot.py b/gotelegram-bot/bot.py index f1e24fe..e2411a1 100644 --- a/gotelegram-bot/bot.py +++ b/gotelegram-bot/bot.py @@ -835,7 +835,7 @@ async def cb_pro_confirm(update: Update, context: ContextTypes.DEFAULT_TYPE) -> async def get_proxy_link() -> Optional[str]: - """Generate proxy link from config.""" + """Generate proxy link from config. Pro-mode uses domain + fake-TLS secret.""" config = load_json(GOTELEGRAM_CONFIG) if not config: return None @@ -851,12 +851,20 @@ async def get_proxy_link() -> Optional[str]: if not secret: return None - # Get server IP + mode = config.get("mode", "lite") + domain = config.get("domain", "") + port = config.get("port", 443) + + # Pro-режим: ссылка с доменом и fake-TLS секретом (ee + secret + hex domain) + if mode == "pro" and domain: + domain_hex = domain.encode().hex() + faketls_secret = f"ee{secret}{domain_hex}" + return f"tg://proxy?server={domain}&port={port}&secret={faketls_secret}" + + # Lite-режим: IP 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" - port = config.get("port", 443) - return f"tg://proxy?server={server}&port={port}&secret={secret}" diff --git a/install.sh b/install.sh index f743cfb..25f78a4 100755 --- a/install.sh +++ b/install.sh @@ -112,8 +112,7 @@ show_main_menu() { if command -v qrencode &>/dev/null; then echo "" - echo "" - qrencode -t UTF8 -m 1 "$link" 2>/dev/null | while IFS= read -r qr_line; do + qrencode -t UTF8 -m 2 "$link" 2>/dev/null | while IFS= read -r qr_line; do echo " ${qr_line}" done echo "" @@ -455,11 +454,21 @@ menu_status() { # ── Ссылка ─────────────────────────────────────────────────────────────────── menu_link() { - local secret port ip link + local secret port ip link mode domain secret=$(get_config_value secret) port=$(get_config_value port) ip=$(get_server_ip) - link=$(generate_proxy_link "$ip" "$port" "$secret") + mode=$(config_get mode 2>/dev/null || echo "lite") + domain=$(config_get domain 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}" + else + link=$(generate_proxy_link "$ip" "$port" "$secret") + fi echo "" echo -e " ${BOLD}${WHITE}🔗 Ссылка для подключения:${NC}" @@ -474,18 +483,30 @@ menu_link() { # ── Поделиться ─────────────────────────────────────────────────────────────── menu_share() { - local secret port ip link + local secret port ip link mode domain server_display secret=$(get_config_value secret) port=$(get_config_value port) ip=$(get_server_ip) - link=$(generate_proxy_link "$ip" "$port" "$secret") + mode=$(config_get mode 2>/dev/null || echo "lite") + domain=$(config_get domain 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}" + server_display="$domain" + else + link=$(generate_proxy_link "$ip" "$port" "$secret") + server_display="$ip" + fi echo "" echo -e " ${BOLD}📤 Перешлите это сообщение:${NC}" echo "" echo "🔐 MTProxy для Telegram (GoTelegram v${GOTELEGRAM_VERSION})" echo "" - echo "🌍 Сервер: $ip" + echo "🌍 Сервер: $server_display" echo "🔌 Порт: $port" echo "" echo "👉 Подключиться одним нажатием:" diff --git a/lib/telemt_config.sh b/lib/telemt_config.sh index 3cac21a..d081e85 100755 --- a/lib/telemt_config.sh +++ b/lib/telemt_config.sh @@ -257,11 +257,21 @@ show_proxy_info() { port=$(get_config_value port "$config") mask_host=$(get_config_value mask_host "$config") ip=$(get_server_ip) - link=$(generate_proxy_link "$ip" "$port" "$secret") status=$(telemt_status) - local mode + local mode domain mode=$(config_get mode 2>/dev/null || echo "lite") + domain=$(config_get domain 2>/dev/null || echo "") + + # Pro-режим: ссылка с доменом и fake-TLS секретом + 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}" + else + link=$(generate_proxy_link "$ip" "$port" "$secret") + fi local status_icon status_text case "$status" in @@ -274,7 +284,11 @@ show_proxy_info() { echo -e " ${BOLD}${WHITE}${status_icon} Статус прокси: ${status_text}${NC}" echo -e " ${DIM}$(printf '─%.0s' {1..50})${NC}" echo -e " ${WHITE}Ядро:${NC} telemt (Rust)" - echo -e " ${WHITE}IP:${NC} ${CYAN}${ip}${NC}" + if [ "$mode" = "pro" ] && [ -n "$domain" ]; then + echo -e " ${WHITE}Домен:${NC} ${CYAN}${domain}${NC}" + else + echo -e " ${WHITE}IP:${NC} ${CYAN}${ip}${NC}" + fi echo -e " ${WHITE}Порт:${NC} ${CYAN}${port}${NC}" echo -e " ${WHITE}Режим:${NC} ${CYAN}${mode}${NC}" echo -e " ${WHITE}Маскировка:${NC} ${CYAN}${mask_host}${NC}"