mirror of
https://github.com/anten-ka/gotelegram_pro.git
synced 2026-05-19 15:56:04 +00:00
fix: telemt v3 config format ([server], [censorship], [access.users]), stealth with dns_overrides
This commit is contained in:
@@ -25,52 +25,49 @@ QUICK_DOMAINS=(
|
||||
"zoom.us"
|
||||
)
|
||||
|
||||
# ── Генерация TOML конфига ───────────────────────────────────────────────────
|
||||
# ── Генерация TOML конфига (telemt v3 формат) ───────────────────────────────
|
||||
generate_telemt_toml() {
|
||||
local secret="$1"
|
||||
local port="${2:-443}"
|
||||
local mask_mode="${3:-quick}" # quick | stealth
|
||||
local mask_host="${4:-google.com}"
|
||||
local mask_domain="${4:-google.com}"
|
||||
local mask_port="${5:-443}"
|
||||
local output="${6:-$TELEMT_CONFIG}"
|
||||
|
||||
mkdir -p "$(dirname "$output")"
|
||||
|
||||
# telemt всегда слушает на 0.0.0.0 (внешний трафик)
|
||||
# В stealth-режиме: telemt на 0.0.0.0:443, nginx на 127.0.0.1:8443 (внутренний)
|
||||
# В quick-режиме: telemt на 0.0.0.0:443, без nginx
|
||||
local bind_addr="0.0.0.0"
|
||||
# DNS override для stealth: домен резолвится в 127.0.0.1
|
||||
# чтобы mask-трафик шёл на локальный nginx, а не в интернет
|
||||
local dns_line=""
|
||||
if [ "$mask_mode" = "stealth" ]; then
|
||||
dns_line="dns_overrides = [\"${mask_domain}:${mask_port}:127.0.0.1\"]"
|
||||
fi
|
||||
|
||||
cat > "$output" << EOTOML
|
||||
# GoTelegram v${GOTELEGRAM_VERSION} — telemt configuration
|
||||
# GoTelegram v${GOTELEGRAM_VERSION} — telemt v3 configuration
|
||||
# Сгенерировано: $(date -Iseconds)
|
||||
# Режим: ${mask_mode}
|
||||
|
||||
# ── Основные настройки ───────────────────────────────────────────────────────
|
||||
[stats]
|
||||
statsd_address = ""
|
||||
[server]
|
||||
port = ${port}
|
||||
listen_addr_ipv4 = "0.0.0.0"
|
||||
|
||||
# ── Секреты ──────────────────────────────────────────────────────────────────
|
||||
[[users]]
|
||||
name = "main"
|
||||
secret = "${secret}"
|
||||
[censorship]
|
||||
tls_domain = "${mask_domain}"
|
||||
mask = true
|
||||
mask_port = ${mask_port}
|
||||
tls_emulation = $([ "$mask_mode" = "stealth" ] && echo "false" || echo "true")
|
||||
|
||||
# ── Привязка ─────────────────────────────────────────────────────────────────
|
||||
[listen]
|
||||
# quick: 0.0.0.0 (клиенты напрямую) | stealth: 127.0.0.1 (только через nginx)
|
||||
bind_to = "${bind_addr}:${port}"
|
||||
|
||||
# ── TLS маскировка ───────────────────────────────────────────────────────────
|
||||
[security]
|
||||
# Маскировочный хост — куда перенаправлять неопознанные подключения
|
||||
# quick: внешний сайт | stealth: локальный nginx
|
||||
host = "${mask_host}:${mask_port}"
|
||||
[access.users]
|
||||
main = "${secret}"
|
||||
|
||||
[network]
|
||||
${dns_line}
|
||||
EOTOML
|
||||
|
||||
chmod 600 "$output"
|
||||
log_success "Конфиг telemt записан: $output"
|
||||
log_dim "Режим: $mask_mode, маскировка: $mask_host:$mask_port"
|
||||
log_dim "Режим: $mask_mode, домен: $mask_domain, порт mask: $mask_port"
|
||||
}
|
||||
|
||||
# ── Добавление дополнительного секрета ───────────────────────────────────────
|
||||
@@ -95,7 +92,7 @@ EOSECRET
|
||||
log_success "Добавлен секрет: $name"
|
||||
}
|
||||
|
||||
# ── Чтение текущего конфига ──────────────────────────────────────────────────
|
||||
# ── Чтение текущего конфига (telemt v3 формат) ──────────────────────────────
|
||||
get_config_value() {
|
||||
local key="$1"
|
||||
local config="${2:-$TELEMT_CONFIG}"
|
||||
@@ -104,13 +101,19 @@ get_config_value() {
|
||||
|
||||
case "$key" in
|
||||
secret)
|
||||
grep -m1 'secret\s*=' "$config" | sed 's/.*=\s*"\(.*\)"/\1/' | tr -d ' '
|
||||
# [access.users] main = "..."
|
||||
grep -A5 '\[access.users\]' "$config" | grep -m1 '=' | sed 's/.*=\s*"\(.*\)"/\1/' | tr -d ' '
|
||||
;;
|
||||
port)
|
||||
grep 'bind_to\s*=' "$config" | sed 's/.*:\([0-9]*\)".*/\1/'
|
||||
# [server] port = 443
|
||||
grep -A5 '\[server\]' "$config" | grep 'port\s*=' | head -1 | sed 's/.*=\s*\([0-9]*\)/\1/' | tr -d ' '
|
||||
;;
|
||||
mask_host)
|
||||
grep -A10 '\[security\]' "$config" | grep 'host\s*=' | sed 's/.*=\s*"\(.*\)".*/\1/'
|
||||
mask_host|tls_domain)
|
||||
# [censorship] tls_domain = "..."
|
||||
grep -A10 '\[censorship\]' "$config" | grep 'tls_domain\s*=' | sed 's/.*=\s*"\(.*\)"/\1/'
|
||||
;;
|
||||
mask_port)
|
||||
grep -A10 '\[censorship\]' "$config" | grep 'mask_port\s*=' | sed 's/.*=\s*\([0-9]*\)/\1/' | tr -d ' '
|
||||
;;
|
||||
*)
|
||||
grep "$key" "$config" | head -1 | sed 's/.*=\s*"\?\(.*\)"\?/\1/' | tr -d ' "'
|
||||
@@ -151,7 +154,7 @@ validate_telemt_config() {
|
||||
fi
|
||||
|
||||
if [ -z "$host" ]; then
|
||||
log_error "Не задан маскировочный хост (security.host)"
|
||||
log_error "Не задан маскировочный хост (censorship.tls_domain)"
|
||||
((errors++))
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user