Turning on a VPN is always a painful experience on an iOS device due to the deep nested menus.

Related tags

Content App 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.
Comments
  • 协议切换的时候有问题

    协议切换的时候有问题

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

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

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

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

    于是导致连接失败。

    不知道是不是个案

    bug 
    opened by hzx1987227 9
  • 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
  • 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
  • iOS 10 compatibility issue

    iOS 10 compatibility issue

    System: iPhone SE with iOS 10.0(14A5345a) Version: 0.9.6 (from App Store)

    The widget is blank, shown as below. Besides, after uninstall and reinstall, VPN profile in system preference can not be deleted and the connect button does not work.

    1: widget is blank. image

    2: connect button is on, but VPN is not connected. image

    opened by puxxustc 4
  • VPN On crashes when using vpnon:// link

    VPN On crashes when using vpnon:// link

    When using a link in this format:

    vpnon://username:[email protected]/?title=MyServer&alwayson=yes&ikev2=yes&certificate=https://servers.com/ca.pem

    Safari will ask to open VPN On correctly and I can see iOS do the switch (the pre-load screenshot of VPN On shows briefly) but the VPN On app then crashes to the home screen immediately.

    I've restarted the phone to make sure it's not a low-memory situation, but this did not help.

    iOS version is 8.1.3 on iPhone 6 Plus. VPN On is 0.5 from Feb 19th.

    bug 
    opened by nielspeen 4
  • VPN On widget: Flags icon not updated and button disapear

    VPN On widget: Flags icon not updated and button disapear

    Hi, I just bought VPN On on Mac App Store and I see two little things:

    • Flags doesn"t appear. On telize.com a message said that after November 15th the api will shut down.
    • The little switch to change to switch view disapear when cliqued.

    Tested on iPhone 5.

    bug ui 
    opened by atika 3
  • switch button alway stay disabled

    switch button alway stay disabled

    Hi lexrus,

    I managed to install the VPNOn on my iPhone. It looks like the Today widget view controller only executed once after installation successfully, after creating one new vpn profile, the switch button in the widget didn't get notified so to stay disabled.

    BTW, great clean code.

    Thanks Ethan

    opened by zhjuncai 3
  • How to deal with: Module compiled with Swift 5.1 cannot be imported by the Swift 5.1.2 compiler: /Applications/MAMP/htdocs/VPNOn/Carthage/Build/iOS/KeychainAccess.framework/Modules/KeychainAccess.swiftmodule/x86_64.swiftmodule   ?

    How to deal with: Module compiled with Swift 5.1 cannot be imported by the Swift 5.1.2 compiler: /Applications/MAMP/htdocs/VPNOn/Carthage/Build/iOS/KeychainAccess.framework/Modules/KeychainAccess.swiftmodule/x86_64.swiftmodule ?

    I have downloaded the whole VPNOn package to build and run in Xcode,but noticed like this: /******* Module compiled with Swift 5.1 cannot be imported by the Swift 5.1.2 compiler: /Applications/MAMP/htdocs/VPNOn/Carthage/Build/iOS/KeychainAccess.framework/Modules/KeychainAccess.swiftmodule/x86_64.swiftmodule *******/ How can I deal with this problem and run it well in my Xcode. My running environment: macOS Catalina 10.15.1 Xcode:Version 11.2 (11B52)

    Please give me a hand , if you know how to deal with , please answer me an email to [email protected], or leave message here in github. thank you very much.

    opened by Dongzhu 2
  • 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
  • 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
An iOS widget-based HN reader

Benuse, an iOS widget-based HN reader Why did you build this app? There already exist some great native Hacker News clients for iOS. I would recommend

Jordan Mann 8 Jul 21, 2022
iOS app to record how much things cost using various data persistence implementations.

