Старый pubkey в конфиге был без парного приватного ключа — обновления никогда не смогли бы пройти проверку подписи. Сгенерирована новая пара, приватная часть — в secrets.TAURI_SIGNING_PRIVATE_KEY(_PASSWORD) этого репозитория.
Rust-оболочка (src-tauri/)
Tauri 2 приложение-хост. Вся VPN-логика вынесена в плагин
src/plugins/vpn-plugin/ — сюда, в
корневой крейт, попадает только запуск приложения и платформенная сборка.
Файлы
| Путь | Назначение |
|---|---|
src/main.rs |
Точка входа десктоп-бинарника: инициализация логгера, вызов netrunner_app::run(). |
src/lib.rs |
run() — сборка tauri::Builder с плагином tauri_plugin_vpn; помечен #[tauri::mobile_entry_point] для Android/iOS. |
build.rs |
На Windows: копирует bin/<arch>/wintun.dll рядом со скомпилированным .exe в target/<triple>/<profile>/ (нужно для локального запуска cargo run/tauri dev) и встраивает манифест с requireAdministrator (VPN нужны admin-права). Копирование в финальный инсталлятор — отдельный механизм, см. ниже. |
Cargo.toml |
Зависимости: tauri, tauri-plugin-vpn (path), netrunner-logger (git-зависимость из приватного репозитория netrunner-core). Собирается только под x86_64-pc-windows-gnu из настроенных Windows-таргетов. |
tauri.conf.json |
Общий конфиг: окно 500×800, CSP (img-src/connect-src жёстко ограничены — см. ниже), бандл-таргеты "all". |
tauri.windows.conf.json |
Платформенный оверлей, Tauri мержит его автоматически только при сборке под Windows (см. tauri-utils::config::parse). Добавляет wintun.dll в bundle.resources. |
capabilities/*.json |
ACL для Tauri IPC — какие команды плагина доступны из WebView. |
Windows: TUN-драйвер
VPN-движок использует крейт wintun (Rust-обёртка над wintun.dll,
самодостаточный сетевой драйвер без отдельной установки). Он должен лежать
рядом с exe — так его находит LoadLibraryW("wintun.dll") по умолчанию.
Это решается в двух независимых местах:
- Локальный запуск (
cargo run/tauri dev) — копируетbuild.rs. - Финальный инсталлятор (NSIS/MSI) — бандлер
tauri buildничего не знает проbuild.rs-копирование, поэтому файл явно объявлен какbundle.resourcesвtauri.windows.conf.json("bin/amd64/wintun.dll": "wintun.dll"— плоское имя, чтобы попасть в корень инсталляции рядом с exe). Если добавите сборку под arm64 — потребуется отдельный CI-профиль с--config, т.к.tauri.conf.jsonне умеет параметризоваться по архитектуре.
CSP (tauri.conf.json → app.security.csp)
Специально ограничен: img-src/connect-src/script-src разрешают только
'self', data: и домены Telegram (нужны для встроенного Telegram Web).
Любой новый внешний домен/CDN, к которому фронт обращается напрямую
(картинки, шрифты, API), нужно либо явно добавлять в CSP, либо не
использовать — это уже один раз ловили на флагах стран, см.
../src/features/README.md.