mirror of
https://github.com/anten-ka/gotelegram_pro.git
synced 2026-05-19 18:16:04 +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]:
|
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}"
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
31
install.sh
31
install.sh
@@ -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)
|
||||||
|
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")
|
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)
|
||||||
|
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")
|
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 "👉 Подключиться одним нажатием:"
|
||||||
|
|||||||
@@ -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)"
|
||||||
|
if [ "$mode" = "pro" ] && [ -n "$domain" ]; then
|
||||||
|
echo -e " ${WHITE}Домен:${NC} ${CYAN}${domain}${NC}"
|
||||||
|
else
|
||||||
echo -e " ${WHITE}IP:${NC} ${CYAN}${ip}${NC}"
|
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}"
|
||||||
|
|||||||
Reference in New Issue
Block a user