how-much iOS app to record how much things cost using various data persistence implementations. The basic data unit is an item, a simple dictionary: {

null 22 Aug 15, 2022
The (second) best iOS app for GitHub.

GitHawk is the second-highest rated iOS app for GitHub. Features 0️⃣ Inbox Zero your notifications ?? Comment even faster than on GitHub desktop ?? Th

GitHawk 2.8k Dec 23, 2022
WordPress for iOS - Official repository

WordPress for iOS Build Instructions Please refer to the sections below for more detailed information. The instructions assume the work is performed f

WordPress Mobile 3.4k Jan 9, 2023
Fully open source text editor for iOS written in Swift.

Edhita Fully open source text editor for iOS written in Swift. http://edhita.bornneet.com/ What Edhita means? Edhita (Romaji) == エディタ (Katakana) == Ed

Tatsuya Tobioka 1.2k Jan 7, 2023
iOS app for 5calls.org

5Calls iOS App This is the repository for the iOS app for 5Calls.org. Requirements Xcode 10.2.1 iOS 10.2 Getting Started Install the dependencies: bun

5 Calls 129 Dec 25, 2022
iOS Money Manager for Board Games

Warning! This is an old project. It does contain a lot of bad code I wrote when I started out with iOS Development. I am not mantaining this project a

Richard 164 Sep 27, 2022
Development of the TUM Campus App for iOS devices - for and from students at Technical University of Munich.

Tum Campus App - An Unofficial Guide Through University Life The TUM Campus App (TCA) is an open source project, developed by volunteers and available

TUM Developers 93 Dec 16, 2022
Lightweight iOS Photo Blur App

Blurry Blurry is the go-to image blurring tool to help you apply beautiful blurs for your photos. It is perfect for creating wallpapers, backgrounds,

Andy 17 Nov 22, 2022
Kickstarter for iOS. Bring new ideas to life, anywhere.

Welcome to Kickstarter’s open source iOS app! Come on in, take your shoes off, stay a while—explore how Kickstarter’s native squad has built and conti

Kickstarter 8k Jan 6, 2023
Alfresco iOS App - Alfresco is the open platform for business-critical content management and collaboration.

Welcome to the Alfresco iOS App Alfresco is the open platform for business-critical content management and collaboration. Alfresco Mobile was designed

Alfresco Software 42 Sep 26, 2022
Discover, download, compile & launch different image processing & style transfer CoreML models on iOS.

⚠️ ⚠️ ⚠️ IMPORTANT: I'm no longer maintaining Awesome-ML. Awesome ML is an iOS app that is made to demonstrate different image processing CoreML model

eugene 171 Nov 8, 2022
📱 Nextcloud iOS app

Nextcloud iOS app Check out https://nextcloud.com and follow us on twitter.com/nextclouders or twitter.com/NextcloudiOS How to contribute If you want

Nextcloud 1.4k Dec 30, 2022
Kommunicate iOS SDK for customer support

Kommunicate iOS Chat SDK for Customer Support An Open Source iOS Live Chat SDK for Customer Support Overview Kommunicate provides open source live cha

Kommunicate 39 Dec 14, 2022
Simple sample of using the VIP (Clean Swift) architecture for iOS

MyAnimeList Simple sample of using the VIP (Clean Swift) architecture for iOS. ViewController: controls the event handling, view life cycle and displa

null 24 Oct 12, 2022
📱 Wire for iOS (iPhone and iPad)

Wire™ This repository is part of the source code of Wire. You can find more information at wire.com or by contacting [email protected]. You can find

Wire Swiss GmbH 3.2k Jan 8, 2023
Swift audio synthesis, processing, & analysis platform for iOS, macOS and tvOS

AudioKit AudioKit is an audio synthesis, processing, and analysis platform for iOS, macOS (including Catalyst), and tvOS. Installation To add AudioKit

AudioKit 9.5k Jan 5, 2023
🍣Making Recipes iOS app

Recipes App ❤️ Support my apps ❤️ Push Hero - pure Swift native macOS application to test push notifications PastePal - Pasteboard, note and shortcut

Khoa 88 Nov 22, 2022
📱The official Wikipedia iOS app.

Wikipedia iOS The official Wikipedia iOS app. License: MIT License Source repo: https://github.com/wikimedia/wikipedia-ios Planning (bugs & features):

Wikimedia 2.5k Dec 27, 2022