Dokril 9fd0a8c0b9
Some checks failed
CI / Windows baseline (push) Has been cancelled
Harden ProxiFyre installer downloads
2026-07-09 14:20:35 +03:00

ProxyWarden

ProxyWarden - это standalone Windows desktop-приложение для маршрутизации выбранных программ через SOCKS5-прокси. По сути это удобная оболочка управления над внешними компонентами: обязательным маршрутизатором приложений ProxiFyre и, опционально, локальным runtime sing-box.

ProxyWarden сам не является VPN-драйвером, прокси-сервером или отдельным gateway/server. Он хранит настройки, показывает состояние компонентов, генерирует конфиги и запускает только явные действия пользователя: установить, запустить, остановить, удалить или применить конфиг.

Главное

  • Работает как Windows-клиент: Tauri 2 + React/TypeScript UI + Rust backend.
  • Маршрутизирует не всю систему, а выбранные приложения: процесс, папку или конкретный .exe.
  • Не меняет глобальный proxy в Windows.
  • Для per-app routing нужен ProxiFyre.
  • Local sing-box нужен только для сценария с подпиской и локальным SOCKS5 endpoint.
  • Внешний SOCKS5-прокси работает без Local sing-box.
  • Применение профиля не устанавливает и не чинит компоненты скрыто.

Из чего состоит

Компонент Что это Нужен когда Откуда берется
ProxyWarden Control App Окно управления, настройки, status/readiness, генерация конфигов Всегда Этот репозиторий
ProxiFyre Windows-приложение/служба для перехвата трафика выбранных процессов и отправки его в SOCKS5 Всегда для маршрутизации приложений GitHub releases wiresock/proxifyre
Windows Packet Filter / NDISAPI Сетевой драйвер, который нужен ProxiFyre Устанавливается вместе с ProxiFyre, если отсутствует GitHub releases wiresock/ndisapi
Microsoft Visual C++ Redistributable Runtime-зависимость для ProxiFyre.exe Устанавливается вместе с ProxiFyre, если отсутствует Официальный vc_redist Microsoft
sing-box Локальный proxy/VPN runtime, который слушает 127.0.0.1:1080 Только для маршрута через subscription/выбранный сервер GitHub releases SagerNet/sing-box
WinSW Wrapper, который запускает Local sing-box как Windows-службу Только для Local sing-box GitHub releases winsw/winsw

В UI и коде компонент ProxiFyre иногда проходит через внутренний id proxyfier. Это не отдельный продукт Proxifier; текущий backend adapter работает именно с ProxiFyre.

Как идут маршруты

Внешний SOCKS5-прокси:

выбранные приложения -> ProxiFyre -> внешний SOCKS5 proxy

Local sing-box:

выбранные приложения -> ProxiFyre -> Local sing-box 127.0.0.1:1080 -> выбранный сервер из подписки

Во втором сценарии ProxiFyre все равно обязателен: именно он делает маршрутизацию конкретных Windows-приложений. Local sing-box только дает локальный SOCKS5 endpoint и ходит дальше к выбранному серверу.

Что устанавливается

Control App

Обычная сборка Tauri создает desktop-приложение ProxyWarden. Отдельный скрипт scripts/install-control-app.ps1 сейчас подготавливает стандартные директории:

C:\Program Files\ProxyWarden\ControlApp
C:\ProgramData\ProxyWarden\config
C:\ProgramData\ProxyWarden\state
C:\ProgramData\ProxyWarden\generated

ProxiFyre

Явная установка ProxiFyre из приложения выполняется через elevated PowerShell и ставит/обновляет:

C:\Tools\ProxiFyre
C:\Tools\ProxiFyre\ProxiFyre.exe
C:\Tools\ProxiFyre\app-config.json
Windows service: ProxiFyreService

Если на машине не найдены зависимости, установщик также скачивает и ставит Microsoft Visual C++ Redistributable и Windows Packet Filter / NDISAPI.

Local sing-box

Явная установка Local sing-box ставит:

C:\Program Files\ProxyWarden\sing-box\sing-box.exe
C:\Program Files\ProxyWarden\sing-box\ProxyWardenSingBox.exe
C:\Program Files\ProxyWarden\sing-box\ProxyWardenSingBox.xml
C:\Program Files\ProxyWarden\sing-box\config.json
Windows service: ProxyWardenSingBox

ProxyWardenSingBox.exe - это WinSW wrapper. Он нужен только чтобы запускать sing-box.exe как Windows-службу.

Права администратора

Без прав администратора можно открыть приложение, редактировать настройки, добавлять приложения, вводить внешний proxy, загружать/выбирать подписку и смотреть состояние.

Права администратора или UAC confirmation нужны для операций, которые меняют систему:

  • установка или удаление ProxiFyre;
  • установка Windows Packet Filter / NDISAPI;
  • установка Microsoft Visual C++ Redistributable, если его нет;
  • установка или удаление Local sing-box;
  • создание, запуск и остановка Windows-служб;
  • удаление install folder для managed-компонентов.

Применение профиля не запускает установку. Оно генерирует derived config и пытается записать его в найденную установку ProxiFyre. Если прав на запись в папку установки не хватает, операция должна завершиться ошибкой, а не устанавливать что-то скрыто.

Поддержанная среда

Подтверждено вручную сейчас:

Windows 11
PowerShell 7 как пользовательская shell для запуска команд разработки

