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.
License
Copyright (c) 2020-2021 The Commons Conservancy. All rights reserved.
Part I
This project is licensed under the [GPLv3][license-content].
Part II
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/).
Beware
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.
Most dependencies are managed with CocoaPods. But this repository is set up in such a way that you do not need CocoaPods to build this project, only when updating dependencies.
Dependencies are defined in a Podfile, exact versions are 'locked' in Podfile.lock. All dependencies defined in the Podfile are committed to this repository.
Swift Package Manager
WireGuardKit alone is managed with Swift Package Manager, tied to either a specific version or commit.
Building
There are two flavours of apps that are built from the same codebase:
Go to Certificates, IDs and Profiles > Identifiers
Create an App ID with an ExplicitBundle ID, with the following Capabilities:
App Groups
Network Extensions
Specify the Bundle ID in the appropriate Developer*.xcconfig file as described below
Building the eduVPN macOS app
To 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.
Building the Let’s Connect! macOS app
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.
Building the eduVPN iOS app
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.
Building the Let’s Connect! iOS app
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.
Testing
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.
Testing the eduVPN iOS app
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:
Open EduVPN.xcworkspace in Xcode
Ensure the test targets (EduVPN-Tests-iOS, EduVPN-UITests-iOS) have
correct 'Team' set under 'Signing & Capabilities'
In the scheme selector breadcrumb panel, select the 'EduVPN-iOS'
scheme and your connected iDevice
Click on Product > Test
Do not use the iDevice when the test is running.
Testing the eduVPN macOS app
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:
Open Safari.app, open a new private window, close all other windows
Open EduVPN.xcworkspace in Xcode
Ensure the test targets (EduVPN-Tests-macOS, EduVPN-UITests-macOS) have
correct 'Team' set under 'Signing & Capabilities'
In the scheme selector breadcrumb panel, select the 'EduVPN-iOS'
scheme and the macOS machine
Click on Product > Test
Do not use the macOS machine when the test is running.
请发表评论