macOS: Show alert if exiting with an active tunnel
Instead of deactivating the tunnel. Signed-off-by: Roopesh Chander <roop@roopc.net>
This commit is contained in:
parent
ecd66defe5
commit
a99a755c34
|
@ -323,3 +323,8 @@
|
||||||
"macViewPrivateData" = "view tunnel private keys";
|
"macViewPrivateData" = "view tunnel private keys";
|
||||||
"iosExportPrivateData" = "Authenticate to export tunnel private keys.";
|
"iosExportPrivateData" = "Authenticate to export tunnel private keys.";
|
||||||
"iosViewPrivateData" = "Authenticate to view tunnel private keys.";
|
"iosViewPrivateData" = "Authenticate to view tunnel private keys.";
|
||||||
|
|
||||||
|
// Mac alert
|
||||||
|
|
||||||
|
"macAppExitingWithActiveTunnelMessage" = "WireGuard is exiting with an active tunnel";
|
||||||
|
"macAppExitingWithActiveTunnelInfo" = "The tunnel will remain active after exiting. You may disable it by reopening this application or through the Network panel in System Preferences.";
|
||||||
|
|
|
@ -12,6 +12,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
||||||
|
|
||||||
var manageTunnelsRootVC: ManageTunnelsRootViewController?
|
var manageTunnelsRootVC: ManageTunnelsRootViewController?
|
||||||
var manageTunnelsWindowObject: NSWindow?
|
var manageTunnelsWindowObject: NSWindow?
|
||||||
|
var isTerminationAlertShown = false
|
||||||
|
|
||||||
func applicationDidFinishLaunching(_ aNotification: Notification) {
|
func applicationDidFinishLaunching(_ aNotification: Notification) {
|
||||||
Logger.configureGlobal(withFilePath: FileManager.appLogFileURL?.path)
|
Logger.configureGlobal(withFilePath: FileManager.appLogFileURL?.path)
|
||||||
|
@ -41,9 +42,25 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func applicationWillTerminate(_ notification: Notification) {
|
func applicationShouldTerminate(_ sender: NSApplication) -> NSApplication.TerminateReply {
|
||||||
if let currentTunnel = tunnelsTracker?.currentTunnel {
|
guard let currentTunnel = tunnelsTracker?.currentTunnel, currentTunnel.status == .active || currentTunnel.status == .activating else {
|
||||||
tunnelsManager?.startDeactivation(of: currentTunnel)
|
return .terminateNow
|
||||||
|
}
|
||||||
|
if isTerminationAlertShown {
|
||||||
|
return .terminateNow
|
||||||
|
}
|
||||||
|
let alert = NSAlert()
|
||||||
|
alert.messageText = tr("macAppExitingWithActiveTunnelMessage")
|
||||||
|
alert.informativeText = tr("macAppExitingWithActiveTunnelInfo")
|
||||||
|
if let window = manageTunnelsWindowObject {
|
||||||
|
alert.beginSheetModal(for: window) { [weak self] _ in
|
||||||
|
self?.isTerminationAlertShown = true
|
||||||
|
NSApp.terminate(nil)
|
||||||
|
}
|
||||||
|
return .terminateCancel
|
||||||
|
} else {
|
||||||
|
alert.runModal()
|
||||||
|
return .terminateNow
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue