• openwrt-v2.1.17-r2 5c3cf032da

    danik released this 2026-10-10 21:23:01 +03:00 | 0 commits to main since this release

    OpenWrt 2.1.17-2

    Новые настройки по мотивам #5. Спасибо @Region174chel за идею списка подсетей.

    • Маршрутизация по списку сетей. route_mode='exclude' (по умолчанию): весь LAN идёт в туннель, кроме сетей из списка. route_mode='include': в туннель идут только сети из списка. Список задаётся через list route_net или файл route_nets_file (одна сеть на строку).
    • Локальные сети не попадают в туннель. Трафик в 10/8, 172.16/12, 192.168/16 и 169.254/16 идёт мимо туннеля. Отключается через route_private='0'.
    • Вариант с зоной wan. firewall='zone': добавьте csqtt0 в зону wan, и правила forward и masquerade делает сам firewall. Они не пропадают после перезапуска firewall.

    Установка

    Скачайте .tar.gz своей архитектуры: x86_64, aarch64_generic или arm_cortex-a7_neon-vfpv4 (ARMv7 с NEON). Файлы .ipk — для OpenWrt 24.10 с opkg.

    mkdir -p /tmp/csqtt-install
    tar -xzf /tmp/csqtt-openwrt_2.1.17-2_aarch64_generic.tar.gz -C /tmp/csqtt-install
    sh /tmp/csqtt-install/install.sh
    /etc/init.d/csqtt restart
    logread -e csqtt
    

    Существующий /etc/config/csqtt сохраняется. Новые опции описаны в README.

    Что проверено

    23 теста hook на настоящих nftables и iptables в изолированной сети, 4 теста упаковки, ShellCheck. На физическом роутере не проверялось — будем рады отзывам.

    Rust-клиент остался 2.1.17: в пакетах те же бинарники, что в релизе v2.1.17, проверенные по SHA256. Android, сервер и desktop не менялись. Релиз помечен Pre-release, чтобы приложение Android не считало его обновлением.

    Downloads
  • v2.1.17 2d1ca82b8e

    danik released this 2026-10-09 08:46:50 +03:00 | 1 commits to main since this release

    CSQTT 2.1.17

    Android: установка обновлений из приложения

    Кнопка «Обновить» скачивает APK внутри приложения, показывает прогресс и позволяет отменить загрузку. Проверяются SHA256, package ID, версия и подпись APK; после этого автоматически открывается системный установщик Android. Если нужно, сначала откроется системное разрешение на установку из CSQTT. Подтверждение установки остаётся стандартным действием Android; браузер и ручной поиск APK больше не нужны.

    GitHub — основной источник, GitLab и Forgejo — резервные. При обрыве загрузки зеркало должно подтвердить ту же версию и SHA256. При поиске обновлений исключены черновики, prerelease, отдельные OpenWrt-выпуски и неполные релизы.

    Первый переход на новый package ID

    Новый ID: io.github.danusha2345.csqtt. Приложение устанавливается рядом с оригиналом amurcanov и прежним пакетом csqtt.quic.amurcanov. Старые данные не удаляются, но настройки, выбор приложений и разрешение VPN в новой установке потребуется задать заново. Автоматической миграции между package ID нет.

    Версии до 2.1.17 не содержат нового updater и по-прежнему открывают страницу релиза. Новый APK нужно один раз установить вручную; последующие обновления будут скачиваться из приложения.

    Остальные файлы

    • Подписанные APK: universal, arm64-v8a, armeabi-v7a, x86_64. Для обычной установки подходит CSQTT-2.1.17-universal.apk.
    • Серверы Linux: amd64, arm64, armv7. Протокол не изменён, обновление совместимого сервера необязательно.
    • OpenWrt 2.1.17-1: nftables/fw4 и iptables, повторный запуск без накопления правил и откат ошибок. Для OpenWrt 25.12+ выбирайте .tar.gz; legacy .ipk — для 24.10 с opkg. MIPS в выпуск не входит.
    • Приложен desktop 2.1.19 для Windows/Linux. Windows updater также получил резервные источники; bundled core остаётся 2.1.15.

    Проверки

    184 Android unit-теста, release lint, 264 теста Rust-клиента (4 ignored), 118 тестов сервера, cross-build/clippy, 15 OpenWrt firewall-тестов и 4 release-safety теста. Проверены подписи APK, новый package ID, встроенные серверные/client bytes, все архивы и CLI ARM-бинарников через QEMU.

    В изолированном эмуляторе Android 15 проверены открытие системного установщика через FileProvider и установка временного тестового APK с совпадающей подписью и большей версией. Полный VPN/TURN-сеанс, физический роутер и установка через updater на физическом Android в этом прогоне не проверялись. SHA256SUMS и BUILDINFO приложены.

    Downloads
  • openwrt-v2.1.16-r2 a440fde35e

    danik released this 2026-10-09 07:45:14 +03:00 | 2 commits to main since this release

    OpenWrt 2.1.16-2

    Исправлена совместимость с nftables/firewall4 по сообщению #5. Спасибо @alexer21r за рабочий пример и проверку на OpenWrt 25.12.5.

    • При активной таблице inet fw4 используются нативные правила nftables; для конфигураций без fw4 сохранён iptables.
    • Повторный запуск не накапливает правила. При остановке удаляются только правила CSQTT; при ошибке настройки выполняется откат маршрутов и частично добавленных правил.
    • Удалена обязательная зависимость от iptables-nft. На fw4 используется уже установленный nftables; на fw3 требуется имеющийся iptables с comment, conntrack и MASQUERADE.

    Установка

    Для OpenWrt 25.12+ скачайте .tar.gz своей архитектуры: x86_64, aarch64_generic или arm_cortex-a7_neon-vfpv4 (ARMv7 с NEON). Legacy .ipk предназначены для OpenWrt 24.10 с opkg. Файлы .apk для пакетного менеджера OpenWrt этим выпуском не предоставляются; пакет можно собрать соответствующим SDK из feed-рецепта.

    Пример для aarch64 на OpenWrt 25.12+:

    apk add kmod-tun ip-full
    mkdir -p /tmp/csqtt-install
    tar -xzf /tmp/csqtt-openwrt_2.1.16-2_aarch64_generic.tar.gz -C /tmp/csqtt-install
    sh /tmp/csqtt-install/install.sh
    /etc/init.d/csqtt restart
    logread -e csqtt
    

    Существующий /etc/config/csqtt сохраняется. После перезапуска firewall также перезапустите CSQTT: его правила динамические. Подробности — в инструкции.

    Проверки и границы

    Прошли 15 регрессионных тестов firewall на настоящих nftables и iptables-nft в изолированной Linux-сети, включая BusyBox sh, переход со старых правил, повторный старт/остановку и откат ошибок; ещё 4 теста release safety и ShellCheck. Проверены содержимое и права файлов во всех шести пакетах, а также CLI бинарников x86_64 и ARM через QEMU.

    Rust-клиент остался 2.1.16: пакеты содержат проверенные по SHA256 бинарники предыдущего релиза, без пересборки. Android, сервер и desktop этим выпуском не обновляются. Это отдельная ревизия упаковки OpenWrt; общий Latest-релиз остаётся v2.1.16. На GitHub/Forgejo выпуск помечен Pre-release, чтобы Android updater не выбирал его как стабильный Android-релиз при резервном поиске.

    Физический OpenWrt-роутер, iptables-legacy и полный VPN/TURN-сеанс для этой ревизии нами не проверялись. Нужна обратная связь после установки. Контрольные суммы и происхождение бинарников приложены в SHA256SUMS и BUILDINFO.

    Downloads
  • v2.1.16 37e5647139

    danik released this 2026-10-05 17:30:00 +03:00 | 4 commits to main since this release

    CSQTT 2.1.16 — исправление зависания OpenWrt-клиента

    • OpenWrt (--tun-device): после остановки воркеров клиент больше не пересоздаёт csqtt0 в бесконечном цикле с повтором «TUN csqtt0 успешно открыт» в логе. Процесс завершается, и procd может перезапустить сервис. Исправляет #3.
    • Клиент пишет в лог недоступный VK-звонок: [КРЕД #N] Звонок VK недоступен, хеш … отключён: … (error_code=954). Раньше причина уходила только событием для GUI, и на роутере остановка выглядела беспричинной. Если видите эту строку — создайте новый звонок и подставьте свежий хеш.

    Установка и совместимость

    Android versionCode 226; четыре APK: universal, arm64-v8a, armeabi-v7a, x86_64. Все подписаны прежним сертификатом и устанавливаются поверх наших предыдущих релизов. Для Android меняется только строка лога.

    OpenWrt beta: .ipk и .tar.gz для x86_64, aarch64_generic и arm_cortex-a7_neon-vfpv4. Реальный роутер не тестировался.

    Desktop 2.1.18 с core 2.1.15 приложен (заменил 2.1.17 05.10.2026): в Windows системный MTU адаптера CSQTT теперь 1300. Ошибке OpenWrt-клиента desktop не подвержен.

    Сетевой протокол сохранён. Наши клиенты совместимы с сервером danusha2345/csqtt-android 2.1.11–2.1.16; обновление сервера не требуется. Код сервера не менялся, бинарники 2.1.16 пересобраны для комплекта. Upstream amurcanov/csqtt 2.1.9 несовместим.

    Проверки

    264 Rust client tests (4 ignored), 118 server tests, 177 Android unit tests, clippy, release lint, подписи и вложенные байты APK, серверные CLI под QEMU и состав OpenWrt-пакетов.

    Зависание воспроизведено на x86_64-сборке 2.1.15 в изолированном network namespace: после SIGINT в режиме --tun-device процесс не завершался. Релизный x86_64-бинарник 2.1.16 в тех же условиях выходит с кодом 0. Строка о недоступном звонке проверена на живом VK API с несуществующим хешем в режиме SOCKS5.

    Тест turn::integration_tests::authenticated_flow_survives_pool_deficit_and_keeps_channel_data_zero_copy нестабилен: упал в 2 из 23 полных прогонов этого дерева (0 из 28 на 2.1.15), изменённый код в нём не исполняется.

    Географическая сеть VK TURN, Geely, физический Windows VPN и реальный роутер в этом выпуске не проверялись. Деплой на сервер не выполнялся.

    Downloads
  • v2.1.15 05a8d1d675

    danik released this 2026-09-30 21:16:12 +03:00 | 5 commits to main since this release

    CSQTT 2.1.15 — устойчивость туннеля и выбор приложений

    • Исправлена гонка SettingsStore: фоновые коллекторы запускаются после инициализации Flow-полей.
    • При сетевой ошибке проверки VK разрешён повтор без привязки к Network только для известной текущей сети. Если сеть сменилась во время повтора, положительный результат не принимается. Это адаптация upstream PR #37 для Geely/Flyme Auto; на физическом Geely не проверено.
    • Не-IP и усечённые пакеты отбрасываются после обработки SOCKS5-кадров CSQPX2. EINVAL/EMSGSIZE и нулевая запись отдельного пакета не останавливают TUN writer; закрытый FD и неожиданные ошибки сохраняют прежнее поведение. Это адаптация upstream PR #39 без изменения нашего wire protocol.
    • Android: вкладка «Прилож.» → «Без VPN». Отмеченные приложения работают напрямую. Есть и обратный режим «Через VPN». Настройки сохраняются; VPN перечитывает их после выбора. CSQTT, VK и VK Звонки исключаются автоматически.

    Установка и совместимость

    Android versionCode 225; четыре APK: universal, arm64-v8a, armeabi-v7a, x86_64. Все подписаны прежним сертификатом и устанавливаются поверх наших предыдущих релизов.

    OpenWrt beta: .ipk и .tar.gz для x86_64, aarch64_generic и arm_cortex-a7_neon-vfpv4. Реальный роутер не тестировался.

    Desktop 2.1.17 с core 2.1.15 приложен к релизу; содержит дополнительную проверку входящих пакетов Windows/Wintun.

    Сетевой протокол сохранён. Наши клиенты совместимы с сервером danusha2345/csqtt-android 2.1.11–2.1.15; обновление сервера для этих исправлений не требуется. Серверные бинарники 2.1.15 пересобраны для комплекта. Upstream amurcanov/csqtt 2.1.9 несовместим.

    Проверены 264 Rust client tests (4 ignored), 118 server tests, 177 Android unit tests, clippy, release lint, подписи и вложенные байты APK, серверные CLI под QEMU и состав OpenWrt-пакетов. Тест с настоящим системным EINVAL подтверждает продолжение работы writer; CSQPX2 сохранён. Географическая сеть VK TURN, Geely и физический Windows VPN в этом выпуске не проверялись. Деплой на сервер не выполнялся.

    Исходные исправления: https://github.com/amurcanov/csqtt/pull/37 и https://github.com/amurcanov/csqtt/pull/39

    Downloads
  • v2.1.14 41a084c723

    danik released this 2026-09-22 22:56:54 +03:00 | 6 commits to main since this release

    Безопасность: проверка владельца TUN-сокета

    • Клиент принимает TUN-дескриптор по abstract UDS только от процесса того же пользователя (SO_PEERCRED). Имя сокета видно в /proc/<pid>/cmdline, и без проверки другой локальный пользователь Linux мог подсунуть свой TUN раньше GUI.
    • Сетевой протокол и сервер не изменены; обновлять сервер не обязательно.
    • В комплект включён CSQTT VPN desktop 2.1.16 (Windows/Linux): режимы «Авто API»/«Авто ВК», очистка NRPT после аварии, нативные маршруты Windows. Desktop 2.1.16 несёт core 2.1.11 — исправление UDS для Linux-desktop придёт со следующим обновлением его core.

    Проверено: 261 тест Rust-клиента, 118 тестов сервера, fmt/clippy, Android unit-тесты и release lint, подпись APK (SHA-256 сертификата 220ee9…), совпадение встроенных серверов и libclient.so с исходниками, OpenWrt-пакеты (x86_64 нативно, arm64/armv7 в QEMU). Не проверено: живой TURN E2E, реальный роутер, деплой на живой сервер.

    Downloads
  • v2.1.13 129a18f6f7

    danik released this 2026-09-10 12:21:34 +03:00 | 8 commits to main since this release

    CSQTT 2.1.13

    Исправления повторного ревью 2.1.12:

    • Recovery разрешает завершение процесса только по точному пути исполняемого файла CSQTT. Совпадения аргументов чужого процесса больше недостаточно.
    • Диагностические отчёты не собирают журнал, содержимое systemd unit и аргументы процессов, которые могут содержать секреты. Состояния служб, маршруты, интерфейсы и сокеты сохранены.
    • Кросс-сборка запускает тестовые бинарники только при совпадении архитектур Linux-хоста и цели. В остальных случаях тесты компилируются.
    • Добавлены регрессионные проверки этих сценариев в CI.

    Android versionCode 223; APK подписаны прежним release-сертификатом и устанавливаются поверх 2.1.12. Четыре APK: universal, arm64-v8a, armeabi-v7a, x86_64. Серверные бинарники: amd64, arm64, armv7; архив ручной установки включает installer и исправленные диагностические скрипты.

    Сетевой протокол не изменён. Windows/Linux desktop 2.1.12 остаётся совместимым, его обновлять не требуется. Приложенные desktop-архивы взяты без изменений из релиза csqtt-vpn 2.1.12; Windows-апдейтер не будет предлагать обновление до версии Android/server.

    Проверки и хэши перечислены в BUILDINFO и SHA256SUMS. Реальный ARM-VPS, Windows runtime и VK TURN E2E в этом выпуске не проверялись. Деплой на действующий сервер не выполнялся.

    OpenWrt (beta)

    Включены .ipk для opkg и .tar.gz для ручной установки: x86_64,
    aarch64_generic, arm_cortex-a7_neon-vfpv4. Конфигурация UCI отмечена как
    conffile. MIPS/MIPSel и установка на реальном роутере не проверялись.
    Инструкция: https://github.com/danusha2345/csqtt-android/blob/v2.1.13/openwrt/README.md

    Downloads
  • v2.1.12 69977a80e0

    danik released this 2026-09-09 15:16:03 +03:00 | 9 commits to main since this release

    CSQTT 2.1.12

    Перенос полезного из upstream amurcanov/csqtt 2.1.9 без его несовместимого wire protocol, плюс запросы из issues.

    • Сервер для ARM. Статические musl-бинарники для amd64, arm64 и armv7. APK несёт все три; приложение при деплое выбирает нужный по uname -m VPS. Ручной installer: rust-server/build_linux.sh --arch all, архив CSQTT-server-2.1.12-linux.tar.gz содержит все три бинарника.
    • Android x86_64 — отдельный APK для эмуляторов, Chromebook и части TV-приставок; universal APK включает и его.
    • Android TV — приложение видно в Leanback-лаунчере, тачскрин и Wi-Fi не обязательны.
    • tun-recover.sh перед стартом сервера (systemd ExecStartPre и Docker entrypoint): освобождает UDP-порт от своего же зависшего runtime и удаляет оставшийся TUN-интерфейс. Чужой процесс на порту не трогается — сервис не стартует с кодом 24 и подсказкой в journal.
    • DNS-профили в панели (Yandex, Cloudflare, Google, AdGuard, Quad9, OpenDNS, NextDNS, Comms, Geohide, Xbox, Rostelecom, BI.ZONE, НСДИ). В отличие от upstream 2.1.9 ручной ввод любых адресов сохранён.
    • Пароль подключения из Keystore: нечитаемая запись больше не выглядит как «пароль не задан» — причина блокировки запуска пишется в лог, запись сбрасывается с подсказкой ввести пароль заново.
    • Диагностика для issue: scripts/diagnose_csqtt_server.sh (read-only снимок systemd/сокетов/TUN/firewall/journal, секреты вырезаются) и scripts/csqtt-network-report.sh (отчёт или захват UDP).
    • Исправлено: rust-server/perf.rs не собирался под 32-битные цели; парсер архитектуры VPS не путает stderr-предупреждения bash/locale с выводом uname.

    Совместимость и обновление

    Используйте сервер danusha2345/csqtt-android. Сервер amurcanov/csqtt 2.1.9 использует другой wire protocol и с этим клиентом не совместим (DENIED:protocol_mismatch). Redeploy с 2.1.11 штатный, база и устройства сохраняются; после redeploy у systemd-юнита появляется второй ExecStartPre.

    Android package csqtt.quic.amurcanov, versionCode 222. Все APK подписаны тем же сертификатом, что 2.1.8–2.1.11, устанавливаются обновлением поверх. Доступны universal, arm64-v8a, armeabi-v7a и x86_64.

    Desktop-клиент CSQTT VPN 2.1.12 (Windows/Linux) не менялся, его архивы приложены для полноты и совпадают с релизом csqtt-vpn v2.1.12.

    Проверки

    Rust client и server tests, clippy на gnu и на всех трёх musl-целях, Android unit-тесты и release lint, provenance native/server/deploy, tun-recover.sh прогнан на хосте в сценариях «чужой процесс на порту» и «свой процесс». Debug-сборка проверена по aapt (TV-баннер, leanback, x86_64). ARM-бинарники собраны и проверены по ELF, на живом ARM-VPS не запускались. Полный VK TURN E2E и деплой на живой сервер в этой итерации не выполнялись.

    Журнал изменений · Ручная установка и API

    Downloads
  • v2.1.10 4726548d4f

    danik released this 2026-08-31 12:57:29 +03:00 | 15 commits to main since this release

    Стабильный выпуск CSQTT 2.1.10.

    Исправлено:

    • при SSH-входе по ключу можно отдельно указать необязательный пароль sudo для deploy и uninstall;
    • количество валидных VK-хешей и допустимый лимит workers обновляются без stale Compose state;
    • диагностика запуска разделяет отсутствие TURN allocation и готовый TURN без CSQTT server handshake;
    • сообщения диагностики подсказывают проверить UDP/TCP-TLS, endpoint, порт, пароль, firewall и server logs.

    Release hardening:

    • любой Android release fail-closed проверяет обе native ABI, ELF identity, Cargo outputs, Cargo locks, provenance, embedded server и deploy markers;
    • добавлены штатная Linux-сборка Android Rust core и единый Windows/Linux provenance schema;
    • GitHub CI проверяет Android unit/lint и Rust fmt/clippy/tests на чистом checkout;
    • версии Android, Rust client, Rust server, deploy script и web panel синхронизированы на 2.1.10.

    Артефакты:

    • universal, arm64-v8a и armeabi-v7a Android APK;
    • статический Linux amd64 server;
    • native client provenance и SHA256SUMS.

    Android APK подписаны тем же release-сертификатом, что и 2.1.8, поэтому устанавливаются обновлением поверх предыдущей версии. Встроенная проверка обновлений обращается только к danusha2345/csqtt-android.

    Промежуточный tag v2.1.9 не публиковался как Release и не переписывался; этот выпуск полностью его заменяет.

    Downloads
  • openwrt-v0.1.0-beta.1 e163b1ab0a

    danik released this 2026-08-30 17:31:16 +03:00 | 19 commits to main since this release

    Первый публичный OpenWrt-порт CSQTT

    Готовые статически связанные и stripped-сборки для:

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

    Что скачивать:

    • csqtt-openwrt_*.tar.gz — ручная установка на OpenWrt 25.12+ и 24.10;
    • csqtt-client_*.ipk — пакет для OpenWrt 24.10 с opkg;
    • SHA256SUMS — контрольные суммы всех файлов.

    В порт входят нативный Linux TUN, UCI-конфигурация, procd-сервис, режимы TUN и локального SOCKS5, policy routing для LAN, MASQUERADE и безопасная передача credentials через файл 0600 вместо аргументов процесса.

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

    Просьба протестировать

    Если у вас есть реальный роутер x86_64, aarch64 или armv7 с NEON,
    пожалуйста, протестируйте beta в TUN- и SOCKS5-режимах. Особенно нужны проверки
    запуска после reboot, доступа устройств LAN через туннель, восстановления после
    обрыва WAN и корректного возврата обычного маршрута после остановки.

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

    Ограничения beta:

    • MIPS/MIPSel пока не собраны;
    • .apk для package manager OpenWrt 25.12 пока не приложен — используйте универсальный .tar.gz;
    • запуск на конкретной физической модели роутера ещё необходимо подтвердить отдельно.
    Downloads