These apps depend on TunnelKit.
The app contains a Network Tunneling Protocol Client and allows its users to create a VPN tunnel if you are able to connect to an eduVPN or Let's Connect enabled server.
Copyright (c) 2020-2021 The Commons Conservancy. All rights reserved.
This project is licensed under the [GPLv3][license-content].
As seen in [libsignal-protocol-c][license-signal]:
Additional Permissions For Submission to Apple App Store: Provided that you are otherwise in compliance with the GPLv3 for each covered work you convey (including without limitation making the Corresponding Source available in compliance with Section 6 of the GPLv3), the Author also grants you the additional permission to convey through the Apple App Store non-source executable versions of the Program as incorporated into each applicable covered work as Executable Versions only under the Mozilla Public License version 2.0 (https://www.mozilla.org/en-US/MPL/2.0/).
Due to the usage of Network Extensions, you can not fully test this app on a Simulator.
The infrastructure for Network Extension (NE) providers is simply not present on the simulator because, conceptually, it lives ‘below’ the kernel, and the simulator is layered on the OS X kernel.
The build proces takes the number of commits on the current branch as the build number with git rev-list HEAD --count
. The version string is configured in AppVersion.xcconfig.
The exact behavior is defined in the script set_build_number.sh.
Dependencies are included as Swift Packages and managed through Xcode. We build against exact versions / commits of dependencies to keep it predictable.
There are two flavours of apps that are built from the same codebase:
This needs to be configured in two files, which are different for macOS and iOS:
Config/Mac/config.json
Config/Mac/Developer-macOS.xcconfig
Config/iOS/config.json
Config/iOS/Developer.xcconfig
SwiftLint and Go need to be installed. The build setup looks for these in the paths that HomeBrew installs into.
To install, run:
brew install swiftlint go
Go version 1.16 is required.
An explicit App ID needs to be created at the Apple Developer website for each platform
To do this, you can:
Developer*.xcconfig
file as described belowTo build the app, run:
$ cp Config/Mac/config-eduvpn_new_discovery.json Config/Mac/config.json
$ cp Config/Mac/privacy_statement-eduvpn.json Config/Mac/privacy_statement.json
$ cp Config/Mac/Developer-macOS.xcconfig.eduvpn-template Config/Mac/Developer-macOS.xcconfig
$ vim Config/Mac/Developer-macOS.xcconfig # Edit as reqd.
Then, open EduVPN.xcworkspace
in Xcode and build the 'EduVPN-macOS' target.
To build the app, run:
$ cp Config/Mac/config-letsconnect_new_discovery.json Config/Mac/config.json
$ cp Config/Mac/privacy_statement-letsconnect.json Config/Mac/privacy_statement.json
$ cp Config/Mac/Developer-macOS.xcconfig.letsconnect-template Config/Mac/Developer-macOS.xcconfig
$ vim Config/Mac/Developer-macOS.xcconfig # Edit as reqd.
Then, open EduVPN.xcworkspace
in Xcode and build the 'EduVPN-macOS' target.
To build the app, run:
$ cp Config/iOS/config-eduvpn_new_discovery.json Config/iOS/config.json
$ cp Config/iOS/privacy_statement-eduvpn.json Config/iOS/privacy_statement.json
$ cp Config/iOS/Developer.xcconfig.eduvpn-template Config/iOS/Developer.xcconfig
$ vim Config/iOS/Developer.xcconfig # Edit as reqd.
Then, open EduVPN.xcworkspace
in Xcode and build the 'EduVPN-iOS' target.
To build the app, run:
$ cp Config/iOS/config-letsconnect_new_discovery.json Config/iOS/config.json
$ cp Config/iOS/privacy_statement-letsconnect.json Config/iOS/privacy_statement.json
$ cp Config/iOS/Developer.xcconfig.letsconnect-template Config/iOS/Developer.xcconfig
$ vim Config/iOS/Developer.xcconfig # Edit as reqd.
Then, open EduVPN.xcworkspace
in Xcode and build the 'EduVPN-iOS' target.
The app can be tested using UI tests written using XCUITest.
The tests can modify the app data, so to avoid losing your added servers, it's recommended that you use a separate app bundle identifier for running the UI tests. The app bundle identifier is configurable in Developer.xcconfig or Developer-macOS.xcconfig as specified above.
The iOS UI tests are intended to be run on a physical device (not on the iOS Simulator).
Before running the tests, specify the server credentials:
$ cp EduVPN-UITests-iOS/TestServerCredentialsiOS.swift-template EduVPN-UITests-iOS/TestServerCredentialsiOS.swift
$ vim EduVPN-UITests-iOS/TestServerCredentialsiOS.swift # Enter credentials
Then:
EduVPN.xcworkspace
in XcodeDo not use the iDevice when the test is running.
Before running the tests, specify the server credentials:
$ cp EduVPN-UITests-macOS/TestServerCredentialsmacOS.swift-template EduVPN-UITests-macOS/TestServerCredentialsmacOS.swift
$ vim EduVPN-UITests-macOS/TestServerCredentialsmacOS.swift # Enter credentials
Then:
EduVPN.xcworkspace
in XcodeDo not use the macOS machine when the test is running.