mirror of
https://github.com/anten-ka/gotelegram_pro.git
synced 2026-05-19 15:36:03 +00:00
v2.3.1: fix QR top margin, use domain instead of IP for pro-mode links
This commit is contained in:
@@ -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}"
|
||||
|
||||
|
||||
|
||||
35
install.sh
35
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 "👉 Подключиться одним нажатием:"
|
||||
|
||||
@@ -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}"
|
||||
|
||||
Reference in New Issue
Block a user