{"id":13808144,"url":"https://github.com/ProtonVPN/win-app","last_synced_at":"2025-05-14T02:31:38.716Z","repository":{"id":37458907,"uuid":"232854155","full_name":"ProtonVPN/win-app","owner":"ProtonVPN","description":"Official ProtonVPN Windows app","archived":false,"fork":false,"pushed_at":"2024-08-27T13:43:08.000Z","size":70979,"stargazers_count":1347,"open_issues_count":66,"forks_count":253,"subscribers_count":38,"default_branch":"master","last_synced_at":"2024-08-28T11:37:06.013Z","etag":null,"topics":["vpn","windows"],"latest_commit_sha":null,"homepage":"https://protonvpn.com/download-windows","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ProtonVPN.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-09T16:30:57.000Z","updated_at":"2024-08-28T05:58:22.000Z","dependencies_parsed_at":"2024-08-04T01:08:52.407Z","dependency_job_id":"befbb0c4-5daf-420b-a894-e49be03628e1","html_url":"https://github.com/ProtonVPN/win-app","commit_stats":null,"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProtonVPN%2Fwin-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProtonVPN%2Fwin-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProtonVPN%2Fwin-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProtonVPN%2Fwin-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ProtonVPN","download_url":"https://codeload.github.com/ProtonVPN/win-app/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225273224,"owners_count":17448071,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["vpn","windows"],"created_at":"2024-08-04T01:01:35.907Z","updated_at":"2024-11-19T00:30:36.080Z","avatar_url":"https://github.com/ProtonVPN.png","language":"C#","readme":"# Proton VPN Windows app\n\nCopyright (c) 2023 Proton AG\n\nThis repository holds the Proton VPN Windows app.\nFor a detailed build information see [BUILD](BUILD.md).\nFor licensing information see [COPYING](COPYING.md).\nFor contribution policy see [CONTRIBUTING](CONTRIBUTING.md).\n\n## Description\n\nThe [Proton VPN](https://protonvpn.com) Windows app is intended for every Proton VPN service user,\npaid or free and supports all functionalities available to authenticated users (user signup instead happens on the web site).\n\nYou can download the latest stable release, either on [Proton VPN official website](https://protonvpn.com/download) or directly on the [official GitHub repository](https://github.com/ProtonVPN/win-app/releases/latest).\n\n### The application\n\nThe app consists of these interacting parts:\n- Proton VPN GUI application\n- Proton VPN Service\n- OpenVPN\n- TAP adapter\n- Split Tunnel driver\n\n#### GUI application\n\nThe Proton VPN GUI app is installed into \"C:\\Program Files\\Proton\\VPN\\\u003cversion\u003e\" directory by default. \nThe main executable is \"ProtonVPN.exe\".\n\nProton VPN GUI app starts Proton VPN Service when launched and stops the service\nwhen closed.\n\nApp logs are saved to \"%LOCALAPPDATA%\\ProtonVPN\\Logs\" directory.\n\nThe Proton VPN build using Debug configuration optionally loads its configuration from file\n\"ProtonVPN.config\" in the app directory. This file is not deployed during install. If the configuration\nfile doesn't exist or contains not valid values the app tries to save default configuration\nused in the app.\n\nTo monitor Http traffic of Proton VPN GUI app using Fiddler or another tool, you might need to disable\nTLS certificate pinning. To disable TLS certificate pinning the configuration file with empty\n\"TlsPinningConfig\" value should be provided:\n```\n    ...\n    \"TlsPinningConfig\": {}\n    ...\n```\n\n#### Proton VPN Service\n\nThe Windows service \"ProtonVPN Service\" is installed into\n\"C:\\Program Files\\Proton\\VPN\\\u003cversion\u003e\" directory by default. Service\nexecutable is \"ProtonVPNService.exe\". The service is started and stopped by the Proton VPN\nGUI app.\n\nDuring installation, the service is configured to be started and stopped by the unprivileged\ninteractive users.\n\nService executable supports installation and uninstallation of service. Passing \"install\" on\ncommand line to \"ProtonVPNService.exe\" installs the service, passing \"uninstall\" - uninstalls.\nThis installation method doesn't configure service security settings.\n\nService is responsible for interaction with OpenVPN, managing Windows firewall and Split Tunnel\ndriver.\n\nService logs are saved to \"%ALLUSERSPROFILE%\\ProtonVPN\\Logs\" directory.\n\n#### OpenVPN\n\nThe Proton VPN uses OpenVPN for maintaining a VPN tunnel. The new OpenVPN process is started on each\nconnect to a VPN and closed on disconnect. Communication with the OpenVPN process is maintained through\nTCP management interface.\n\nOpenVPN is installed into \"C:\\Program Files\\Proton\\VPN\\\u003cversion\u003e\\Resources\\\"\ndirectory by default. The OpenVPN config file is static, it doesn't change for each VPN server.\n\nThe OpenVPN is built from official source by applying a patch to support Proton VPN specific\nTAP adapter. See [win-openvpn](https://github.com/ProtonVPN/win-openvpn) repository.\n\n#### TAP adapter\n\nTAP adapter \"TAP-ProtonVPN Windows Adapter V9\" is used by the OpenVPN.\n\nThe TAP adapter is built from official source by applying a patch to have Proton VPN specific\nname and identification. See [win-tap-adapter](https://github.com/ProtonVPN/win-tap-adapter) repository.\n\n#### Callout driver\n\nThe kernel-mode driver \"ProtonVPN Callout Driver\" is used for redirecting socket bindings when\nSplit Tunnel is enabled and preventing DNS leak by sending SERVFAIL response packet for DNS\nrequests which were made from other interfaces than Proton VPN uses.\n\nThe driver is installed as a system service. It is started when connecting to VPN and stopped\nwhen disconnecting by Proton VPN Service.\n\n## Folder structure\n\nThe main repository folder contains the .NET Visual Studio solution of the\nProton VPN Windows app named ProtonVPN.\n\n### Folder \"ci\"\n\nContains continuous integration scripts.\n\n### Folder \"packages\"\n\nIt contains NuGet packages of the ProtonVPN solution.\n\n### Folder \"Setup\"\n\nThis folder contains Advanced Installer setup project files, resources included in the installer,\nand built installer files. Subfolders contain:\n\n- \"Images\" - images for inclusion into the installer.\n- \"Installers\" - built Proton VPN installer files.\n- \"ProtonVPNTap-SetupFiles\" - built TAP adapter installer files. The latest successfully\n  built TAP adapter installer file is required to build the Proton VPN installer.\n- \"SplitTunnel\" - SplitTunnel Callout driver for inclusion into the installer.\n\n### Folder \"src\"\n\nThis folder contains Visual Studio solution projects.\n\n### Folder \"src\\bin\"\n\nThis folder contains Visual Studio project build output. This folder can be safely\ndeleted as it's content is recreated by building the solution.\n\n### Folder \"src\\srp\"\n\nThis folder contains GIT submodule of [ProtonMail SRP library](https://github.com/ProtonMail/go-srp).\n\n### Folder \"test\"\n\nThis folder contains test projects of the ProtonVPN solution.\n\n## Solution\n\nProton VPN Windows app is created using C# and C++ programming languages, WPF and MVVM\ntechnologies. The Visual Studio solution consists of a series of projects:\n- **ProtonVPN.App** - the main project which builds to Proton VPN GUI app executable.\n  It contains startup logic and GUI (view models and views).\n- **ProtonVPN.CalloutDriver** - the callout driver written in C++ used for split tunneling and DNS leak protection.\n- **ProtonVPN.Common** - the classes shared between projects.\n- **ProtonVPN.Core** - the business logic of the application.\n- **ProtonVPN.ErrorMessage** - displays an error message when the application cannot be run. Builds to an executable.\n- **ProtonVPN.InstallActions** - the C++ actions used by the app installer.\n- **ProtonVPN.IpFilter** - the C++ library for configuring Windows firewall filters.\n- **ProtonVPN.Native** - the C# wrapper around Windows system libraries.\n- **ProtonVPN.NetworkFilter** - the C# wrapper around C++ library for configuring Windows firewall.\n- **ProtonVPN.NetworkUtil** - the C++ library for changing network configuration.\n- **ProtonVPN.Resource** - contains resources shared between projects.\n- **ProtonVPN.Service** - the Windows service which handles VPN, Windows firewall and Split Tunneling.\n- **ProtonVPN.Service.Contract** - contains the service contract.\n- **ProtonVPN.TapInstaller** - the TAP install action used in the app installer.\n- **ProtonVPN.TlsVerify** - the command line utility which verifies the VPN server certificate.\n- **ProtonVPN.Update** - the application update module used in the update service.\n- **ProtonVPN.UpdateService** - the Windows service which handles the app updates.\n- **ProtonVPN.UpdateServiceContract** - contains the update service contract.\n- **ProtonVPN.Vpn** - the OpenVPN management module used in the service.\n\nSolution folder \"Test\" contains test projects.","funding_links":[],"categories":["C++","C# #","📑 Apps List"],"sub_categories":["🛠️ Tools"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FProtonVPN%2Fwin-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FProtonVPN%2Fwin-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FProtonVPN%2Fwin-app/lists"}