Turn On your VPN like a hero.

Related tags

Example Apps VPNOn
Overview

VPN On

Travis Language License

AppStore

Screencast

Turning on a VPN is always a painful experience on an iOS device due to the deep nested menus. This App installs a Today Widget into Notification Center which make it possible to turn on a VPN in about 3 seconds(depends on the connection speed). Furthermore, by turning on On Demand feature, the VPN could be automatically connected when you visit any domain specified in this App.

Requirements

Build with Xcode

To compile the project, you may temporarily modify the bundle_id after adding yours into the Apple Developer Center. And then activate the following capabilities of the container App and the Today extension:

  1. Personal VPN
  2. Keychain Sharing
  3. App Groups

Meanwhile, provisioning profiles are required for testing on iPhone/iPad.

Usage

Once you add a VPN configuration you can activate the Today Widget in Notification Center, then turn on the VPN by tapping a switch or flag. You may be asked to allow the installation of a VPN profile for the first time.

Contribution

Issues and roadmap are listed here.

This project follows the gitflow workflow. You'd better create a branch called feature/sth_improved before any major improvements. Meanwhile minor bug fixes are welcomed in the develop branch.

Localization

Please contribute to the Transifex project.

Transifex Progress

URL Schemes

Add configuration

VPN service providers may list a link for their customers to efficiently add server configurations in VPN On. By register the vpnon:// protocol, it supports the following URL scheme:

vpnon://{account}:{password}@{server}/?title={title}&group={group}&secret={secret}&alwayson=[yes|no]&ikev2=[yes|no]

server and title are required, other fields are optional. The following URLs are valid:

Establish connection

  • vpnon://VPNTitle/?connect
  • vpnon://VPNTitle/?connect&callback=https://twitter.com

Disconnect

  • vpnon://disconnect/

Credits

This product includes GeoLite2 data created by MaxMind, available from http://www.maxmind.com. The GeoLite2 databases are distributed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. In order to query the database, I created a wrapper for libmaxminddb called MMDB-Swift.

License

This code is distributed under the terms and conditions of the MIT license.

