v2.3.1: fix QR top margin, use domain instead of IP for pro-mode links

This commit is contained in:
anten-ka
2026-04-09 00:59:42 +03:00
parent 96cbd243d9
commit a21d2ebea2
3 changed files with 57 additions and 14 deletions

View File

@@ -835,7 +835,7 @@ async def cb_pro_confirm(update: Update, context: ContextTypes.DEFAULT_TYPE) ->
async def get_proxy_link() -> Optional[str]: 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) config = load_json(GOTELEGRAM_CONFIG)
if not config: if not config:
return None return None
@@ -851,12 +851,20 @@ async def get_proxy_link() -> Optional[str]:
if not secret: if not secret:
return None 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") 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" 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}" return f"tg://proxy?server={server}&port={port}&secret={secret}"

View File

@@ -112,8 +112,7 @@ show_main_menu() {
if command -v qrencode &>/dev/null; then if command -v qrencode &>/dev/null; then
echo "" echo ""
echo "" qrencode -t UTF8 -m 2 "$link" 2>/dev/null | while IFS= read -r qr_line; do
qrencode -t UTF8 -m 1 "$link" 2>/dev/null | while IFS= read -r qr_line; do
echo " ${qr_line}" echo " ${qr_line}"
done done
echo "" echo ""
@@ -455,11 +454,21 @@ menu_status() {
# ── Ссылка ─────────────────────────────────────────────────────────────────── # ── Ссылка ───────────────────────────────────────────────────────────────────
menu_link() { menu_link() {
local secret port ip link local secret port ip link mode domain
secret=$(get_config_value secret) secret=$(get_config_value secret)
port=$(get_config_value port) port=$(get_config_value port)
ip=$(get_server_ip) 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 ""
echo -e " ${BOLD}${WHITE}🔗 Ссылка для подключения:${NC}" echo -e " ${BOLD}${WHITE}🔗 Ссылка для подключения:${NC}"
@@ -474,18 +483,30 @@ menu_link() {
# ── Поделиться ─────────────────────────────────────────────────────────────── # ── Поделиться ───────────────────────────────────────────────────────────────
menu_share() { menu_share() {
local secret port ip link local secret port ip link mode domain server_display
secret=$(get_config_value secret) secret=$(get_config_value secret)
port=$(get_config_value port) port=$(get_config_value port)
ip=$(get_server_ip) 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 ""
echo -e " ${BOLD}📤 Перешлите это сообщение:${NC}" echo -e " ${BOLD}📤 Перешлите это сообщение:${NC}"
echo "" echo ""
echo "🔐 MTProxy для Telegram (GoTelegram v${GOTELEGRAM_VERSION})" echo "🔐 MTProxy для Telegram (GoTelegram v${GOTELEGRAM_VERSION})"
echo "" echo ""
echo "🌍 Сервер: $ip" echo "🌍 Сервер: $server_display"
echo "🔌 Порт: $port" echo "🔌 Порт: $port"
echo "" echo ""
echo "👉 Подключиться одним нажатием:" echo "👉 Подключиться одним нажатием:"

View File

@@ -257,11 +257,21 @@ show_proxy_info() {
port=$(get_config_value port "$config") port=$(get_config_value port "$config")
mask_host=$(get_config_value mask_host "$config") mask_host=$(get_config_value mask_host "$config")
ip=$(get_server_ip) ip=$(get_server_ip)
link=$(generate_proxy_link "$ip" "$port" "$secret")
status=$(telemt_status) status=$(telemt_status)
local mode local mode domain
mode=$(config_get mode 2>/dev/null || echo "lite") 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 local status_icon status_text
case "$status" in case "$status" in
@@ -274,7 +284,11 @@ show_proxy_info() {
echo -e " ${BOLD}${WHITE}${status_icon} Статус прокси: ${status_text}${NC}" echo -e " ${BOLD}${WHITE}${status_icon} Статус прокси: ${status_text}${NC}"
echo -e " ${DIM}$(printf '─%.0s' {1..50})${NC}" echo -e " ${DIM}$(printf '─%.0s' {1..50})${NC}"
echo -e " ${WHITE}Ядро:${NC} telemt (Rust)" 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}${port}${NC}"
echo -e " ${WHITE}Режим:${NC} ${CYAN}${mode}${NC}" echo -e " ${WHITE}Режим:${NC} ${CYAN}${mode}${NC}"
echo -e " ${WHITE}Маскировка:${NC} ${CYAN}${mask_host}${NC}" echo -e " ${WHITE}Маскировка:${NC} ${CYAN}${mask_host}${NC}"