aboutsummaryrefslogtreecommitdiffstats
path: root/WireGuard/WireGuard/Tunnel
diff options
context:
space:
mode:
Diffstat (limited to 'WireGuard/WireGuard/Tunnel')
-rw-r--r--WireGuard/WireGuard/Tunnel/TunnelsManager.swift26
1 files changed, 17 insertions, 9 deletions
diff --git a/WireGuard/WireGuard/Tunnel/TunnelsManager.swift b/WireGuard/WireGuard/Tunnel/TunnelsManager.swift
index f6dcc32..b56cb37 100644
--- a/WireGuard/WireGuard/Tunnel/TunnelsManager.swift
+++ b/WireGuard/WireGuard/Tunnel/TunnelsManager.swift
@@ -41,7 +41,14 @@ class TunnelsManager {
completionHandler(.failure(TunnelsManagerError.systemErrorOnListingTunnels(systemError: error)))
return
}
- completionHandler(.success(TunnelsManager(tunnelProviders: managers ?? [])))
+
+ let tunnelManagers = managers ?? []
+ tunnelManagers.forEach {
+ if ($0.protocolConfiguration as? NETunnelProviderProtocol)?.migrateConfigurationIfNeeded() == true {
+ $0.saveToPreferences { _ in }
+ }
+ }
+ completionHandler(.success(TunnelsManager(tunnelProviders: tunnelManagers)))
}
#endif
}
@@ -309,6 +316,7 @@ class TunnelsManager {
NotificationCenter.default.removeObserver(statusObservationToken)
}
}
+
}
class TunnelContainer: NSObject {
@@ -344,6 +352,14 @@ class TunnelContainer: NSObject {
fileprivate let tunnelProvider: NETunnelProviderManager
private var lastTunnelConnectionStatus: NEVPNStatus?
+ var tunnelConfiguration: TunnelConfiguration? {
+ return (tunnelProvider.protocolConfiguration as? NETunnelProviderProtocol)?.tunnelConfiguration
+ }
+
+ var activateOnDemandSetting: ActivateOnDemandSetting {
+ return ActivateOnDemandSetting(from: tunnelProvider)
+ }
+
init(tunnel: NETunnelProviderManager) {
name = tunnel.localizedDescription ?? "Unnamed"
let status = TunnelStatus(from: tunnel.connection.status)
@@ -353,14 +369,6 @@ class TunnelContainer: NSObject {
super.init()
}
- func tunnelConfiguration() -> TunnelConfiguration? {
- return (tunnelProvider.protocolConfiguration as? NETunnelProviderProtocol)?.tunnelConfiguration()
- }
-
- func activateOnDemandSetting() -> ActivateOnDemandSetting {
- return ActivateOnDemandSetting(from: tunnelProvider)
- }
-
func refreshStatus() {
let status = TunnelStatus(from: tunnelProvider.connection.status)
self.status = status