Copyright (C) 2020 lexrus.com

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Issues
  • 在VPN On里都删除了,在VPN里,多了个人VPN,里的设置缺没删除掉。

    在VPN On里都删除了,在VPN里,多了个人VPN,里的设置缺没删除掉。

    这就算删了app还在。。这咋破?

    opened by laincat 12
  • 协议切换的时候有问题

    协议切换的时候有问题

    某家服务器同时支持IKEV2和IKEV1协议,

    然而groupname 和 secret的设置都是不一样的。

    每次切换协议后(当然group和secret都修改了),都需要多连接一次才能成功连上。

    经我测试的结果好像是,切换协议后的第一次连接的Profile其实用的还是切换协议前的内容(例如group和secret)

    于是导致连接失败。

    不知道是不是个案

    bug 
    opened by hzx1987227 9
  • 不支持 Remote ID,因此无法使用云梯 VPN。

    不支持 Remote ID,因此无法使用云梯 VPN。

    以下是云梯客服的反馈:

    由于 VPN On 还不支持配置 Remote Id,所以需要等其更新后,才能支持云梯。你也可以联系 VPN On 的开发者,反馈 Remote Id 的支持需求。

    希望能支持,让云梯用户也可以用 VPNOn。

    opened by Moskize91 8
  • fatal error: unexpectedly found nil while unwrapping an Optional value

    fatal error: unexpectedly found nil while unwrapping an Optional value

    fatal error: unexpectedly found nil while unwrapping an Optional value

    遇到这个错误,不知道其他人有没遇到

    opened by RylynnLai 7
  • 无法连接云梯IKEv2 VPN服务器

    无法连接云梯IKEv2 VPN服务器

    iOS 10.1 系统 今天刚刚购买的,第一次使用。 从系统的vpn开关可以连上服务器 同样的服务器通过VPNOn就无法连接,无论在wifi或者4g网络下,都连接失败了。

    opened by shoujs 7
  • Stored password in VPN configuration but VPN connection still asks every time for password

    Stored password in VPN configuration but VPN connection still asks every time for password

    Hello, I have installed the VPNOn (V0.6) from AppStore and also tested this from actual sources (V0.7). I am always asked for a password to connect the VPN but I stored the passowrd in the VPN configuration. What Do I wrong? Any idea?

    At all I like the tool very much but would be good to use the stored password from VPN configuration. Thanks in advance! Regards Sebastian

    opened by smika01 6
  • Is possible to switch server on today extension?

    Is possible to switch server on today extension?

    I tried to access the vpn array from today extension, var vpns = VPNDataManager.sharedManager.allVPN()

    It crashed at first, then I check the TodayWidget target, it stopped crashing, instead, it gave me an empty array.

    Is there any way we can access those data and set the active server from Today Extension?

    enhancement ui 
    opened by zttt 6
  • use of undeclared type mmwormhole

    use of undeclared type mmwormhole

    i change all the capacity and bundle id . but when i run it it has an issue that use of undeclared type mmwormhole

    opened by zqpmaster 5
  • A Redeem Code

    A Redeem Code

    Paste the following Swift code into your playground.

    import Foundation
    let a = "5681028111897810981158518112"
    let b = a.componentsSeparatedByString("8")
    var c = ""
    for (d, e) in EnumerateSequence(b) {
        let f = String(UnicodeScalar(e.toInt()! + d))
        c = "\(c)\(f)"
    }
    let code = "http://tokn.co/\(c)"
    
    opened by lexrus 5
  • does not work on iOS 13

    does not work on iOS 13

    opened by bizibizi 0
  • VPN ON Error - Thread 1: signal SIGABRT

    VPN ON Error - Thread 1: signal SIGABRT

    I am getting the below mentioned error, when I install the app

    dyld`__abort_with_payload: 0x1009be390 <+0>: mov x16, #0x209 0x1009be394 <+4>: svc #0x80 -> 0x1009be398 <+8>: b.lo 0x1009be3b0 ; <+32> 0x1009be39c <+12>: stp x29, x30, [sp, #-0x10]! 0x1009be3a0 <+16>: mov x29, sp 0x1009be3a4 <+20>: bl 0x1009bd7d0 ; cerror_nocancel 0x1009be3a8 <+24>: mov sp, x29 0x1009be3ac <+28>: ldp x29, x30, [sp], #0x10 0x1009be3b0 <+32>: ret

    How I can Fix this issue, Please Suggest. Thanks.

    opened by cogphone 0
  • 有运行成功过的吗?

    有运行成功过的吗?

    我下载下来,修改id ,同时给id 加 person vpn 和相应权限就是运行成功过

    opened by andi911 2
  • TodayWidget doesn't appear on iOS 11

    TodayWidget doesn't appear on iOS 11

    Hi,

    This is a great project! I have successfully managed to compile and deploy it on my Phone. It can also successfully connect to the ikv2 server.

    However, I can't find the today widget in the notifications in order to turn it on and off faster.

    Could this be an issue with iOS 11? I have checked notifications and can't find VPN ON listed there though. Could be related.

    Many thanks for your advice, Houman

    opened by houmie 0
  • Are you going to support ss?

    Are you going to support ss?

    Thanks for your great work. By the way, are you considering to support shadowsocks vpn? As most of traditional vpn protocol is blocked in China mainland. Thanks.

    opened by bit-rocket 0
  • failed when running carthage bootstrap

    failed when running carthage bootstrap

    My XCode versions is 8.3.3.

    the output is

    *** Checking out MMDB-Swift at "0.2.0" *** Checking out FlagKit at "ea6885b10ae9bc69ad8e95a911dc0070861119c2" *** Downloading KeychainAccess.framework binary at "v3.0.1" *** Skipped installing KeychainAccess.framework binary due to the error: "Incompatible Swift version - framework was built with swiftlang-800.0.46.2 clang-800.0.38 and the local version is swiftlang-802.0.53 > clang-802.0.42." *** Checking out KeychainAccess at "v3.0.1" *** xcodebuild output can be found in /var/folders/nc/zd7x3_bd16706vvnp6fvnpr40000gn/T/carthage-xcodebuild.N91BRr.log *** Building scheme "FlagKit" in FlagKit.xcodeproj Build Failed Task failed with exit code 65: /usr/bin/xcrun xcodebuild -project /Users/leo108/iOS/VPNOn/Carthage/Checkouts/FlagKit/FlagKit.xcodeproj -scheme FlagKit -configuration > Release -derivedDataPath /Users/leo108/Library/Caches/org.carthage.CarthageKit/DerivedData/FlagKit/ea6885b10ae9bc69ad8e95a911dc0070861119c2 > ONLY_ACTIVE_ARCH=NO BITCODE_GENERATION_MODE=bitcode CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= CARTHAGE=YES clean build (launched in /Users/> leo108/iOS/VPNOn/Carthage/Checkouts/FlagKit)

    This usually indicates that project itself failed to compile. Please check the xcodebuild log for more details: /var/folders/nc/zd7x3_bd16706vvnp6fvnpr40000gn/T/carthage-xcodebuild.N91BRr.log

    the error in log file is

    error: 'imageForResource' has been renamed to 'image(forResource:)' guard let image = FlagKit.assetBundle.imageForResource(countryCode) else {return nil} ^~~~~~~~~~~~~~~~ image forResource: :0: note: 'imageForResource' was obsoleted in Swift 3 /Users/leo108/iOS/VPNOn/Carthage/Checkouts/FlagKit/Source/Image.swift:21:31: error: 'CGImageForProposedRect(:context:hints:)' has been renamed > to 'cgImage(forProposedRect:context:hints:)' guard let CGImage = image.CGImageForProposedRect(nil, context: nil, hints: nil) else {return nil} ^~~~~~~~~~~~~~~~~~~~~~ cgImage forProposedRect: :0: note: 'CGImageForProposedRect(:context:hints:)' was obsoleted in Swift 3 /Users/leo108/iOS/VPNOn/Carthage/Checkouts/FlagKit/Source/Image.swift:22:10: error: 'init(CGImage:size:)' has been renamed to 'init(> cgImage:size:)' self.init(CGImage:CGImage, size:image.size) ~^~~~ ~~~~~~~ cgImage :0: note: 'init(CGImage:size:)' was obsoleted in Swift 3

    ** BUILD FAILED **

    The following build commands failed: CompileSwift normal x86_64 CompileSwiftSources normal x86_64 com.apple.xcode.tools.swift.compiler (2 failures)>

    opened by leo108 1
  • Way to figure security methods for VPN

    Way to figure security methods for VPN

    First of all, thank you for the awesome app! I've been playing with it for a while, but unfortunately the default security selected 3DES, etc - I'm having trouble getting to work with my pfSense setup. I have a little simple custom app that I wrote that uses the VPN Configs, and managed to get it to connect - but I don't see a way in your UI to choose between SHA1, SHA256, 3DES - etc. would it be possible to expose all of the hash, encryption and MOD configurations? :-)

    Thanks!

    opened by terafin 1
  • Domain configured in Vpn on demand doesn't automatically enable vpn

    Domain configured in Vpn on demand doesn't automatically enable vpn

    Hi, I've configured 2 domains that need connection secured by vpn. Unfortunately vpn connection isn't automatically enabled when I use safari to reach webpages provided on these domains. How does this feature should work?

    long term 
    opened by venth 1
A calculator for your Apple Watch but only if you have fingers small enough to press the buttons.

AppleWatchCalculator A calculator for your Apple Watch but only if you have fingers small enough to press the buttons. A very simple calculator on you

Patrick Balestra 141 Aug 6, 2021
Swift Library based on AVFoundation that allow to easily add camera feature with custom UI into your project.

Would you like to create your camera same as Snapchat or Instagram? I think this library could help you. Basicly it is a wrapper above AVFoundation th

Taras Chernyshenko 13 Nov 16, 2021
Learn Swift interactively on your iPhone.

Unwrap is an app that helps you learn Swift faster and more effectively. At its core lies almost 100 video lessons that teach all the fundamentals of

Paul Hudson 2k Jan 4, 2022
Turn On your VPN like a hero.

VPN On Turning on a VPN is always a painful experience on an iOS device due to the deep nested menus. This App installs a Today Widget into Notificati

Lex Tang 4.3k Jan 5, 2022
Turn-by-turn navigation logic and UI in Swift on iOS

Mapbox Navigation SDK for iOS Mapbox Navigation gives you all the tools you need to add turn-by-turn navigation to your iOS application. Get up and ru

Mapbox 732 Jan 10, 2022
Turn your TV into a dashboard displaying any webpage!

?? WORK IN PROGRESS ?? Turn your TV into a dashboard displaying any webpage! Usage Currently it is not possible to interact with webpages on TV. Use

Sash Zats 223 Nov 23, 2021
Turn your Swift data model into a working CRUD app.

Model2App is a simple library that lets you quickly generate a CRUD iOS app based on just a data model defined in Swift. (CRUD - Create Read Update De

Q Mobile 119 Nov 6, 2021
Turn your Swift data model into a working CRUD app.

Model2App is a simple library that lets you quickly generate a CRUD iOS app based on just a data model defined in Swift. (CRUD - Create Read Update De

Q Mobile 118 Jan 7, 2022
Turn a photo of your food into a face

Megabite Megabite is a mobile app that automatically turns a photo of your food into a face. Read more about it here. Installation This project uses C

Aaron Randall 358 Jun 3, 2021
Turn your Swift data model into a working CRUD app.

Model2App is a simple library that lets you quickly generate a CRUD iOS app based on just a data model defined in Swift. (CRUD - Create Read Update De

Q Mobile 118 Jan 7, 2022
🦁 🃏 📱 An animal matching puzzle card game– built with turn-based game engine boardgame.io and React-Native + React-Native-Web

Matchimals.fun an animal matching puzzle card game ?? ?? ?? Download for iOS from the App Store ?? Download for Android from the Google Play Store ??

iGravity Studios 122 Jan 13, 2022
Visualize your dividend growth. DivRise tracks dividend prices of your stocks, gives you in-depth information about dividend paying stocks like the next dividend date and allows you to log your monthly dividend income.

DivRise DivRise is an iOS app written in Pure SwiftUI that tracks dividend prices of your stocks, gives you in-depth information about dividend paying

Kevin Li 71 Jan 5, 2022
Shopify 380 Jan 6, 2022
Poi - makes you use card UI like tinder UI .You can use it like tableview method.

Poi You can use tinder UI like tableview method Installation Manual Installation Use this command git clone [email protected]:HideakiTouhara/Poi.git Imp

null 60 Nov 17, 2021
Display Apple system-like self-hiding status alerts. It is well suited for notifying user without interrupting user flow in iOS-like way.

StatusAlert is being sponsored by the following tool; please help to support us by takin a look and signing up to a free trial. Dependency managers Fe

Yehor Miroshnychenko 825 Jan 2, 2022
Swipe to "like" or "dislike" any view, just like Tinder.app. Build a flashcard app, a photo viewer, and more, in minutes, not hours!

MDCSwipeToChoose Swipe to "like" or "dislike" any view, just like Tinder.app. Build a flashcard app, a photo viewer, and more, in minutes, not hours!

Brian Gesiak 2.6k Dec 30, 2021
Display Apple system-like self-hiding status alerts. It is well suited for notifying user without interrupting user flow in iOS-like way.

StatusAlert is being sponsored by the following tool; please help to support us by takin a look and signing up to a free trial. Dependency managers Fe

Yehor Miroshnychenko 825 Jan 2, 2022
AIB indicates for your app users which audio is playing. Just like the Podcasts app.

Audio Indicator Bars for iOS and tvOS Indicates for your app users which audio is playing. Just like the Podcasts app. Index Requirements and Details

Leonardo Cardoso 280 Nov 6, 2021
A fancy hexagonal layout for displaying data like your Apple Watch

Hexacon is a new way to display content in your app like the Apple Watch SpringBoard Highly inspired by the work of lmmenge. Special thanks to zenly f

Gautier Gédoux 335 Jan 4, 2022
An iOS application for remembering to take your medications. (Pronounced like the letters R-X.)

Arex An iOS application for remembering to take your medications. Downloading The following commands will set up an Arex checkout. You'll need Xcode o

Alexsander Akers 99 Jul 5, 2021
A fancy hexagonal layout for displaying data like your Apple Watch

Hexacon is a new way to display content in your app like the Apple Watch SpringBoard Highly inspired by the work of lmmenge. Special thanks to zenly f

Gautier Gédoux 335 Jan 4, 2022
Create your own faces for watchOS. Customize the watch hands, layout, colors, and images. Edit faces on your phone and switch them on the watch.

AppleWatchFaces Design your own watch faces for the apple watch. They are not real watch faces, but a watchOS app running on the watch that tells you

Mike Hill 363 Jan 6, 2022
Show off your GitHub contributions from your lock screen 📱

GitHubContributionsiOS V2 NOTICE: V2 is published. It is a complete rewrite using SwiftUI and Catalyst. Source code are now hosted on the version/2.x

JustZht 448 Dec 26, 2021
Discover your Github ranking based on your repositories' stars

OctoPodium Check how you rank on your location based on your number of stars of your repositories on github. Requirements iOS 12+ Xcode 10.0 Cocoapods

Nuno Gonçalves 211 Oct 20, 2021
Show off your GitHub contributions from your lock screen 📱

GitHubContributionsiOS V2 NOTICE: V2 is published. It is a complete rewrite using SwiftUI and Catalyst. Source code are now hosted on the version/2.x

JustZht 448 Dec 26, 2021
Stub your network requests easily! Test your apps with fake network data and custom response time, response code and headers!

OHHTTPStubs OHHTTPStubs is a library designed to stub your network requests very easily. It can help you: test your apps with fake network data (stubb

Olivier Halligon 4.8k Jan 7, 2022
The Big List of Naughty Strings is a list of strings which have a high probability of causing issues when used as user-input data. This is a keyboard to help you test your app from your iOS device.

The Big List of Naughty Strings is a list of strings which have a high probability of causing issues when used as user-input data. I have put together

Romain Pouclet 590 Dec 24, 2021
Automatic testing of your Pull Requests on GitHub and BitBucket using Xcode Server. Keep your team productive and safe. Get up and running in minutes. @buildasaur

Buildasaur Automatic testing of your Pull Requests on GitHub and BitBucket using Xcode Server. Keep your team productive and safe. Get up and running

Buildasaurs 783 Jan 12, 2022