3 Commits

Author SHA1 Message Date
anten-ka
9c084f37ec bugfix: {{NC}} typo, bot TOML v3 parsing, add_secret v3 format
- install.sh: fix {{NC}} -> ${NC} color escape on line 265
- bot.py: fix TOML parsing for telemt v3 [access.users] format
- bot.py: fix telemt config section [server].port instead of [config].listen_port
- telemt_config.sh: fix add_secret_to_config() for v3 format
2026-04-10 00:16:30 +03:00
anten-ka
63b2fc3717 fix: banner + credits frame alignment (common.sh) 2026-04-09 19:28:46 +03:00
anten-ka
fedc8f77fe fix: frame alignment, ee-prefix for lite mode, qrencode in deps
- All frame boxes: correct 54-char width with emoji compensation
- Lite mode links now include ee-prefix + mask_host hex (fake-TLS)
- Added qrencode to ensure_deps() so QR codes work after fresh install
- Centralized link generation in generate_proxy_link()
- Fixed bot.py get_proxy_link() for lite mode ee-prefix
2026-04-09 19:24:05 +03:00
4 changed files with 79 additions and 65 deletions

View File

@@ -499,12 +499,15 @@ async def get_status_text() -> str:
if "port" in config: if "port" in config:
lines.append(f"<b>Port:</b> {html.escape(str(config['port']))}") lines.append(f"<b>Port:</b> {html.escape(str(config['port']))}")
# Telemt config # Telemt config (v3: [server] port = ..., [censorship] tls_domain = ...)
telemt_cfg = load_toml(TELEMT_CONFIG) telemt_cfg = load_toml(TELEMT_CONFIG)
if telemt_cfg: if telemt_cfg:
cfg = telemt_cfg.get("config", {}) server_cfg = telemt_cfg.get("server", {})
if "listen_port" in cfg: if "port" in server_cfg:
lines.append(f"<b>Listen Port:</b> {cfg['listen_port']}") lines.append(f"<b>Listen Port:</b> {server_cfg['port']}")
censor_cfg = telemt_cfg.get("censorship", {})
if "tls_domain" in censor_cfg:
lines.append(f"<b>TLS Domain:</b> {html.escape(str(censor_cfg['tls_domain']))}")
# Backups # Backups
backup_count = 0 backup_count = 0
@@ -946,14 +949,15 @@ async def get_proxy_link() -> Optional[str]:
if not config: if not config:
return None return None
# Get secret from telemt TOML config # Get secret from telemt TOML config (v3 format: [access.users] main = "...")
secret = config.get("secret", "") secret = config.get("secret", "")
if not secret: if not secret:
telemt_cfg = load_toml(TELEMT_CONFIG) telemt_cfg = load_toml(TELEMT_CONFIG)
if telemt_cfg: if telemt_cfg:
users = telemt_cfg.get("users", []) access = telemt_cfg.get("access", {})
if isinstance(users, list) and users: users = access.get("users", {})
secret = users[0].get("secret", "") if isinstance(users, dict):
secret = users.get("main", "")
if not secret: if not secret:
return None return None
@@ -967,10 +971,16 @@ async def get_proxy_link() -> Optional[str]:
faketls_secret = f"ee{secret}{domain_hex}" faketls_secret = f"ee{secret}{domain_hex}"
return f"tg://proxy?server={domain}&port={port}&secret={faketls_secret}" 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") 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"
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}" return f"tg://proxy?server={server}&port={port}&secret={secret}"

View File

