117 lines
3.3 KiB
Markdown
117 lines
3.3 KiB
Markdown
# VPN Proxy Windows Client
|
|
|
|
Standalone Windows desktop utility for app-level proxy routing. This app is
|
|
separate from the current Docker gateway/client runtime and must not be wired
|
|
through `APP_MODE=windows`.
|
|
|
|
## Components
|
|
|
|
- Control App: Tauri 2 + React/TypeScript UI and Rust command layer.
|
|
- Proxyfier Layer: ProxiFyre adapter for per-application routing.
|
|
- Local sing-box: optional local runtime, used only by targets that explicitly
|
|
require `singbox`.
|
|
|
|
External SOCKS5 targets are the MVP path and do not require Local sing-box.
|
|
|
|
## Source And Generated Files
|
|
|
|
Source configuration is owned by Rust domain models and JSON files under:
|
|
|
|
```text
|
|
C:\ProgramData\VpnProxy\config\profiles.json
|
|
C:\ProgramData\VpnProxy\config\targets.json
|
|
C:\ProgramData\VpnProxy\config\components.json
|
|
C:\ProgramData\VpnProxy\state\activity.json
|
|
```
|
|
|
|
Generated artifacts are derived and can be recreated:
|
|
|
|
```text
|
|
C:\ProgramData\VpnProxy\generated\proxifyre-app-config.json
|
|
C:\ProgramData\VpnProxy\generated\sing-box-config.json
|
|
```
|
|
|
|
## Development
|
|
|
|
```powershell
|
|
cd apps/windows-client
|
|
npm install
|
|
npm run build
|
|
```
|
|
|
|
Run the browser preview shell:
|
|
|
|
```powershell
|
|
npm run dev -- --host 127.0.0.1
|
|
```
|
|
|
|
Run Tauri checks when the native Windows toolchain is installed:
|
|
|
|
```powershell
|
|
npm run tauri -- info
|
|
npm run tauri -- dev
|
|
npm run tauri -- build
|
|
```
|
|
|
|
Run Rust tests when Rust/Cargo are installed:
|
|
|
|
```powershell
|
|
cd apps/windows-client/src-tauri
|
|
cargo test
|
|
```
|
|
|
|
Native Tauri build requires WebView2, Rust via rustup, and Visual Studio Build
|
|
Tools with MSVC and Windows SDK components.
|
|
|
|
## Explicit Installer Boundaries
|
|
|
|
Installer scripts are explicit per component and return structured JSON in
|
|
`-PlanOnly` mode:
|
|
|
|
```powershell
|
|
& .\scripts\install-control-app.ps1 -PlanOnly
|
|
& .\scripts\install-proxyfier.ps1 -PlanOnly
|
|
& .\scripts\install-singbox.ps1 -PlanOnly
|
|
```
|
|
|
|
Installers must be launched intentionally by the user or by a future narrow
|
|
helper permission. Profile apply must not silently install Control App,
|
|
Proxyfier, or Local sing-box.
|
|
|
|
## Existing Proxyfier Detection
|
|
|
|
The app detects an already installed Proxyfier layer before showing component
|
|
status or applying profiles. Detection checks:
|
|
|
|
- uninstall registry entries for `ProxiFyre` and `Proxifier`;
|
|
- common install folders such as `C:\Tools\ProxiFyre`,
|
|
`%ProgramFiles%\ProxiFyre`, and `%ProgramFiles%\Proxifier`;
|
|
- running `ProxiFyre` / `Proxifier` processes and the `ProxiFyreService`
|
|
service.
|
|
|
|
For portable installs, set an override before launching the app:
|
|
|
|
```powershell
|
|
$env:VPN_PROXY_PROXIFYRE_ROOT = 'D:\Tools\ProxiFyre'
|
|
npm run tauri -- dev
|
|
```
|
|
|
|
`ProxiFyre` installs are compatible with the current generated
|
|
`app-config.json` apply path. Plain `Proxifier` installs are detected and shown,
|
|
but automatic profile apply is not enabled for them yet because they use a
|
|
different profile format.
|
|
|
|
## MVP Verification Flow
|
|
|
|
1. Start the Control App or browser preview.
|
|
2. Confirm Components shows Control App, Proxyfier Layer, and optional Local
|
|
sing-box separately.
|
|
3. Add or keep an external SOCKS5 target.
|
|
4. Add a process/folder/exe profile such as Discord.
|
|
5. Apply profiles and verify generated ProxiFyre config plus activity entry.
|
|
6. Install Proxyfier separately before applying to a real service.
|
|
7. Install and start Local sing-box only when using a local target.
|
|
|
|
Task evidence is recorded in
|
|
`docs/goals/windows-modular-client/EVIDENCE.md`.
|