No description
  • Rust 58.6%
  • Kotlin 33.4%
  • Shell 4.3%
  • PowerShell 1.9%
  • Python 1%
  • Other 0.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
danusha2345 5c3cf032da feat(openwrt): маршрутизация по спискам сетей и режим firewall=zone; пакет 2.1.17-2
- hook csqtt-tun: route_mode exclude|include, list route_net, route_nets_file,
  route_private (throw для 10/8, 172.16/12, 192.168/16, 169.254/16 в таблице 202);
  down/откат делают flush таблицы вместо del default
- option firewall dynamic|zone: в zone hook не создаёт правила fw4/iptables,
  только маршруты, и предупреждает, если csqtt0 не device ни одной зоны;
  старые динамические правила удаляются в обоих режимах
- 8 новых netns-тестов (23 всего), README и changelog, PKG_RELEASE 2

По мотивам issue #5 (скрипт Region174chel). Rust-клиент не менялся.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-10 21:09:18 +03:00
.github/workflows fix(openwrt): nftables и iptables, ревизия пакетов 2.1.16-2 2026-10-09 07:41:33 +03:00
app feat: установка APK в приложении и резервные репозитории; CSQTT 2.1.17 2026-10-09 08:43:18 +03:00
docs fix: исправить recovery и диагностику; выпуск 2.1.13 с OpenWrt 2026-09-10 12:20:29 +03:00
gradle/wrapper Initial standalone CSQTT Android and server 2.1.7 2026-08-30 13:04:30 +03:00
openwrt feat(openwrt): маршрутизация по спискам сетей и режим firewall=zone; пакет 2.1.17-2 2026-10-10 21:09:18 +03:00
rust-client feat: установка APK в приложении и резервные репозитории; CSQTT 2.1.17 2026-10-09 08:43:18 +03:00
rust-server feat: установка APK в приложении и резервные репозитории; CSQTT 2.1.17 2026-10-09 08:43:18 +03:00
scripts feat(openwrt): маршрутизация по спискам сетей и режим firewall=zone; пакет 2.1.17-2 2026-10-10 21:09:18 +03:00
shared release: prepare 2.1.11 with sequenced SOCKS5 and compatibility diagnostics 2026-09-08 11:10:02 +03:00
.gitignore fix(openwrt): nftables и iptables, ревизия пакетов 2.1.16-2 2026-10-09 07:41:33 +03:00
build.gradle.kts Initial standalone CSQTT Android and server 2.1.7 2026-08-30 13:04:30 +03:00
CHANCHELOG.md feat(openwrt): маршрутизация по спискам сетей и режим firewall=zone; пакет 2.1.17-2 2026-10-10 21:09:18 +03:00
gradle.properties Initial standalone CSQTT Android and server 2.1.7 2026-08-30 13:04:30 +03:00
gradlew Initial standalone CSQTT Android and server 2.1.7 2026-08-30 13:04:30 +03:00
gradlew.bat Initial standalone CSQTT Android and server 2.1.7 2026-08-30 13:04:30 +03:00
LICENSE Initial standalone CSQTT Android and server 2.1.7 2026-08-30 13:04:30 +03:00
local.properties.example Initial standalone CSQTT Android and server 2.1.7 2026-08-30 13:04:30 +03:00
README.md feat: установка APK в приложении и резервные репозитории; CSQTT 2.1.17 2026-10-09 08:43:18 +03:00
settings.gradle.kts Initial standalone CSQTT Android and server 2.1.7 2026-08-30 13:04:30 +03:00

CSQTT Android + Server

GitHub Boosty

Android Rust License

Поддерживаемая сборка CSQTT для Android и Linux-сервера. Клиент создаёт системный VPN-интерфейс и передаёт трафик через TURN/RTP, маскируя транспорт под зашифрованный медиатрафик звонка.

Актуальный релиз

Версия Android: 2.1.17, package ID io.github.danusha2345.csqtt. APK устанавливается рядом с оригиналом amurcanov/csqtt и прежними версиями нашего приложения (csqtt.quic.amurcanov). Это отдельная установка: старые данные сохраняются, но настройки и разрешение VPN нужно задать заново. Автоматической миграции между package ID нет.

Кнопка «Обновить» скачивает APK в приложении, проверяет SHA256, package ID, версию и подпись, затем открывает системный установщик Android. При необходимости Android сначала запросит разрешение установки из CSQTT. Доступны прогресс и отмена; источники проверяются в порядке GitHub → GitLab → Forgejo. При обрыве загрузки зеркало должно подтвердить ту же версию и SHA256. Версии до 2.1.17 ещё открывают страницу релиза: переход на новый package ID нужно один раз выполнить установкой нового APK.

Каждый пользователь разворачивает собственный сервер и вводит его адрес в формате host:46010. Адрес и пароль нашей инфраструктуры в Git и Releases не публикуются. Для установки на большинство устройств используйте CSQTT-2.1.17-universal.apk из раздела Releases.

