diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-01-24 00:00:46 +0100 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-01-24 01:37:57 +0100 |
commit | 22625e8cc4792a71174af5fc69f0f63ba4b808d8 (patch) | |
tree | 2907ae3cde1b5d61acc831374058e9c4bde4b9f0 /WireGuard/WireGuard/Tunnel/TunnelsManager.swift | |
parent | wireguard-go-bridge: allow querying internal settings (diff) | |
download | wireguard-apple-22625e8cc4792a71174af5fc69f0f63ba4b808d8.tar.xz wireguard-apple-22625e8cc4792a71174af5fc69f0f63ba4b808d8.zip |
Tunnel: support getting runtime configuration
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'WireGuard/WireGuard/Tunnel/TunnelsManager.swift')
-rw-r--r-- | WireGuard/WireGuard/Tunnel/TunnelsManager.swift | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/WireGuard/WireGuard/Tunnel/TunnelsManager.swift b/WireGuard/WireGuard/Tunnel/TunnelsManager.swift index 75d8230..5e6ad5c 100644 --- a/WireGuard/WireGuard/Tunnel/TunnelsManager.swift +++ b/WireGuard/WireGuard/Tunnel/TunnelsManager.swift @@ -397,6 +397,23 @@ class TunnelContainer: NSObject { super.init() } + func getRuntimeTunnelConfiguration(completionHandler: @escaping ((TunnelConfiguration?) -> Void)) { + guard status != .inactive, let session = tunnelProvider.connection as? NETunnelProviderSession else { + completionHandler(tunnelConfiguration) + return + } + guard nil != (try? session.sendProviderMessage(Data(bytes: [ 0 ]), responseHandler: { + guard self.status != .inactive, let data = $0, let base = self.tunnelConfiguration, let settings = String(data: data, encoding: .utf8) else { + completionHandler(self.tunnelConfiguration) + return + } + completionHandler((try? TunnelConfiguration(fromUapiConfig: settings, basedOn: base)) ?? self.tunnelConfiguration) + })) else { + completionHandler(tunnelConfiguration) + return + } + } + func refreshStatus() { let status = TunnelStatus(from: tunnelProvider.connection.status) self.status = status |