]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
macOS: Manage tunnels: Export tunnels pulldown menu implementation
authorRoopesh Chander <roop@roopc.net>
Fri, 4 Jan 2019 10:55:57 +0000 (16:25 +0530)
committerRoopesh Chander <roop@roopc.net>
Mon, 14 Jan 2019 09:22:32 +0000 (14:52 +0530)
Signed-off-by: Roopesh Chander <roop@roopc.net>
WireGuard/WireGuard/UI/macOS/ViewController/TunnelsListTableViewController.swift

index 310d13ab673ed9cc77970fcfcf9fa46fd67ab294..9bdcceae029e0acf13dbffef4de11ac660ee0069 100644 (file)
@@ -146,8 +146,27 @@ class TunnelsListTableViewController: NSViewController {
     @objc func exportLogClicked() {
         print("exportLogClicked")
     }
+
     @objc func exportTunnelsClicked() {
-        print("exportTunnelsClicked")
+        guard let window = view.window else { return }
+        let savePanel = NSSavePanel()
+        savePanel.allowedFileTypes = ["zip"]
+        savePanel.prompt = "Save"
+        savePanel.nameFieldLabel = "Export tunnels to"
+        savePanel.nameFieldStringValue = "wireguard-export.zip"
+        savePanel.beginSheetModal(for: window) { [weak tunnelsManager] response in
+            guard let tunnelsManager = tunnelsManager else { return }
+            guard response == .OK else { return }
+            guard let destinationURL = savePanel.url else { return }
+            let count = tunnelsManager.numberOfTunnels()
+            let tunnelConfigurations = (0 ..< count).compactMap { tunnelsManager.tunnel(at: $0).tunnelConfiguration }
+            ZipExporter.exportConfigFiles(tunnelConfigurations: tunnelConfigurations, to: destinationURL) { [weak self] error in
+                if let error = error {
+                    ErrorPresenter.showErrorAlert(error: error, from: self)
+                    return
+                }
+            }
+        }
     }
 
     @discardableResult