@@ -96,15 +96,13 @@ show_main_menu() {
echo -e " ${DIM}${line2}${NC}" echo -e " ${DIM}${line2}${NC}"
# ── Прокси-ссылка + QR ── # ── Прокси-ссылка + QR ──
local mask_host
mask_host=$(config_get mask_host 2>/dev/null || echo "")
if [ -n "$secret" ] && [ "$proxy_status" = "running" ]; then if [ -n "$secret" ] && [ "$proxy_status" = "running" ]; then
if [ "$mode" = "pro" ] && [ -n "$domain" ]; then if [ "$mode" = "pro" ] && [ -n "$domain" ]; then
local raw_secret faketls_secret domain_hex link=$(generate_proxy_link "$domain" "$port" "$secret" "$domain")
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}"
else else
link="tg://proxy?server=${ip}&port=${port}&secret=${secret}" link=$(generate_proxy_link "$ip" "$port" "$secret" "$mask_host")
fi fi
echo -e " ${BOLD}${WHITE}Ссылка для Telegram:${NC}" echo -e " ${BOLD}${WHITE}Ссылка для Telegram:${NC}"
@@ -264,7 +262,7 @@ menu_install() {
echo -e " ${CYAN}2)${NC} ${MAGENTA}🛡 Pro${NC} — свой сайт + полная маскировка" echo -e " ${CYAN}2)${NC} ${MAGENTA}🛡 Pro${NC} — свой сайт + полная маскировка"
echo -e " ${DIM}nginx + SSL + HTML-шаблон + telemt.${NC}" echo -e " ${DIM}nginx + SSL + HTML-шаблон + telemt.${NC}"
echo -e " ${DIM}DPI видит реальный сайт с реальным сертификатом.${NC}" echo -e " ${DIM}DPI видит реальный сайт с реальным сертификатом.${NC}"
echo -e " ${DIM}Требует: домен, направленный на этот сервер.{{NC}" echo -e " ${DIM}Требует: домен, направленный на этот сервер.${NC}"
echo -e " ${DIM}$(printf '─%.0s' {1..55})${NC}" echo -e " ${DIM}$(printf '─%.0s' {1..55})${NC}"
echo -ne " ${WHITE}Выбор (1/2):${NC} " echo -ne " ${WHITE}Выбор (1/2):${NC} "
read -r mode_choice read -r mode_choice
@@ -454,20 +452,18 @@ menu_status() {
# ── Ссылка ─────────────────────────────────────────────────────────────────── # ── Ссылка ───────────────────────────────────────────────────────────────────
menu_link() { menu_link() {
local secret port ip link mode domain local secret port ip link mode domain mask_host
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") mode=$(config_get mode 2>/dev/null || echo "lite")
domain=$(config_get domain 2>/dev/null || echo "") domain=$(config_get domain 2>/dev/null || echo "")
mask_host=$(config_get mask_host 2>/dev/null || echo "")
if [ "$mode" = "pro" ] && [ -n "$domain" ]; then if [ "$mode" = "pro" ] && [ -n "$domain" ]; then
local domain_hex faketls_secret link=$(generate_proxy_link "$domain" "$port" "$secret" "$domain")
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 else
link=$(generate_proxy_link "$ip" "$port" "$secret") link=$(generate_proxy_link "$ip" "$port" "$secret" "$mask_host")
fi fi
echo "" echo ""
@@ -483,21 +479,19 @@ menu_link() {
# ── Поделиться ─────────────────────────────────────────────────────────────── # ── Поделиться ───────────────────────────────────────────────────────────────
menu_share() { 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) 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") mode=$(config_get mode 2>/dev/null || echo "lite")
domain=$(config_get domain 2>/dev/null || echo "") domain=$(config_get domain 2>/dev/null || echo "")
mask_host=$(config_get mask_host 2>/dev/null || echo "")
if [ "$mode" = "pro" ] && [ -n "$domain" ]; then if [ "$mode" = "pro" ] && [ -n "$domain" ]; then
local domain_hex faketls_secret link=$(generate_proxy_link "$domain" "$port" "$secret" "$domain")
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" server_display="$domain"
else else
link=$(generate_proxy_link "$ip" "$port" "$secret") link=$(generate_proxy_link "$ip" "$port" "$secret" "$mask_host")
server_display="$ip" server_display="$ip"
fi fi
@@ -1010,20 +1004,20 @@ bot_remove() {
menu_promo() { menu_promo() {
echo "" echo ""
echo -e " ${YELLOW}╔══════════════════════════════════════════════════════╗${NC}" echo -e " ${YELLOW}╔══════════════════════════════════════════════════════╗${NC}"
echo -e " ${YELLOW}${NC} ${BOLD}💰 ХОСТИНГ #1 — СКИДКА ДО 60%${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} Ссылка: ${CYAN}https://vk.cc/ct29NQ${NC} ${YELLOW}${NC}"
echo -e " ${YELLOW}${NC} ${YELLOW}${NC}" echo -e " ${YELLOW}${NC} ${YELLOW}${NC}"
echo -e " ${YELLOW}${NC} ${WHITE}OFF60${NC} — 60% скидки на первый месяц ${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}antenka20${NC} — 20% + 3% при оплате за 3 месяца ${YELLOW}${NC}"
echo -e " ${YELLOW}${NC} ${WHITE}antenka6${NC} — 15% + 5% при оплате за 6 месяцев ${YELLOW}${NC}" echo -e " ${YELLOW}${NC} ${WHITE}antenka6${NC} — 15% + 5% при оплате за 6 месяцев ${YELLOW}${NC}"
echo -e " ${YELLOW}╟──────────────────────────────────────────────────────╢${NC}" echo -e " ${YELLOW}╟──────────────────────────────────────────────────────╢${NC}"
echo -e " ${YELLOW}${NC} ${BOLD}💰 ХОСТИНГ #2 — СКИДКА ДО 60%${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} Ссылка: ${CYAN}https://vk.cc/cUxAhj${NC} ${YELLOW}${NC}"
echo -e " ${YELLOW}${NC} ${YELLOW}${NC}" echo -e " ${YELLOW}${NC} ${YELLOW}${NC}"
echo -e " ${YELLOW}${NC} ${WHITE}OFF60${NC} — 60% скидки на первый месяц ${YELLOW}${NC}" echo -e " ${YELLOW}${NC} ${WHITE}OFF60${NC} — 60% скидки на первый месяц ${YELLOW}${NC}"
echo -e " ${YELLOW}╟──────────────────────────────────────────────────────╢${NC}" echo -e " ${YELLOW}╟──────────────────────────────────────────────────────╢${NC}"
echo -e " ${YELLOW}${NC} ${BOLD}☕ Донат / Чаевые${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} ${CYAN}https://pay.cloudtips.ru/p/7410814f${NC} ${YELLOW}${NC}"
echo -e " ${YELLOW}╚══════════════════════════════════════════════════════╝${NC}" echo -e " ${YELLOW}╚══════════════════════════════════════════════════════╝${NC}"
echo "" echo ""
} }
@@ -1053,15 +1047,15 @@ mark_promo_shown() {
show_promo_with_qr() { show_promo_with_qr() {
echo "" echo ""
echo -e " ${YELLOW}╔══════════════════════════════════════════════════════╗${NC}" echo -e " ${YELLOW}╔══════════════════════════════════════════════════════╗${NC}"
echo -e " ${YELLOW}${NC} ${BOLD}💰 ХОСТИНГ #1 — СКИДКА ДО 60%${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} Ссылка: ${CYAN}https://vk.cc/ct29NQ${NC} ${YELLOW}${NC}"
echo -e " ${YELLOW}${NC} ${YELLOW}${NC}" echo -e " ${YELLOW}${NC} ${YELLOW}${NC}"
echo -e " ${YELLOW}${NC} ${WHITE}OFF60${NC} — 60% скидки на первый месяц ${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}antenka20${NC} — 20% + 3% при оплате за 3 месяца ${YELLOW}${NC}"
echo -e " ${YELLOW}${NC} ${WHITE}antenka6${NC} — 15% + 5% при оплате за 6 месяцев ${YELLOW}${NC}" echo -e " ${YELLOW}${NC} ${WHITE}antenka6${NC} — 15% + 5% при оплате за 6 месяцев ${YELLOW}${NC}"
echo -e " ${YELLOW}╟──────────────────────────────────────────────────────╢${NC}" echo -e " ${YELLOW}╟──────────────────────────────────────────────────────╢${NC}"
echo -e " ${YELLOW}${NC} ${BOLD}💰 ХОСТИНГ #2 — СКИДКА ДО 60%${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} Ссылка: ${CYAN}https://vk.cc/cUxAhj${NC} ${YELLOW}${NC}"
echo -e " ${YELLOW}${NC} ${YELLOW}${NC}" echo -e " ${YELLOW}${NC} ${YELLOW}${NC}"
echo -e " ${YELLOW}${NC} ${WHITE}OFF60${NC} — 60% скидки на первый месяц ${YELLOW}${NC}" echo -e " ${YELLOW}${NC} ${WHITE}OFF60${NC} — 60% скидки на первый месяц ${YELLOW}${NC}"
echo -e " ${YELLOW}╚══════════════════════════════════════════════════════╝${NC}" echo -e " ${YELLOW}╚══════════════════════════════════════════════════════╝${NC}"

View File

@@ -108,9 +108,9 @@ run_with_spinner() {
show_banner() { show_banner() {
echo "" echo ""
echo -e "${CYAN}╔══════════════════════════════════════════════════════════╗${NC}" echo -e "${CYAN}╔══════════════════════════════════════════════════════════╗${NC}"
echo -e "${CYAN}${NC} ${BOLD}${WHITE}🚀 GoTelegram v${GOTELEGRAM_VERSION}${NC} ${CYAN}${NC}" echo -e "${CYAN}${NC} ${BOLD}${WHITE}🚀 GoTelegram v${GOTELEGRAM_VERSION}${NC} ${CYAN}${NC}"
echo -e "${CYAN}${NC} ${DIM}MTProxy на ядре telemt (Rust + Tokio)${NC} ${CYAN}${NC}" echo -e "${CYAN}${NC} ${DIM}MTProxy на ядре telemt (Rust + Tokio)${NC} ${CYAN}${NC}"
echo -e "${CYAN}${NC} ${DIM}Anti-DPI • Fake TLS • TCP Splice • JA3/JA4${NC} ${CYAN}${NC}" echo -e "${CYAN}${NC} ${DIM}Anti-DPI • Fake TLS • TCP Splice • JA3/JA4${NC} ${CYAN}${NC}"
echo -e "${CYAN}╚══════════════════════════════════════════════════════════╝${NC}" echo -e "${CYAN}╚══════════════════════════════════════════════════════════╝${NC}"
echo "" echo ""
} }
@@ -119,18 +119,18 @@ show_banner() {
show_credits() { show_credits() {
echo "" echo ""
echo -e "${MAGENTA}╔══════════════════════════════════════════════════════════╗${NC}" echo -e "${MAGENTA}╔══════════════════════════════════════════════════════════╗${NC}"
echo -e "${MAGENTA}${NC} ${BOLD}Благодарности / Credits${NC} ${MAGENTA}${NC}" echo -e "${MAGENTA}${NC} ${BOLD}Благодарности / Credits${NC} ${MAGENTA}${NC}"
echo -e "${MAGENTA}╟──────────────────────────────────────────────────────────╢${NC}" echo -e "${MAGENTA}╟──────────────────────────────────────────────────────────╢${NC}"
echo -e "${MAGENTA}${NC} ${WHITE}telemt${NC} — MTProxy engine (Rust) ${MAGENTA}${NC}" echo -e "${MAGENTA}${NC} ${WHITE}telemt${NC} — MTProxy engine (Rust) ${MAGENTA}${NC}"
echo -e "${MAGENTA}${NC} ${DIM}github.com/telemt/telemt${NC} ${MAGENTA}${NC}" echo -e "${MAGENTA}${NC} ${DIM}github.com/telemt/telemt${NC} ${MAGENTA}${NC}"
echo -e "${MAGENTA}${NC} ${MAGENTA}${NC}" echo -e "${MAGENTA}${NC} ${MAGENTA}${NC}"
echo -e "${MAGENTA}${NC} ${WHITE}HTML5 UP${NC} — адаптивные HTML/CSS шаблоны ${MAGENTA}${NC}" echo -e "${MAGENTA}${NC} ${WHITE}HTML5 UP${NC} — адаптивные HTML/CSS шаблоны ${MAGENTA}${NC}"
echo -e "${MAGENTA}${NC} ${DIM}html5up.net • CC BY 3.0 • @ajlkn${NC} ${MAGENTA}${NC}" echo -e "${MAGENTA}${NC} ${DIM}html5up.net • CC BY 3.0 • @ajlkn${NC} ${MAGENTA}${NC}"
echo -e "${MAGENTA}${NC} ${MAGENTA}${NC}" echo -e "${MAGENTA}${NC} ${MAGENTA}${NC}"
echo -e "${MAGENTA}${NC} ${WHITE}learning-zone${NC} — 150+ HTML5 шаблонов ${MAGENTA}${NC}" echo -e "${MAGENTA}${NC} ${WHITE}learning-zone${NC} — 150+ HTML5 шаблонов ${MAGENTA}${NC}"
echo -e "${MAGENTA}${NC} ${DIM}github.com/learning-zone/website-templates${NC} ${MAGENTA}${NC}" echo -e "${MAGENTA}${NC} ${DIM}github.com/learning-zone/website-templates${NC} ${MAGENTA}${NC}"
echo -e "${MAGENTA}${NC} ${MAGENTA}${NC}" echo -e "${MAGENTA}${NC} ${MAGENTA}${NC}"
echo -e "${MAGENTA}${NC} ${WHITE}Start Bootstrap${NC} — MIT лицензия ${MAGENTA}${NC}" echo -e "${MAGENTA}${NC} ${WHITE}Start Bootstrap${NC} — MIT лицензия ${MAGENTA}${NC}"
echo -e "${MAGENTA}${NC} ${DIM}startbootstrap.com${NC} ${MAGENTA}${NC}" echo -e "${MAGENTA}${NC} ${DIM}startbootstrap.com${NC} ${MAGENTA}${NC}"
echo -e "${MAGENTA}╚══════════════════════════════════════════════════════════╝${NC}" echo -e "${MAGENTA}╚══════════════════════════════════════════════════════════╝${NC}"
echo "" echo ""
@@ -225,7 +225,7 @@ install_pkg() {
ensure_deps() { ensure_deps() {
local missing=() 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 if ! command -v "$cmd" &>/dev/null; then
missing+=("$cmd") missing+=("$cmd")
fi fi

View File

@@ -81,13 +81,17 @@ add_secret_to_config() {
return 1 return 1
fi fi
# Добавляем новый блок [[users]] # telemt v3: добавляем ключ в секцию [access.users]
cat >> "$config" << EOSECRET # Формат: name = "secret" под блоком [access.users]
if grep -q '\[access\.users\]' "$config"; then
sed -i "/\[access\.users\]/a ${name} = \"${secret}\"" "$config"
else
cat >> "$config" << EOSECRET
[[users]] [access.users]
name = "${name}" ${name} = "${secret}"
secret = "${secret}"
EOSECRET EOSECRET
fi
log_success "Добавлен секрет: $name" log_success "Добавлен секрет: $name"
} }
@@ -242,10 +246,19 @@ select_port() {
# ── Генерация ссылки tg://proxy ────────────────────────────────────────────── # ── Генерация ссылки tg://proxy ──────────────────────────────────────────────
generate_proxy_link() { generate_proxy_link() {
local ip="${1:-$(get_server_ip)}" local server="${1:-$(get_server_ip)}"
local port="${2:-443}" local port="${2:-443}"
local secret="$3" 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 +276,11 @@ show_proxy_info() {
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 "") domain=$(config_get domain 2>/dev/null || echo "")
# Pro-режим: ссылка с доменом и fake-TLS секретом # Генерация ссылки: оба режима используют ee-секрет с mask_host
if [ "$mode" = "pro" ] && [ -n "$domain" ]; then if [ "$mode" = "pro" ] && [ -n "$domain" ]; then
local domain_hex faketls_secret link=$(generate_proxy_link "$domain" "$port" "$secret" "$domain")
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 else
link=$(generate_proxy_link "$ip" "$port" "$secret") link=$(generate_proxy_link "$ip" "$port" "$secret" "$mask_host")
fi fi
local status_icon status_text local status_icon status_text