diff options
author | 2018-12-16 01:11:23 +0530 | |
---|---|---|
committer | 2018-12-16 01:15:10 +0530 | |
commit | 2a22c0f2d6dd6bfd62f5663bddb11756e7d2a091 (patch) | |
tree | 6627f51fc43198231046197ee84c84a67c194b0d /WireGuard/WireGuard | |
parent | Nuke duplicate file (diff) | |
download | wireguard-apple-2a22c0f2d6dd6bfd62f5663bddb11756e7d2a091.tar.xz wireguard-apple-2a22c0f2d6dd6bfd62f5663bddb11756e7d2a091.zip |
Provide mock tunnels for the Simulator
To help in generation of screenshots for the App Store
Signed-off-by: Roopesh Chander <roop@roopc.net>
Diffstat (limited to 'WireGuard/WireGuard')
-rw-r--r-- | WireGuard/WireGuard/Tunnel/MockTunnels.swift | 43 | ||||
-rw-r--r-- | WireGuard/WireGuard/Tunnel/TunnelsManager.swift | 10 |
2 files changed, 52 insertions, 1 deletions
diff --git a/WireGuard/WireGuard/Tunnel/MockTunnels.swift b/WireGuard/WireGuard/Tunnel/MockTunnels.swift new file mode 100644 index 0000000..116a1d8 --- /dev/null +++ b/WireGuard/WireGuard/Tunnel/MockTunnels.swift @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: MIT +// Copyright © 2018 WireGuard LLC. All Rights Reserved. + +import NetworkExtension + +// Creates mock tunnels for the iOS Simulator. + +#if targetEnvironment(simulator) +class MockTunnels { + static let tunnelNames = [ + "demo", + "edgesecurity", + "home", + "office" + ] + static let address = "192.168.4.184/24" + static let dnsServers = ["8.8.8.8", "4.4.4.4"] + static let endpoint = "demo.wireguard.com:12912" + static let allowedIPs = "0.0.0.0/0" + + static func createMockTunnels() -> [NETunnelProviderManager] { + return tunnelNames.map { tunnelName -> NETunnelProviderManager in + + var interface = InterfaceConfiguration(name: tunnelName, privateKey: Curve25519.generatePrivateKey()) + interface.addresses = [IPAddressRange(from: address)!] + interface.dns = dnsServers.map { DNSServer(from: $0)! } + + var peer = PeerConfiguration(publicKey: Curve25519.generatePublicKey(fromPrivateKey: Curve25519.generatePrivateKey())) + peer.endpoint = Endpoint(from: endpoint) + peer.allowedIPs = [IPAddressRange(from: allowedIPs)!] + + let tunnelConfiguration = TunnelConfiguration(interface: interface, peers: [peer]) + + let tunnelProviderManager = NETunnelProviderManager() + tunnelProviderManager.protocolConfiguration = NETunnelProviderProtocol(tunnelConfiguration: tunnelConfiguration) + tunnelProviderManager.localizedDescription = tunnelName + tunnelProviderManager.isEnabled = true + + return tunnelProviderManager + } + } +} +#endif diff --git a/WireGuard/WireGuard/Tunnel/TunnelsManager.swift b/WireGuard/WireGuard/Tunnel/TunnelsManager.swift index 4c2f2ed..ff8c720 100644 --- a/WireGuard/WireGuard/Tunnel/TunnelsManager.swift +++ b/WireGuard/WireGuard/Tunnel/TunnelsManager.swift @@ -92,7 +92,7 @@ class TunnelsManager { static func create(completionHandler: @escaping (WireGuardResult<TunnelsManager>) -> Void) { #if targetEnvironment(simulator) - completionHandler(.success(TunnelsManager(tunnelProviders: []))) + completionHandler(.success(TunnelsManager(tunnelProviders: MockTunnels.createMockTunnels()))) #else NETunnelProviderManager.loadAllFromPreferences { managers, error in if let error = error { @@ -272,13 +272,21 @@ class TunnelsManager { return } + #if targetEnvironment(simulator) + tunnel.status = .active + #else tunnel.startActivation(activationDelegate: activationDelegate) + #endif } func startDeactivation(of tunnel: TunnelContainer) { tunnel.isAttemptingActivation = false guard tunnel.status != .inactive && tunnel.status != .deactivating else { return } + #if targetEnvironment(simulator) + tunnel.status = .inactive + #else tunnel.startDeactivation() + #endif } func refreshStatuses() { |