mirror of
https://github.com/by-sonic/tglock.git
synced 2026-08-02 16:45:50 +03:00
55653ed0bc
Реализует направление PR #15 поверх архитектуры 2.0. Сам PR смерджить нельзя: он патчит src/bypass.rs, src/network.rs и src/ws_proxy.rs, которых больше нет, и правит системный DNS — в 2.0 это не нужно, потому что адреса Telegram зашиты в маршрутах, а SNI остаётся настоящим. Взято разделение GUI/CLI и произвольный bind-адрес, отброшены DNS-менеджмент и проверка root: CLI не требует прав. Closes #10, #17 — GUI не создаёт окно без 3D-ускорения, на машине без монитора и в виртуалке. Причина в WebView под Tauri, поэтому лечится не программным рендером, а бинарём, в котором WebView нет вовсе: при выключенной фиче gui Tauri и фронтенд в сборку не попадают. Отдельная задача CI собирает и гоняет CLI на голом ubuntu без Node.js и без libwebkit2gtk. Структура: - src/lib.rs — ядро (mtproto, proxy, transport, config), без Tauri - src/main.rs — GUI, required-features = ["gui"] - src/bin/cli.rs — headless-бинарь на clap - build.rs вызывает tauri_build только при включённой фиче gui Исправлено по пути: - Определение протокола: SOCKS5 и MTProto различались по первому байту, но is_reserved_init не исключает 0x05, поэтому примерно одно соединение из 256 уезжало в SOCKS5-ветку и умирало. Теперь неоднозначный первый байт решается по полному 64-байтному init и секрету. - Ярлык маршрута в UI: код 2 подписывался как «Cloudflare Worker», хотя это запасной Telegram IP, а системный DNS и настоящий Worker оба показывались как «Автоматический маршрут». Метки переехали в transport::route_label, общий для обоих интерфейсов. - Секрет прокси: под DynamicUser и ProtectHome домашней папки нет, secret_path возвращает None и секрет генерировался заново при каждом старте, ломая всем настроенным клиентам tg://-ссылку. Добавлен --secret-file. - README обещал Rust 1.75+, тогда как Cargo.toml требует 1.88 и CI это проверяет. Это и есть первопричина #3. Политика доступа: прямые не-Telegram соединения разрешены только на loopback, на любом сетевом адресе нужен явный --allow-direct. Правило из ISSUE_AUDIT о том, что LAN не должен становиться открытым SOCKS5, теперь выражено в типе ListenConfig и покрыто тестами. Тесты: 46 в библиотеке + 12 в CLI. Появился сквозной тест туннеля против мок-релея, который реализует сторону Telegram по obfuscated2 — проверяется не внутренняя консистентность, а что реле получает ровно тот открытый текст, который отправил клиент, и обратно. Плюс расписание backoff, фолбэк при всех маршрутах в cooldown, валидация Worker-доменов, отказы SOCKS5, устойчивость секрета к перезапуску и корректная остановка по SIGTERM. Документация: секция CLI в README с юнитом systemd и Dockerfile. Co-authored-by: by-sonic <171230345+by-sonic@users.noreply.github.com>
393 lines
26 KiB
Markdown
393 lines
26 KiB
Markdown
<!-- ════════════════════════ ROSEVPN — sponsor ════════════════════════ -->
|
||
|
||
<p align="center">
|
||
<a href="https://t.me/rosevpnru_bot">
|
||
<img src="https://img.shields.io/badge/%F0%9F%8C%B9%20RoseVPN-%D0%9F%D0%BE%D0%BF%D1%80%D0%BE%D0%B1%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D0%B1%D0%B5%D1%81%D0%BF%D0%BB%D0%B0%D1%82%D0%BD%D0%BE-E63946?style=for-the-badge&logo=telegram&logoColor=white&labelColor=0a0a0a" height="44" alt="RoseVPN — попробовать бесплатно в Telegram"/>
|
||
</a>
|
||
</p>
|
||
|
||
<p align="center">
|
||
<b>Быстрый VPN для России</b> — YouTube без буферизации, Discord/Instagram/ChatGPT снова работают.<br/>
|
||
<sub>Подключение в Telegram через <a href="https://t.me/rosevpnru_bot"><b>@rosevpnru_bot</b></a> — бесплатный пробный период, без регистрации, без карты.</sub>
|
||
</p>
|
||
|
||
<p align="center">
|
||
<a href="https://t.me/rosevpnru_bot"><img alt="YouTube — без буферов" src="https://img.shields.io/badge/YouTube-%D0%B1%D0%B5%D0%B7%20%D0%B1%D1%83%D1%84%D0%B5%D1%80%D0%BE%D0%B2-E63946?style=flat-square&logo=youtube&logoColor=white"></a>
|
||
<a href="https://t.me/rosevpnru_bot"><img alt="Discord — голос работает" src="https://img.shields.io/badge/Discord-%D0%B3%D0%BE%D0%BB%D0%BE%D1%81%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82-E63946?style=flat-square&logo=discord&logoColor=white"></a>
|
||
<a href="https://t.me/rosevpnru_bot"><img alt="Instagram — открывается" src="https://img.shields.io/badge/Instagram-%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D0%B2%D0%B0%D0%B5%D1%82%D1%81%D1%8F-E63946?style=flat-square&logo=instagram&logoColor=white"></a>
|
||
<a href="https://t.me/rosevpnru_bot"><img alt="ChatGPT — доступен" src="https://img.shields.io/badge/ChatGPT-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B5%D0%BD-E63946?style=flat-square&logo=openai&logoColor=white"></a>
|
||
</p>
|
||
|
||
---
|
||
|
||
<!-- ═════════════════════════════ TGLOCK ═════════════════════════════ -->
|
||
|
||
<div align="center">
|
||
|
||
# 🔓 TGLock
|
||
|
||
### Обход блокировки Telegram через WebSocket-туннель
|
||
|
||
**Один клик. Без VPN. Без серверов. Без подписки.**
|
||
|
||
<p>
|
||
<a href="https://github.com/by-sonic/tglock/releases/latest"><img alt="Скачать последний релиз" src="https://img.shields.io/github/v/release/by-sonic/tglock?style=for-the-badge&color=2ea043&label=%D1%81%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C"></a>
|
||
<a href="https://github.com/by-sonic/tglock/releases"><img alt="Всего загрузок" src="https://img.shields.io/github/downloads/by-sonic/tglock/total?style=for-the-badge&color=0969da&label=%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BE%D0%BA"></a>
|
||
<a href="https://github.com/by-sonic/tglock/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/by-sonic/tglock?style=for-the-badge&color=f5a623"></a>
|
||
</p>
|
||
|
||
<p>
|
||
<img alt="Windows" src="https://img.shields.io/badge/Windows-0078D6?style=flat&logo=windows&logoColor=white">
|
||
<img alt="macOS" src="https://img.shields.io/badge/macOS-000000?style=flat&logo=apple&logoColor=white">
|
||
<img alt="Linux" src="https://img.shields.io/badge/Linux-FCC624?style=flat&logo=linux&logoColor=black">
|
||
<img alt="Rust" src="https://img.shields.io/badge/Rust-CE422B?style=flat&logo=rust&logoColor=white">
|
||
<a href="LICENSE"><img alt="MIT License" src="https://img.shields.io/github/license/by-sonic/tglock?style=flat&color=lightgrey"></a>
|
||
</p>
|
||
|
||
</div>
|
||
|
||
> **Telegram стал тормозить или перестал открываться?** Запусти TGLock — и мессенджер снова работает. Не нужны VPN, прокси-серверы, абонентская плата или регистрация.
|
||
|
||
<p align="center">
|
||
<img src="docs/assets/tglock-v2-main.jpeg" width="420" alt="Новый интерфейс TGLock"/>
|
||
</p>
|
||
|
||
---
|
||
|
||
## 🤔 Что это и зачем
|
||
|
||
TGLock — это **локальный SOCKS5-прокси** на твоём компьютере. Он перехватывает соединения Telegram, заворачивает их в WebSocket и отправляет через `web.telegram.org`. Провайдер видит обычный HTTPS — Telegram работает как раньше.
|
||
|
||
**Кому подойдёт:**
|
||
|
||
- 📱 Telegram заблокировали в России или он стал открываться через раз
|
||
- 🐌 Голосовые/видеозвонки рвутся, сообщения уходят с задержкой, фото не грузятся
|
||
- 🛡 GoodbyeDPI, Zapret или ByeDPI больше не помогают — провайдер шейпит **по IP**
|
||
- 🍎 Нужен инструмент для **macOS** (а на маке нет нормальных GUI-альтернатив)
|
||
- 💻 Хочется решение для **Windows, macOS или Linux** без подписок и серверов
|
||
|
||
**Чем отличается от VPN:** TGLock работает **только с Telegram**. Остальной трафик идёт напрямую — ничего не замедляется, ничего не логируется, мобильный/домашний трафик не расходуется впустую.
|
||
|
||
---
|
||
|
||
## ⚡ Скачать
|
||
|
||
**[👉 Последний релиз](https://github.com/by-sonic/tglock/releases/latest)**
|
||
|
||
| Платформа | Файл | Размер |
|
||
|---|---|---|
|
||
| **Windows 10/11** (x64) | `.exe` installer | |
|
||
| **macOS** (Apple Silicon + Intel) | universal `.dmg` | |
|
||
| **Linux** (x86_64) | `.AppImage` / `.deb` | |
|
||
| **Сервер / без монитора** (любая ОС) | `tglock-cli-*` | |
|
||
|
||
> **🖥 `tglock-cli`** — тот же туннель без графического интерфейса, одним бинарём. Нужен, если окно не создаётся: сервер, контейнер, виртуалка, машина без монитора или без 3D-ускорения. Подробности — [ниже](#-без-графического-интерфейса-tglock-cli).
|
||
|
||
> **🍎 macOS:** пока сборка не нотарифицирована Apple, при первом запуске может понадобиться:
|
||
> ```bash
|
||
> xattr -cr /Applications/TGLock.app
|
||
> ```
|
||
> Это снимает карантин Gatekeeper с приложения, скачанного из GitHub.
|
||
|
||
---
|
||
|
||
## 🚀 Как пользоваться
|
||
|
||
1. **Скачай и запусти** приложение для своей системы.
|
||
2. Нажми **«Включить защиту»**.
|
||
3. TGLock откроет Telegram и предложит подключить локальный MTProto-прокси.
|
||
4. ✅ **Telegram работает.** Окно TGLock можно свернуть.
|
||
|
||
### Ручная настройка (если автоматическая не сработала)
|
||
|
||
Telegram → Настройки → **Продвинутые** → Тип соединения → **Использовать прокси** → **SOCKS5**
|
||
|
||
- Сервер: `127.0.0.1`
|
||
- Порт: `1080`
|
||
|
||
### 🏠 LAN-режим — один прокси на всю квартиру
|
||
|
||
В окне TGLock включи галочку **LAN** — приложение начнёт слушать на `0.0.0.0`. Все устройства в твоей домашней сети (телефон, планшет, ноутбук, телевизор) смогут подключиться к `<твой-IP>:1080` и тоже получить рабочий Telegram. IP отобразится прямо в интерфейсе TGLock — копируй и вписывай в настройки Telegram на остальных устройствах.
|
||
|
||
Удобно, если дома один комп всегда включён — он становится «домашним Telegram-роутером».
|
||
|
||
### 🖥 Без графического интерфейса: `tglock-cli`
|
||
|
||
Для сервера, виртуалки, контейнера и машины без монитора или без 3D-ускорения. Это отдельный бинарь, в котором **нет ни Tauri, ни системного WebView** — там, где окно просто не создаётся, CLI работает.
|
||
|
||
```bash
|
||
tglock-cli # 127.0.0.1:1080, только для этого компьютера
|
||
tglock-cli --lan # 0.0.0.0:1080, только адреса Telegram
|
||
tglock-cli --bind 10.0.0.5 --port 1443 # свой адрес и порт
|
||
tglock-cli --worker my-name.workers.dev # резервный маршрут через свой Cloudflare Worker
|
||
tglock-cli --help # все флаги
|
||
```
|
||
|
||
При запуске печатается готовая `tg://proxy`-ссылка — её можно открыть на любом устройстве в сети, чтобы Telegram настроился сам. Дальше в лог идёт по строке на каждое изменение состояния: сколько соединений, какой дата-центр, какой маршрут живой, сколько сбоев.
|
||
|
||
Прав администратора не нужно: TGLock не правит ни системный DNS, ни файл `hosts` — нужные адреса Telegram зашиты в маршрутах, а TLS SNI остаётся настоящим.
|
||
|
||
`--lan` и любой другой сетевой адрес пропускают **только** адреса Telegram. Обычным SOCKS5-прокси TGLock становится исключительно по явному `--allow-direct`, и на сетевом адресе это открытый прокси для всего интернета — включайте осознанно.
|
||
|
||
#### Юнит для systemd
|
||
|
||
```ini
|
||
[Unit]
|
||
Description=TGLock — Telegram через WebSocket-туннель
|
||
After=network-online.target
|
||
Wants=network-online.target
|
||
|
||
[Service]
|
||
Type=exec
|
||
ExecStart=/usr/local/bin/tglock-cli --lan --secret-file /var/lib/tglock/secret
|
||
Restart=on-failure
|
||
RestartSec=5s
|
||
StateDirectory=tglock
|
||
DynamicUser=yes
|
||
NoNewPrivileges=yes
|
||
ProtectSystem=strict
|
||
ProtectHome=yes
|
||
PrivateTmp=yes
|
||
RestrictAddressFamilies=AF_INET AF_INET6
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
```
|
||
|
||
```bash
|
||
sudo install -m755 tglock-cli-x86_64-unknown-linux-gnu /usr/local/bin/tglock-cli
|
||
sudo systemctl enable --now tglock
|
||
journalctl -u tglock -f
|
||
```
|
||
|
||
`--secret-file` здесь обязателен, и это не украшение: секрет — половина `tg://proxy`-ссылки. Без файла он генерируется заново при каждом старте, и после первого же `systemctl restart` все настроенные клиенты перестанут подключаться. `StateDirectory=tglock` создаёт `/var/lib/tglock` с нужными правами, а сам файл пишется с режимом `600`.
|
||
|
||
Остановка по `systemctl stop` приходит как `SIGTERM` — CLI закрывает туннели и выходит с нулевым кодом, а не умирает по `SIGKILL`.
|
||
|
||
#### Docker
|
||
|
||
```dockerfile
|
||
FROM rust:1.88 AS build
|
||
WORKDIR /src
|
||
COPY . .
|
||
RUN cargo build --release --locked --no-default-features --bin tglock-cli
|
||
|
||
FROM debian:bookworm-slim
|
||
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
COPY --from=build /src/target/release/tglock-cli /usr/local/bin/tglock-cli
|
||
EXPOSE 1080
|
||
ENTRYPOINT ["tglock-cli", "--lan", "--secret-file", "/data/secret"]
|
||
```
|
||
|
||
```bash
|
||
docker run -d --name tglock -p 1080:1080 -v tglock-data:/data tglock
|
||
```
|
||
|
||
Образу не нужны ни Node.js, ни `libwebkit2gtk` — только `ca-certificates` для проверки сертификата Telegram.
|
||
|
||
---
|
||
|
||
## 🔬 Как это работает
|
||
|
||
```
|
||
Telegram Desktop / mobile (через LAN)
|
||
▼
|
||
SOCKS5 (127.0.0.1:1080 или 0.0.0.0:1080)
|
||
▼
|
||
TGLock — читает первые 64 байта
|
||
obfuscated2 init-пакета,
|
||
расшифровывает AES-256-CTR,
|
||
достаёт номер DC
|
||
▼
|
||
WSS → kws{dc}.web.telegram.org
|
||
▼
|
||
Telegram Data Center
|
||
```
|
||
|
||
1. **Локальный SOCKS5-прокси** перехватывает соединения Telegram Desktop.
|
||
2. Из первых 64 байт `obfuscated2`-пакета **расшифровывается номер DC** — AES-256-CTR, ключ в байтах `[8..40]`, IV в `[40..56]`, DC ID — `i32` в `[60..64]`.
|
||
3. Трафик заворачивается в **WebSocket** к `kws{dc}.web.telegram.org` — это **тот же домен**, через который работает Telegram Web в браузере.
|
||
4. Провайдер видит **TLS-handshake к `web.telegram.org`** — это легитимный HTTPS. DPI не видит MTProto. IP-шейпинг не работает, потому что `web.telegram.org` не блокируется в принципе.
|
||
5. Весь остальной трафик (не-Telegram) проходит **напрямую** — без замедления.
|
||
|
||
📖 **Подробный технический разбор архитектуры** — см. [HABR.md](HABR.md) (≈7 мин чтения, история v1 → v2, AES-decrypt, bias `select!` для Pong, кроссплатформенная сборка).
|
||
|
||
---
|
||
|
||
## 🆚 Сравнение с альтернативами
|
||
|
||
| | GoodbyeDPI | Zapret | AmneziaVPN | **TGLock** |
|
||
|---|:---:|:---:|:---:|:---:|
|
||
| Подход | Фрагментация пакетов | TCP/UDP desync | Полноценный VPN-туннель | **WebSocket-туннель** |
|
||
| Обходит IP-шейпинг | ❌ | ❌ | ✅ | **✅** |
|
||
| macOS (GUI) | ❌ Windows only | ❌ только CLI | ✅ | **✅** |
|
||
| Нужен сервер / подписка | ❌ | ❌ | ✅ ($) | **❌** |
|
||
| Только Telegram | ❌ | ❌ | ❌ | **✅** |
|
||
| LAN-шаринг | ❌ | сложно | ✅ | **✅ (галочка)** |
|
||
| Размер | ~200 КБ | ~5 МБ | ~80 МБ | **компактное desktop-приложение** |
|
||
| Цена | 0 ₽ | 0 ₽ | $3–10/мес | **0 ₽** |
|
||
|
||
> **⚠ Когда TGLock не подойдёт:** если заблокирован не только Telegram, а ещё YouTube, Discord, Instagram, ChatGPT, Spotify — нужен полноценный VPN. Тут поможет **[🌹 RoseVPN](https://t.me/rosevpnru_bot)** (см. блок ниже).
|
||
|
||
---
|
||
|
||
## ❓ Часто задаваемые вопросы
|
||
|
||
<details>
|
||
<summary><b>Telegram заблокировали в России — это правда?</b></summary>
|
||
|
||
Полностью Telegram в РФ не заблокирован, но провайдеры **замедляют** трафик через DPI и **шейпят по IP-диапазонам** Telegram DC (149.154.160–175, 91.108.4–8, 91.108.56–59 и др.). У части пользователей мессенджер открывается через раз, голосовые звонки рвутся, видео не грузится, фото уходят минутами. TGLock решает именно эту проблему — заворачивает Telegram-трафик в HTTPS к `web.telegram.org`, который не блокируется.
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>Это безопасно? Что с моими данными?</b></summary>
|
||
|
||
TGLock — **локальный прокси**. Он работает только на твоём компьютере и не отправляет данные третьим сторонам. Соединение идёт напрямую к серверам Telegram через их же домен `web.telegram.org` — тот же, что использует Telegram Web в браузере. Кода ~350 строк, всё открыто на GitHub — можно прочитать и собрать самому.
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>Чем отличается от GoodbyeDPI / Zapret / ByeDPI?</b></summary>
|
||
|
||
GoodbyeDPI, Zapret и ByeDPI **фрагментируют пакеты**, чтобы DPI не распознал MTProto. Это работает, пока провайдер блокирует *по содержимому*. Но если шейпинг идёт **по IP** (а так делают большинство крупных РФ-провайдеров с 2024–2026 — Ростелеком, МТС, Билайн, Мегафон), фрагментация не помогает: пакеты всё равно идут на «нехороший» IP и троттлятся.
|
||
|
||
TGLock же отправляет трафик на **`web.telegram.org`** — обычный HTTPS-домен, который не блокируется в принципе.
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>Работает ли на iPhone или Android?</b></summary>
|
||
|
||
Напрямую — нет, TGLock сам по себе только для desktop. Но если включить **LAN-режим** на компьютере, в настройках Telegram на телефоне можно указать SOCKS5-прокси с IP компа. Telegram на мобиле начнёт ходить через ПК. Удобно, если дома один компьютер всегда включён.
|
||
|
||
Для полностью мобильного решения нужен VPN — например, **[🌹 RoseVPN](https://t.me/rosevpnru_bot)** с приложением Karing для iOS/Android.
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>Замедляет ли TGLock интернет?</b></summary>
|
||
|
||
Нет. Через прокси идёт **только** трафик Telegram (фильтрация по IP-диапазонам Telegram DC). YouTube, браузер, игры, торренты — всё это идёт напрямую и не замедляется. В этом главное отличие от VPN.
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>Apple ругается «приложение не проверено / нельзя открыть»</b></summary>
|
||
|
||
Подпись Apple Developer ID стоит $99 в год — для бесплатного open-source это перебор. Сними блокировку Gatekeeper руками — открой Терминал и выполни:
|
||
|
||
```bash
|
||
xattr -cr ~/Downloads/tglock-macos-arm64
|
||
chmod +x ~/Downloads/tglock-macos-arm64
|
||
```
|
||
|
||
После этого приложение запустится двойным кликом из Finder.
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>Telegram пишет «прокси не настроен» или сразу отключается</b></summary>
|
||
|
||
Открой TGLock — он должен показывать **«ПОДКЛЮЧЕНО»** и хотя бы одно активное соединение, когда Telegram пытается работать. Если соединений ноль:
|
||
|
||
- Не запущен ли уже другой прокси на порту 1080? В TGLock можно поменять порт в настройках.
|
||
- Антивирус/файрвол не блокирует localhost-подключения?
|
||
- В настройках Telegram сервер указан как `127.0.0.1`, не `localhost` — на некоторых системах это разные сетевые стеки.
|
||
- На macOS — убедись что снят Gatekeeper (`xattr -cr ...`).
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>Порт 1080 уже занят другим приложением</b></summary>
|
||
|
||
В окне TGLock есть поле **«Порт»** — поменяй на любой свободный (например, `10800`, `1081`, `8888`). После рестарта прокси автоматически обновит deep-link для Telegram. В настройках Telegram укажи новый порт.
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>А что если провайдер заблокирует и <code>web.telegram.org</code>?</b></summary>
|
||
|
||
Тогда TGLock перестанет работать у этого конкретного провайдера. Но **публичная блокировка веб-версии Telegram** — это большой шаг, и Роскомнадзор пока на него не идёт. Если всё же случится — используй **[🌹 RoseVPN](https://t.me/rosevpnru_bot)**, там домен фронтирования автоматически меняется (SNI rotation, Reality), и пробивает даже агрессивный DPI.
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>Можно ли использовать TGLock как обычный SOCKS5 для других приложений?</b></summary>
|
||
|
||
Не рекомендуется. TGLock детектирует Telegram-трафик по IP получателя и оборачивает в WebSocket только его. Остальное идёт напрямую — без шифрования и аутентификации, как обычный SOCKS5-релей. Для других приложений возьми правильный SOCKS5-сервер (или VPN).
|
||
</details>
|
||
|
||
<details>
|
||
<summary><b>Где скачать новые версии? Будут ли обновления?</b></summary>
|
||
|
||
Все релизы — на странице **[GitHub Releases](https://github.com/by-sonic/tglock/releases)**. При пуше тега `v*` GitHub Actions автоматически собирает бинарники для всех 4 платформ и публикует. Подпишись на репозиторий (кнопка **Watch** → **Custom** → **Releases**), чтобы получать уведомления о новых версиях.
|
||
</details>
|
||
|
||
---
|
||
|
||
## 🛠 Стек технологий
|
||
|
||
| Технология | Зачем |
|
||
|---|---|
|
||
| **Rust** | Один бинарник, нативная скорость, без runtime-зависимостей |
|
||
| **Tauri 2** | Нативная кроссплатформенная оболочка с современным web-интерфейсом |
|
||
| **TypeScript + Vite** | Интерфейс, внутренняя навигация и строгая типизация |
|
||
| **tokio** | Async I/O для тысяч одновременных соединений |
|
||
| **tokio-tungstenite** | WebSocket-клиент с TLS поверх `native-tls` |
|
||
| **aes** + **ctr** | Расшифровка MTProto `obfuscated2` init-пакета |
|
||
|
||
---
|
||
|
||
## 🏗 Сборка из исходников
|
||
|
||
```bash
|
||
git clone https://github.com/by-sonic/tglock.git
|
||
cd tglock
|
||
npm ci
|
||
npm run tauri build
|
||
```
|
||
|
||
Результат — `target/release/tglock` (или `tglock.exe` на Windows).
|
||
|
||
Минимальная версия Rust — **1.88** (`rust-version` в `Cargo.toml`, проверяется отдельной задачей в CI). На более старых тулчейнах зависимости не соберутся: часть из них требует edition 2024.
|
||
|
||
### Только CLI, без графики
|
||
|
||
```bash
|
||
cargo build --release --locked --no-default-features --bin tglock-cli
|
||
```
|
||
|
||
Ни Node.js, ни фронтенда, ни `libwebkit2gtk` для этого не нужно — при выключенной фиче `gui` Tauri и системный WebView в сборку не попадают вообще. Именно так CLI собирается на голом сервере.
|
||
|
||
### Кросс-компиляция через GitHub Actions
|
||
|
||
Хочешь собрать свой релиз? Форкни репозиторий, поставь тег `v1.0.1`, и `.github/workflows/release.yml` сам соберёт бинарники под Windows x64, macOS ARM64, macOS Intel и Linux x64.
|
||
|
||
---
|
||
|
||
## 🌹 Нужен VPN на всё подряд?
|
||
|
||
Если у тебя заблокирован **не только Telegram**, а ещё YouTube, Discord, Instagram, ChatGPT, Spotify — обходить каждое приложение отдельно нет смысла. Возьми VPN, который умеет всё сразу.
|
||
|
||
<p align="center">
|
||
<a href="https://t.me/rosevpnru_bot">
|
||
<img alt="Подключить RoseVPN — Telegram-бот" src="https://img.shields.io/badge/%F0%9F%8C%B9%20RoseVPN-%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D1%8C%20%D0%B2%20Telegram-E63946?style=for-the-badge&logo=telegram&logoColor=white&labelColor=0a0a0a" height="40"/>
|
||
</a>
|
||
</p>
|
||
|
||
**Что внутри RoseVPN:**
|
||
|
||
- 🔥 **Hysteria2 + VLESS-Reality fallback** — обходит TSPU и агрессивный DPI
|
||
- 🛡 **Без логов трафика** — приватность по умолчанию
|
||
- 🎁 **Бесплатный пробный период** — без карты, без регистрации
|
||
- 📱 **Karing-клиент** с автонастройкой — установка в 2 тапа
|
||
- 💻 **Windows, macOS, iOS, Android** — везде нативные приложения
|
||
- 🔄 **SNI-ротация** на случай новых блокировок
|
||
|
||
Подключение — через Telegram-бот **[@rosevpnru_bot](https://t.me/rosevpnru_bot)**.
|
||
|
||
---
|
||
|
||
## 📄 Лицензия
|
||
|
||
[MIT](LICENSE) — делай что хочешь. Форки, модификации, использование в коммерческих проектах — всё разрешено. Ссылка на репозиторий приветствуется, но необязательна.
|
||
|
||
---
|
||
|
||
<p align="center">
|
||
<sub><b>by sonic</b> · <a href="https://t.me/rosevpnru_bot">@rosevpnru_bot</a> · <a href="https://github.com/by-sonic/tglock/issues">Issues & feedback</a></sub>
|
||
</p>
|