How protonvpn/win-app works
Proton VPN for Windows is a desktop VPN client whose main workflow is user interaction in the GUI, authenticated service access and server selection, then a service-managed VPN connection with state reported back to the app. The README documents the service’s roles in managing OpenVPN, Windows firewall rules, and split tunneling; sampled source adds API transport, connection orchestration, and service-to-client state streaming. Several broader capabilities are represented at their documented subsystem level because their implementation files were not sampled.
Main entry points: VpnController.cs VPN service · App.xaml.cs GUI app · ApiClient.cs API client · Logic Client logic
Components 20
Desktop client
- GUI app
src/Client/ProtonVPN.Client/App.xaml.cs - Client logic
src/Client/Logic - Server favorites
src/Client/Logic/Servers/ProtonVPN.Client.Logic.Servers/FavoriteServers/FavoriteServersStorage.cs
API and account
- API client
src/Api/ProtonVPN.Api/ApiClient.cs - API contracts
src/Api/ProtonVPN.Api.Contracts - Authentication
src/Api/ProtonVPN.Api - Server catalog
src/Api/ProtonVPN.Api.Contracts/Servers - App updates
src/Update/ProtonVPN.Update
VPN connection
- VPN service
src/ProtonVPN.Service/VpnController.cs - Process communication
src/ProtonVPN.Service/ProcessCommunication/ClientControllerSender.cs - Connection orchestration
src/ProtonVPN.Service - Service settings
src/ProtonVPN.Service/Settings/SettingsFileStorage.cs - Guest-hole servers
src/Client/Logic/Connection/ProtonVPN.Client.Logic.Connection/GuestHole/GuestHoleServersFileStorage.cs
Windows platform
- TAP adapter
- Windows firewall
- Callout driver
Other components
- VPN user
- Proton VPN API
- Release feed
- OpenVPN process
Connections 20
- VPN user → GUI app: uses
- GUI app → VPN service: starts and stops
- GUI app → Client logic: invokes
- Client logic → Server favorites: stores server IDs
- GUI app → API client: requests account data
- API client → API contracts: deserializes
- API client → Proton VPN API: sends HTTP requests
- API client → Authentication: uses
- API client → Server catalog: receives server data
- GUI app → App updates: checks for updates
- App updates → Release feed: reads releases
- VPN service → Service settings: reads and writes
- VPN service → Connection orchestration: orchestrates
- VPN service → OpenVPN process: manages tunnel
- OpenVPN process → TAP adapter: uses adapter
- VPN service → Windows firewall: manages rules
- VPN service → Callout driver: starts and stops
- VPN service → Process communication: publishes VPN state
- Process communication → GUI app: streams state
- Client logic → Guest-hole servers: loads server data