gitmyhub

VPNOn

Swift ★ 4.5k updated 6y ago ▣ archived

Turn On your VPN like a hero.

An open-source iOS app that adds a Notification Center widget so you can toggle your VPN on or off in seconds without digging through the Settings app, supporting IPSec IKEv1 and IKEv2 protocols.

SwiftXcodeCarthagesetup: hardcomplexity 3/5

VPN On is an iOS app that makes switching on a VPN much faster than the standard Apple process. Normally, enabling a VPN on an iPhone or iPad means digging through several layers of menus in the Settings app. VPN On shortcuts that by adding a widget to the iOS Notification Center, so you can toggle your VPN connection in a few seconds without leaving whatever you are doing.

The app supports VPN connections using the IPSec IKEv1 and IKEv2 protocols, which are common standards used by many commercial and self-hosted VPN services. There is also an On Demand feature that can automatically connect the VPN whenever you visit specific domain names, without requiring any manual action. Country flags are displayed alongside each saved VPN configuration to make them visually easy to identify at a glance.

VPN On also supports a URL scheme, which means other apps or web links can trigger actions inside it. VPN providers can give customers a link that automatically pre-fills a server configuration in the app. You can also use URL schemes to connect to a specific saved VPN, disconnect from the current one, or open a callback URL after connecting. The URL format is documented in the README and covers accounts, passwords, server addresses, and options like always-on and IKEv2.

Building the app from source requires Xcode, a paid Apple developer account, and a dependency manager called Carthage. You also need to enable several app capabilities inside Apple's Developer Center, including Personal VPN, Keychain Sharing, and App Groups, which are permissions required for a VPN app to function correctly on iOS. Provisioning profiles are needed to run the app on a real device.

The project is open source under the MIT license. Translations have been contributed in Japanese, Polish, Turkish, and Dutch. It uses location data from MaxMind's GeoLite2 database to display country information for each server.

Where it fits