-dc-ids flag for sequential DC checks, clarify exit codes, and improve error reporting for each DC. Adjust logic in checkOneLine and related functions to aggregate results from multiple DCs, ensuring robust performance and clearer output.
mtproxy_checker
Проверка MTProto MTProxy на Go: не ICMP ping, а TCP + протокол (для ee — Fake-TLS, затем первый кадр MTProxy; для dd — сразу MTProxy Randomized Intermediate).
Сборка
go build -o mtproxy_checker.exe ./cmd/mtproxy_checker
Запуск
.\mtproxy_checker.exe "tg://proxy?server=HOST&port=PORT&secret=HEX"
или
.\mtproxy_checker.exe --server HOST --port PORT --secret HEX
Флаги: -timeout (по умолчанию 15s), -dc-id (по умолчанию 2), -dc-ids (например 1,2,3,4,5 — проверка каждого DC по очереди; -timeout на один DC; общий лимит времени умножается на число DC; код 0, если хотя бы один DC прошёл; список удавшихся DC печатается в stderr), -probe fast|deep (по умолчанию fast — как Telethon TcpMTProxy после init; deep — req_pq/resPQ до DC).
Код выхода: 0 — OK (fast: рукопожатие + init, прокси не рвёт TCP сразу; deep: плюс resPQ от DC); при нескольких DC — 0, если любой из них OK. 1 — ошибка (в deep в т.ч. нет валидного resPQ), 2 — неверные аргументы, 3 — прокси закрыл соединение после проверки, 4 — таймаут.
Docker: docs/docker.ru.md — один образ: с аргументами после образа — CLI; без аргументов — HTTP API (файл со списком tg://, интервал, опциональный whitelist IP).
Если в Telegram прокси «Available», а утилита падает на read server hello
Для ee в TLS SNI должен идти только ASCII hostname из хвоста секрета; в коде это SNIDomain. Ответ сервера читается по схеме из Telegram Desktop (mtproto_tls_socket), а не по старому фиксированному формату telethon.