c852315d34
- Прокидываем sni (decoy-хост) по обновлённому UDL через весь стек: guest-js -> Tauri-команда -> desktop/mobile -> Kotlin spawnSession. Список серверов пока статичный (backend еще не отдает sni), но логика похода в реальный /api/v1/nodes оставлена под флагом на будущее. - Бандлим wintun.dll в Windows-инсталлятор через bundle.resources в tauri.windows.conf.json - раньше он копировался только для локального cargo run/tauri dev, но не попадал в NSIS/MSI. - Чиним падение мобильной сборки: гитигнорённые UniFFI Kotlin-биндинги отстали от обновленного UDL (не хватало параметра sni). - Флаги стран - локальные SVG вместо react-country-flag в CDN-режиме: тот бился об CSP и не грузился офлайн. - Добавляем дерево README.md по структуре проекта и точечные комментарии в неочевидных местах кода. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
3.2 KiB
3.2 KiB
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 уже написана и просто выключена флагом.