Важно: Rust backend и elevated-операции сейчас запускают именно powershell.exe с -NoProfile и -ExecutionPolicy Bypass. На Windows это обычно Windows PowerShell 5.1. Скрипты используют стандартные команды вроде Get-CimInstance, Invoke-WebRequest, Expand-Archive, Get-FileHash, Start-Service, Stop-Service, ConvertTo-Json, поэтому должны быть близки к Windows PowerShell 5.1, но полный ручной тест пока был только на Windows 11 с PowerShell 7 в окружении разработки.

Ожидаемая, но не полностью подтвержденная область:

  • Windows 10/11 desktop;
  • x64 как основной сценарий;
  • x86 и ARM64 частично учтены в installer-логике через выбор release assets, но не считаются проверенными;
  • обычный desktop/laptop без специальных требований к GPU;
  • доступ в интернет к GitHub releases и Microsoft download endpoints для установки компонентов.

Linux/macOS не являются целевой платформой для этого клиента.

Где лежат настройки

Source of truth лежит в JSON под C:\ProgramData\ProxyWarden:

C:\ProgramData\ProxyWarden\config\profiles.json
C:\ProgramData\ProxyWarden\config\targets.json
C:\ProgramData\ProxyWarden\config\components.json
C:\ProgramData\ProxyWarden\config\local-singbox.json
C:\ProgramData\ProxyWarden\state\activity.json
C:\ProgramData\ProxyWarden\state\singbox-subscription-cache.json

Сгенерированные файлы лежат отдельно и могут быть пересозданы:

C:\ProgramData\ProxyWarden\generated\proxifyre-app-config.json
C:\ProgramData\ProxyWarden\generated\sing-box-config.json

Не редактируйте generated-файлы как основной источник правды. При следующей генерации они могут быть перезаписаны.

Subscription URL считается секретом. UI и diagnostics должны показывать только редактированную/сокращенную версию ссылки.

Типовые сценарии

Внешний SOCKS5

  1. Запустите ProxyWarden.
  2. Установите или проверьте ProxiFyre.
  3. На вкладке VPN / Прокси выберите внешний proxy.
  4. Введите host:port или socks5://host:port.
  5. На вкладке ProxiFyre добавьте приложения.
  6. Нажмите Применить в ProxiFyre.

Local sing-box для этого сценария не нужен.

Local sing-box с подпиской

  1. Запустите ProxyWarden.
  2. Установите ProxiFyre.
  3. Установите Local sing-box.
  4. Вставьте subscription URL.
  5. Загрузите список серверов и выберите сервер.
  6. Добавьте приложения.
  7. Сгенерируйте/примените маршрут.

Установка и запуск из исходников

Нужны:

  • Windows 11 для подтвержденного пути разработки;
  • Node.js и npm;
  • Rust через rustup;
  • Visual Studio Build Tools с MSVC и Windows SDK;
  • Microsoft Edge WebView2 Runtime;
  • PowerShell 7 удобно использовать как shell разработки, но elevated runtime-команды приложения запускаются через powershell.exe.

Установка зависимостей и запуск:

cd D:\repos\ProxyWarden
npm install
npm run tauri -- dev

Собрать frontend:

npm run build

Собрать установочный пакет Tauri:

npm run tauri -- build

Запустить только browser-preview без нативных Tauri-команд:

npm run dev -- --host 127.0.0.1

Browser-preview годится для проверки интерфейса, но не доказывает работу Windows-служб, elevated-операций и Tauri command handlers.

Installer-скрипты

В репозитории есть явные entrypoint-скрипты:

& .\scripts\install-control-app.ps1 -PlanOnly
& .\scripts\install-proxyfier.ps1 -PlanOnly
& .\scripts\install-singbox.ps1 -PlanOnly

-PlanOnly возвращает structured JSON и не должен иметь side effects.

Реальная установка через эти скрипты требует прав администратора. scripts/install-proxyfier.ps1 как standalone boundary сейчас ожидает локальный -PackagePath; путь установки из UI/backend использует отдельный elevated-скрипт, который скачивает ProxiFyre, Windows Packet Filter и runtime-зависимости сам.

Проверка для разработчика

Frontend/UI:

npm run build

Rust/backend:

cd D:\repos\ProxyWarden\src-tauri
cargo test

Tauri/toolchain:

npm run tauri -- info
npm run tauri -- dev
npm run tauri -- build

Installer boundaries:

& .\scripts\install-control-app.ps1 -PlanOnly
& .\scripts\install-proxyfier.ps1 -PlanOnly
& .\scripts\install-singbox.ps1 -PlanOnly

Ограничения текущей версии

  • Основной поддержанный маршрут - SOCKS5.
  • ProxiFyre является текущим backend-слоем для per-app routing.
  • Local sing-box остается опциональным и не требуется для внешнего SOCKS5.
  • Elevated install/start/stop/uninstall операции считаются реализованными, но требуют дополнительной проверки на реальной Windows-машине с UAC/admin confirmation.
  • Windows 10, Windows PowerShell 5.1, ARM64 и x86 нужно отдельно подтвердить перед тем, как называть их официально поддержанными.
Description
No description provided
Readme 6.1 MiB
1.0.1 Latest
2026-07-08 21:52:28 +03:00
Languages
Rust 59.7%
TypeScript 23.8%
CSS 10.6%
PowerShell 5.9%