Возможности

  • Android VPN на arm64-v8a и armeabi-v7a;
  • OpenWrt-клиент с нативным TUN и procd для x86_64, aarch64 и armv7;
  • TURN через UDP или TCP/TLS;
  • режим локального SOCKS5 CONNECT на 127.0.0.1 без Android VPN;
  • маскировка audio и video;
  • ручные и автоматические режимы VK call links/hashes;
  • от 9 до 126 workers;
  • автопауза VPN при подключении к Wi-Fi;
  • профили, исключения приложений и системный quick settings tile;
  • Rust server со встроенной web-панелью, SQLite/WAL и управлением клиентами;
  • deploy на VPS через SSH из Android-приложения.
  • защищённое обновление клиентского порта и VK-хешей при подключении и каждые 6 часов.

Подробный список изменений находится в CHANCHELOG.md.

Изменения текущих исходников: запросы upstream и исправления. Для ручной установки, собственной подсети, SOCKS5 host и интеграции внешней панели см. Server administration/API.

Сборка Android

Требуются JDK 17, Android SDK 37, Android NDK r28c и Rust 1.97.1.

Создайте неотслеживаемый local.properties по шаблону local.properties.example, затем выполните:

bash gradlew testDebugUnitTest lintDebug lintRelease assembleRelease --no-daemon

Release-сборка требует явно настроенный keystore и не переходит автоматически на debug-подпись. Перед ней также обязательно должны пройти native provenance gate и проверка встроенного server binary. На Linux полный native workflow запускается так:

scripts/build_android_native.sh --tests
rust-server/build_linux.sh --arch all --tests
cp rust-server/dist/csqtt-linux-* app/src/main/assets/
scripts/build_apk.sh

APK создаются в app/build/outputs/apk/release/.

Сборка Rust-компонентов

Клиент:

cd rust-client
cargo +1.97.1 test --locked
cargo +1.97.1 ndk -t arm64-v8a -t armeabi-v7a -t x86_64 -P 26 build --release --locked

Linux server (статические musl-бинарники для amd64, arm64 и armv7; нужны zig и cargo-zigbuild):

cd rust-server
cargo +1.97.1 test --locked
./build_linux.sh --arch all --tests   # dist/csqtt-linux-{amd64,arm64,armv7}

Одна архитектура: ./build_linux.sh --arch arm64. Приложение при деплое само выбирает бинарник по uname -m VPS. build_linux.bat на Windows собирает только amd64; ARM-бинарники собираются на Linux или в WSL.

OpenWrt

Для роутеров опубликован первый beta-порт с нативным Linux TUN, UCI-конфигом, procd-сервисом, policy routing для LAN и дополнительным режимом локального SOCKS5. Поддерживаются:

  • x86_64;
  • aarch64 (aarch64_generic);
  • armv7 hard-float с NEON (arm_cortex-a7_neon-vfpv4).

Скачать готовые файлы: CSQTT OpenWrt 0.1.0 Beta.

Полная русская инструкция по выбору архитектуры, установке, UCI-настройке, проверке и остановке: openwrt/README.md.

  • Для OpenWrt 25.12+ используйте универсальный .tar.gz.
  • Для OpenWrt 24.10 можно использовать .tar.gz или готовый .ipk.
  • MIPS/MIPSel пока не поддерживаются.

Нужны тестировщики

Первый OpenWrt-порт опубликован как beta. Если у вас есть роутер x86_64, aarch64 или armv7 с NEON, пожалуйста, установите подходящую сборку по инструкции, проверьте TUN/SOCKS5, перезапуск сервиса и работу устройств в LAN, а результат сообщите в GitHub Issues.

В отчёте укажите модель роутера, версию OpenWrt, вывод uname -m, выбранный режим и очищенный logread -e csqtt. Не публикуйте пароль подключения и VK-хеши.

Безопасность и ограничения

  • local.properties, keystore, адреса/пароли частных серверов и VK call links не должны попадать в Git или публичные отчёты;
  • SSH host key при первом deploy сохраняется в приватном хранилище приложения; изменение ключа того же host:port блокируется как возможная подмена сервера;
  • config sync не передаёт пароль в URL: запрос подписан HMAC, ответ зашифрован AES-256-CTR и защищён отдельным HMAC; ключи выводятся через HKDF из connection password;
  • SOCKS5 слушает только loopback, поддерживает TCP CONNECT и удалённый DNS; UDP Associate и доступ к private/link-local адресам VPS намеренно запрещены;
  • сервер создаёт конфигурацию с режимом 0700, SQLite/WAL/SHM — 0600;
  • полный TURN e2e требует действующей VK call link/hash;
  • проект предназначен только для некоммерческого использования.

Происхождение и лицензия

Это поддерживаемый fork проекта amurcanov/csqtt. Авторство исходного проекта сохраняется. Код распространяется на условиях PolyForm Noncommercial License 1.0.0; коммерческое использование, перепродажа и интеграция в платные сервисы запрещены.