Skip to content

About

CSQTT Android VPN client and Linux server using VK TURN

Resources

Stars

11 stars

Watchers

2 watching

Forks

Repository files navigation

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; коммерческое использование, перепродажа и интеграция в платные сервисы запрещены.

About

CSQTT Android VPN client and Linux server using VK TURN

Resources

Stars

11 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages