mirror of
https://github.com/by-sonic/tglock.git
synced 2026-08-02 16:45:50 +03:00
feat: rebuild TGLock with adaptive transport and Tauri UI
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
# TGLock 2.0 architecture
|
||||
|
||||
## Local protocols
|
||||
|
||||
Один TCP-порт автоматически принимает два типа клиентов:
|
||||
|
||||
- MTProto proxy с постоянным 16-байтовым secret — основной режим;
|
||||
- SOCKS5 без авторизации — режим совместимости.
|
||||
|
||||
MTProto init проверяется по secret и transport tag. Из него извлекаются DC,
|
||||
признак media-соединения и тип транспорта. Для upstream создаётся новый
|
||||
стандартный obfuscated2 init, а последующий поток пере-шифровывается между
|
||||
локальным secret и Telegram.
|
||||
|
||||
## Transport cascade
|
||||
|
||||
Для каждого DC и отдельно для media-соединений строится список маршрутов:
|
||||
|
||||
1. сохранённый успешный маршрут;
|
||||
2. точный Telegram IP с `kwsN` или `kwsN-1` в TLS SNI и WebSocket Host;
|
||||
3. дополнительный Telegram IP, если он определён;
|
||||
4. системный DNS;
|
||||
5. явно настроенный пользователем Cloudflare Worker.
|
||||
|
||||
Поддерживаются DC1–5 и media/CDN DC203. DC203 использует WebSocket-host DC2,
|
||||
но подключается к собственному IP.
|
||||
|
||||
После ошибки маршрут получает exponential cooldown от 30 секунд до 30 минут.
|
||||
Успешный маршрут становится первым для следующего соединения того же DC и
|
||||
типа трафика.
|
||||
|
||||
## TLS policy
|
||||
|
||||
Проверка сертификатов и hostname никогда не отключается. При подключении к
|
||||
заданному Telegram IP TCP destination отделён от URI host: TLS продолжает
|
||||
проверять сертификат настоящего `kws*.web.telegram.org`.
|
||||
|
||||
Cloudflare Worker принимается только как пользовательская настройка. TGLock
|
||||
не загружает и не скрывает публичные списки чужих доменов.
|
||||
|
||||
## Cloudflare Worker contract
|
||||
|
||||
Worker должен принимать WebSocket на:
|
||||
|
||||
```text
|
||||
/apiws?dst=<telegram-ip>&dc=<dc-id>
|
||||
```
|
||||
|
||||
и проксировать бинарные frames в TCP `<telegram-ip>:443`. Рекомендуется
|
||||
добавить собственную авторизацию до стабильного релиза; поэтому Worker
|
||||
остаётся расширенной опцией alpha-версии.
|
||||
|
||||
## Current limitations
|
||||
|
||||
- SNI camouflage не включена: небезопасное отключение hostname verification
|
||||
из референсной реализации не переносится.
|
||||
- Голосовые звонки по UDP не поддерживаются.
|
||||
- Работоспособность медиа зависит от конкретного DC аккаунта и доступности
|
||||
Telegram/Cloudflare у провайдера.
|
||||
- Пулы заранее открытых WebSocket-соединений будут добавлены после измерения,
|
||||
что они не создают лишнюю нагрузку и не ухудшают стабильность.
|
||||
Reference in New Issue
Block a user