mirror of
https://github.com/by-sonic/tglock.git
synced 2026-10-06 09:16:00 +03:00
fix: маршруты, медиа и Worker; Android APK и статический ARM64 CLI (#60)
* fix: address routing, media, worker and platform issues * ci: use available Android tools and verify Windows CLI artifact * fix(gui): return a result from asynchronous stop command * test(android): verify installed APK and proxy lifecycle on emulator * fix(media): use native MTProto for CDN203 and retain recent diagnostics * Fix owned WebSocket split after transport boxing * Clarify CDN transport and connection status guarantees * Recognize accessible Android power button labels * chore(release): prepare 2.0.0-beta.15 with verified draft publication --------- Co-authored-by: babin <Thartewerner536e@engineer.com>
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
# CLI для ARM64 / OpenWrt
|
||||
|
||||
Цель сборки — `aarch64-unknown-linux-musl`: ARM64 Linux, статический бинарь без
|
||||
зависимости от glibc, OpenSSL или WebView. Это подходит для 64-битной прошивки
|
||||
NanoPi R4S и других ARM64-роутеров. MIPS и 32-битный ARM требуют другой сборки.
|
||||
Проверьте архитектуру прошивки командой `uname -m`: ожидается `aarch64`.
|
||||
|
||||
Workflow **Static ARM64 CLI** собирает и запускает тесты на ARM64 runner,
|
||||
проверяет ELF (нет `INTERP` и `NEEDED`), запуск CLI, завершение по SIGTERM и
|
||||
сохранение секрета между запусками. Артефакт содержит бинарь и SHA-256.
|
||||
Release workflow прикладывает такой же проверенный артефакт к будущим релизам.
|
||||
Наличие сборки в PR не означает, что уже опубликован новый релиз.
|
||||
|
||||
Это проверка ARM64 Linux, а не испытание конкретной прошивки OpenWrt или
|
||||
доступности Telegram через вашего провайдера.
|
||||
|
||||
## Установка
|
||||
|
||||
Скачайте артефакт успешного запуска workflow нужного PR либо файл
|
||||
`tglock-cli-aarch64-unknown-linux-musl` из релиза, если он там опубликован.
|
||||
Сверьте SHA-256, скопируйте бинарь на роутер и выполните:
|
||||
|
||||
```sh
|
||||
chmod 755 /usr/bin/tglock-cli
|
||||
/usr/bin/tglock-cli --version
|
||||
mkdir -p /etc/tglock
|
||||
chmod 700 /etc/tglock
|
||||
```
|
||||
|
||||
Создайте `/etc/tglock/tglock.toml`:
|
||||
|
||||
```toml
|
||||
port = 1080
|
||||
lan = true
|
||||
secret_file = "/etc/tglock/secret"
|
||||
# worker = ["your-name.workers.dev"]
|
||||
```
|
||||
|
||||
`lan = true` нужен для телефонов и компьютеров в домашней сети. По умолчанию
|
||||
CLI слушает только loopback. Секрет создаётся при первом запуске и сохраняется
|
||||
в указанном файле; он не должен теряться при перезагрузке или обновлении.
|
||||
|
||||
```sh
|
||||
chmod 600 /etc/tglock/tglock.toml
|
||||
/usr/bin/tglock-cli --config /etc/tglock/tglock.toml
|
||||
```
|
||||
|
||||
В Telegram выберите MTProto и используйте LAN-адрес роутера, порт `1080` и
|
||||
секрет из напечатанной ссылки. `127.0.0.1` на телефоне означает сам телефон.
|
||||
Разрешайте входящий TCP `1080` только из доверенной LAN; не публикуйте порт
|
||||
в WAN. Звонки через UDP эта сборка не реализует.
|
||||
|
||||
## Сервис procd
|
||||
|
||||
После проверки ручного запуска сохраните `/etc/init.d/tglock`:
|
||||
|
||||
```sh
|
||||
#!/bin/sh /etc/rc.common
|
||||
START=95
|
||||
STOP=10
|
||||
USE_PROCD=1
|
||||
|
||||
start_service() {
|
||||
procd_open_instance
|
||||
procd_set_param command /usr/bin/tglock-cli --config /etc/tglock/tglock.toml
|
||||
procd_set_param respawn 3600 5 5
|
||||
procd_set_param stdout 1
|
||||
procd_set_param stderr 1
|
||||
procd_close_instance
|
||||
}
|
||||
```
|
||||
|
||||
```sh
|
||||
chmod 755 /etc/init.d/tglock
|
||||
/etc/init.d/tglock enable
|
||||
/etc/init.d/tglock start
|
||||
logread -e tglock
|
||||
```
|
||||
|
||||
Обновление: остановите сервис, замените бинарь после проверки контрольной суммы,
|
||||
сохраните `/etc/tglock`, запустите сервис снова. Для отмены автозапуска используйте
|
||||
`/etc/init.d/tglock stop` и `/etc/init.d/tglock disable`.
|
||||
|
||||
## TLS и маршруты
|
||||
|
||||
Встроенный набор доверенных корневых сертификатов webpki обновляется вместе с
|
||||
бинарём. Проверка сертификата и имени включена: при подключении к закреплённому
|
||||
IP имя Telegram по-прежнему используется для SNI и проверки сертификата.
|
||||
На роутере должно быть установлено правильное время.
|
||||
|
||||
Если все Telegram IP недоступны, нужен доступный маршрут через собственный
|
||||
[Cloudflare Worker](CLOUDFLARE_WORKER.md). Статическая сборка сама по себе не
|
||||
устраняет блокировку всех внешних маршрутов.
|
||||
Reference in New Issue
Block a user