No description
  • Go 52.7%
  • JavaScript 18.4%
  • CSS 13%
  • NSIS 9.2%
  • HTML 6.1%
  • Other 0.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Daniil f70aecd898
Merge pull request #1 from danusha2345/codex/desktop-auth-stop
Fix Windows Wintun startup, logs and auth retries
2026-08-30 16:48:58 +03:00
bin release: prepare desktop 2.1.8 2026-08-30 16:47:40 +03:00
build Initial standalone CSQTT desktop 2.1.7 2026-08-30 13:04:42 +03:00
core fix(windows): tunnel DNS only after split routes 2026-08-30 16:21:19 +03:00
frontend Initial standalone CSQTT desktop 2.1.7 2026-08-30 13:04:42 +03:00
.gitignore Initial standalone CSQTT desktop 2.1.7 2026-08-30 13:04:42 +03:00
app.go Initial standalone CSQTT desktop 2.1.7 2026-08-30 13:04:42 +03:00
app.ico Initial standalone CSQTT desktop 2.1.7 2026-08-30 13:04:42 +03:00
app_test.go Initial standalone CSQTT desktop 2.1.7 2026-08-30 13:04:42 +03:00
autostart_other.go Initial standalone CSQTT desktop 2.1.7 2026-08-30 13:04:42 +03:00
autostart_windows.go Initial standalone CSQTT desktop 2.1.7 2026-08-30 13:04:42 +03:00
CHANGELOG.md release: prepare desktop 2.1.8 2026-08-30 16:47:40 +03:00
go.mod fix(windows): fail fast on Wintun and decode logs 2026-08-30 16:06:14 +03:00
go.sum Initial standalone CSQTT desktop 2.1.7 2026-08-30 13:04:42 +03:00
main.go Initial standalone CSQTT desktop 2.1.7 2026-08-30 13:04:42 +03:00
README.md release: prepare desktop 2.1.8 2026-08-30 16:47:40 +03:00
rsrc_windows_amd64.syso Initial standalone CSQTT desktop 2.1.7 2026-08-30 13:04:42 +03:00
wails-admin.manifest release: prepare desktop 2.1.8 2026-08-30 16:47:40 +03:00
wails-resource.rc Initial standalone CSQTT desktop 2.1.7 2026-08-30 13:04:42 +03:00
wails.json release: prepare desktop 2.1.8 2026-08-30 16:47:40 +03:00
wintun.dll fix(windows): load Wintun beside the GUI 2026-08-30 15:53:24 +03:00

CSQTT VPN Desktop

Boosty

Репозиторий desktop-клиента: danusha2345/csqtt-vpn. Android-клиент и сервер нашей сборки: danusha2345/csqtt-android.

Десктопный клиент CSQTT для Windows и Linux. GUI на Wails управляет официальным Rust transport из amurcanov/csqtt, создаёт системный TUN и отправляет IPv4-трафик через CSQTT/VK TURN.

Версия desktop bundle синхронизирована с core: 2.1.8. Каждый пользователь вводит endpoint собственного сервера; стандартный формат — host:46010.

Архитектура

Windows

приложения → Wintun CSQTT → raw-IP UDP bridge 127.0.0.1:19000
            → csqtt-client.exe → VK TURN → CSQTT server → интернет

GUI устанавливает split-default routes, NRPT/DNS и IPv6 leak guard. Адрес сервера, сети VK и обнаруженные TURN relay получают bypass через физический gateway. При падении transport или Wintun маршруты и DNS снимаются fail-safe.

Linux

приложения → /dev/net/tun (csqtt0) → TUN FD через abstract UDS/SCM_RIGHTS
            → csqtt-client → VK TURN → CSQTT server → интернет

Linux backend использует нативный --tun-uds Rust-клиента, iproute2 и systemd-resolved. Split routes, DNS и IPv6 leak guard откатываются при отключении или завершении transport. Для TUN и маршрутов GUI пока запускается с root-правами; privilege-separated helper — отдельная следующая итерация.

Пароль и VK call links desktop-оболочка передаёт transport-процессу через одноразовый JSON в stdin (--credentials-stdin), а не через process argv.

Содержимое release bundle

Windows:

CSQTT-VPN.exe
bin/csqtt-client.exe
wintun.dll

Нужны Windows 10/11 и WebView2 Runtime. CSQTT-VPN.exe содержит manifest requireAdministrator. wintun.dll должен находиться именно рядом с CSQTT-VPN.exe: библиотека Wintun загружается из каталога приложения, а не из подкаталога bin.

Linux:

CSQTT-VPN
bin/csqtt-client

Нужны iproute2, systemd-resolved, GTK 3 и WebKitGTK 4.1. Rust transport собран статически под musl; Wails GUI использует системные GTK/WebKit библиотеки. Запуск текущей версии:

sudo -E ./CSQTT-VPN

Возможности GUI

  • профили сервера, пароля, VK links и исключений;
  • audio/video obfuscation и TURN UDP/TCP-TLS;
  • от 9 до 126 workers с нормализацией до кратного 9;
  • системный TUN, DNS proxy и маршрутизация доменов/IP/CIDR напрямую;
  • журнал, диагностика, скорость и объём текущей сессии;
  • Windows autostart (на Linux скрыт до появления privilege-separated helper).

Сборка

Требуются Go 1.25+, Node.js/npm, Wails 2.13 и Rust 1.97.1. Frontend:

cd frontend
npm ci
npm audit
npm run build

Проверки Go:

go test ./...
go test -race ./core
go vet ./...
GOOS=windows GOARCH=amd64 go test -c ./core

Windows GUI:

mv rsrc_windows_amd64.syso /tmp/
wails build -platform windows/amd64 -trimpath
mv /tmp/rsrc_windows_amd64.syso .

Linux GUI:

wails build -platform linux/amd64 -tags webkit2_41 \
  -trimpath -clean=false

Rust core собирается из rust-client/ репозитория CSQTT:

cargo build --release --locked --target x86_64-pc-windows-gnu
cargo zigbuild --release --locked --target x86_64-unknown-linux-musl

Ограничения проверки

Unit/race/cross-compile, frontend audit/build, Wintun PE build, Linux TUN namespace и SCM_RIGHTS проверяются локально. Полный TURN e2e требует действующей VK call link/hash; секреты в тесты и репозиторий не включаются.

CSQTT core распространяется по лицензии upstream PolyForm Noncommercial 1.0.0. Исходный проект и автор протокола: amurcanov/csqtt.