explaingit

lexrus/vpnon

4,511SwiftAudience · developerComplexity · 3/5LicenseSetup · hard

TLDR

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.

Mindmap

mindmap
  root((VPN On))
    What it does
      Fast VPN toggle
      Notification Center widget
    Protocols
      IPSec IKEv1
      IKEv2
    Features
      On Demand by domain
      URL scheme
      Country flags
    Tech stack
      Swift
      Xcode
      Carthage
    Audience
      iOS power users
      Developers
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Toggle a VPN connection from the iOS Notification Center widget without leaving your current app.

USE CASE 2

Automatically connect to a VPN whenever you visit specific domains using the On Demand feature.

USE CASE 3

Give users a one-tap link that pre-fills a VPN server configuration inside the app via URL scheme.

USE CASE 4

Build and customize your own iOS VPN toggle app using this open-source Swift codebase as a starting point.

Tech stack

SwiftXcodeCarthage

Getting it running

Difficulty · hard Time to first run · 1day+

Requires a paid Apple Developer account, Xcode, Carthage, and enabling Personal VPN, Keychain Sharing, and App Groups in the Apple Developer Center before the app can run on a real device.

Use, modify, and distribute freely for any purpose including commercial, keep the MIT license and copyright notice.

In plain English

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.

Copy-paste prompts

Prompt 1
Show me how to construct a VPN On URL scheme link that pre-fills a VPN configuration with a server address, username, and IKEv2 protocol so a user can tap it and have the profile loaded automatically.
Prompt 2
How do I build VPN On from source using Xcode and Carthage? Walk me through the required Apple Developer Center capabilities I need to enable, like Personal VPN and Keychain Sharing.
Prompt 3
How does VPN On's On Demand feature work? Show me how to configure it to automatically connect the VPN whenever the device visits a specific domain name.
Prompt 4
What is the VPN On URL scheme format for connecting to a saved VPN profile by name and opening a callback URL once the connection is established?
Open on GitHub → Explain another repo

← lexrus on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.