e0bc67b1462de6c6847db2205b6acb6f810716d0
Существовала на диске, но ни разу не была закоммичена. Работает как и раньше через tauri-apps/tauri-action — Gitea-версия (.gitea/workflows/release.yml) отдельная, т.к. tauri-action жёстко ходит в api.github.com. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Netrunner VPN
Клиентское приложение VPN с stealth-протоколом (маскировка ClientHello под
decoy-домен через SNI). Гибридный стек: React-фронтенд + Rust-бэкенд на Tauri
2, нативный VPN-движок подключается как приватный крейт по FFI (UniFFI).
Структура репозитория
| Путь | Что внутри | Документация |
|---|---|---|
src/ |
React/TypeScript UI (Vite) | src/README.md |
src-tauri/ |
Rust-оболочка Tauri + нативный VPN-плагин | src-tauri/README.md |
Каждая поддиректория с самостоятельной логикой имеет свой README.md —
смотри дерево докам по ссылкам выше, дальше они ведут друг к другу.
Технологии
- Frontend: React 19, TypeScript, Vite, Zustand (стейт), react-i18next (RU/EN), Tailwind + shadcn/radix-ui, framer-motion.
- Backend: Rust, Tauri 2 (десктоп: Windows/Linux/macOS, мобильный: Android/iOS).
- VPN-движок: приватный крейт
netrunner_client(репозиторийnetrunner-core, отдельно от этого проекта) — подключается через UniFFI: напрямую из Rust на десктопе, через сгенерированные Kotlin-биндинги на Android.
Сборка
Команды из Makefile:
make dev-linux # dev-сборка + запуск с cap_net_admin
make dev-android # gradle clean + tauri android dev
make build-windows # инсталлятор под Windows (NSIS/MSI, с wintun.dll)
make build-android-arm64
make install # adb install собранного APK
Фронтенд отдельно: pnpm dev / pnpm build (см. package.json).
Важные нюансы
- Windows:
wintun.dllбандлится в инсталлятор черезsrc-tauri/tauri.windows.conf.json(bundle.resources) — см. src-tauri/README.md. - Android: UniFFI-биндинги и
.so-библиотеки VPN-движка — это гитигнорённые build-артефакты, которые нужно вручную регенерировать при изменении UDL вnetrunner-core. Забытая регенерация — частая причина падения мобильной сборки. Подробности: src-tauri/src/plugins/vpn-plugin/android/README.md. - Список серверов пока захардкожен на фронте (см.
src/store/README.md), потому что бэкенд
/api/v1/nodesещё не отдаёт полеsni(decoy-хост) — логика подключения к реальному API уже написана и просто выключена флагом.
Languages
TypeScript
68.7%
Kotlin
11.7%
Rust
9.5%
JavaScript
5.4%
CSS
2.5%
Other
2.2%