Files
netrunner-app/README.md
T
Kirill c852315d34 Add decoy SNI plumbing, bundle wintun.dll, fix flag icons, add docs
- Прокидываем 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>
2026-07-02 19:29:29 +07:00

56 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Netrunner VPN
Клиентское приложение VPN с stealth-протоколом (маскировка `ClientHello` под
decoy-домен через SNI). Гибридный стек: React-фронтенд + Rust-бэкенд на Tauri
2, нативный VPN-движок подключается как приватный крейт по FFI (UniFFI).
## Структура репозитория
| Путь | Что внутри | Документация |
|---|---|---|
| [`src/`](src/README.md) | React/TypeScript UI (Vite) | [src/README.md](src/README.md) |
| [`src-tauri/`](src-tauri/README.md) | Rust-оболочка Tauri + нативный VPN-плагин | [src-tauri/README.md](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`](Makefile):
```bash
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](src-tauri/README.md#windows-tun-драйвер).
- **Android**: UniFFI-биндинги и `.so`-библиотеки VPN-движка — это
**гитигнорённые build-артефакты**, которые нужно вручную регенерировать при
изменении UDL в `netrunner-core`. Забытая регенерация — частая причина
падения мобильной сборки. Подробности:
[src-tauri/src/plugins/vpn-plugin/android/README.md](src-tauri/src/plugins/vpn-plugin/android/README.md#обязательно-прочитать-до-правок).
- **Список серверов** пока захардкожен на фронте (см.
[src/store/README.md](src/store/README.md)), потому что бэкенд `/api/v1/nodes`
ещё не отдаёт поле `sni` (decoy-хост) — логика подключения к реальному API
уже написана и просто выключена флагом.