- Swift 49.7%
- Go 35.5%
- Python 4.9%
- C++ 3.5%
- Shell 3.1%
- Other 3.3%
eduVPN iOS and macOS apps
These apps depend on TunnelKit and WireGuardKit.
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-2024 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.
Building
There are two flavours of apps that are built from the same codebase:
- eduVPN app
- Let’s Connect! app
Use the appropriate scheme in Xcode to build the correct app.
Only Let's Connect macOS app is implemented at present.
Pre-requisites
-
Go version 1.26 is required. You can install it using homebrew.
-
An explicit App ID needs to be created at the Apple Developer website for each platform
To do this, you can:
- Go to your Apple Developer account page
- Go to Certificates, IDs and Profiles > Identifiers
- Create an App ID with an Explicit Bundle ID, with the following Capabilities:
- App Groups
- Network Extensions
- Specify the Bundle ID in the appropriate
<app>-<os>.xcconfigfile under 'EduVPN/xcconfig/'. See the -.xcconfig.template file for help.
Building the app
- Open 'EduVPN/EduVPN.xcodeproj/' in Xcode and build the appropriate scheme. The schemes that can be built are:
- LetsConnect-macOS
- LetsConnect-iOS
- EduVPN-iOS
- EduVPN-macOS
- GovVPN-macOS
- GovVPN-iOS
Duplicate symbols while building
In case you see errors about "duplicate symbols", they are because Go's C runtime is included in both libeduvpn-common and wireguard-go. We don't need wg-go in the app, but Xcode adds it unwantedly. To remove it:
- Open the project in Xcode:
open EduVPN/EduVPN.xcodeproj/ - Go to: View > Navigators > Project (if this has no visible effect, that's fine, you might already in the correct tab)
- Select the EduVPN project in the top of the list on the left pane
- Under
TARGETSin the editor pane, select either EduVPN-macOS or EduVPN-iOS, depending on the platform you're building for - Go to the Build Phases tab
- Under Link Binary With Libraries, click on WireGuardKit, and then click on '-'
- Build / Archive
Errors about missing files
In case you see any errors like "Build input file cannot be found", you can try doing this in Xcode:
- Product > Clean Build Folder...
- File > Packages > Reset Package Caches