From 339e37f4be636104808e86b37372ec4364835100 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Tue, 23 Jan 2024 18:25:00 +0800 Subject: [PATCH] Fix service error permission --- .../Views/Dashboard/DashboardView.swift | 13 ++++++---- Library/Network/ExtensionProvider.swift | 16 ++++--------- sing-box.xcodeproj/project.pbxproj | 24 +++++++++---------- 3 files changed, 24 insertions(+), 29 deletions(-) diff --git a/ApplicationLibrary/Views/Dashboard/DashboardView.swift b/ApplicationLibrary/Views/Dashboard/DashboardView.swift index 321f9b9..5c4423d 100644 --- a/ApplicationLibrary/Views/Dashboard/DashboardView.swift +++ b/ApplicationLibrary/Views/Dashboard/DashboardView.swift @@ -1,3 +1,4 @@ +import Libbox import Library import SwiftUI @@ -101,11 +102,13 @@ public struct DashboardView: View { } private nonisolated func checkServiceError() async { - if let serviceError = try? String(contentsOf: ExtensionProvider.errorFile) { - await MainActor.run { - alert = Alert(title: Text("Service Error"), message: Text(serviceError)) - } - try? FileManager.default.removeItem(at: ExtensionProvider.errorFile) + var error: NSError? + let message = LibboxReadServiceError(&error) + if error != nil { + return + } + await MainActor.run { + alert = Alert(title: Text("Service Error"), message: Text(message)) } } } diff --git a/Library/Network/ExtensionProvider.swift b/Library/Network/ExtensionProvider.swift index bbdd29d..639574d 100644 --- a/Library/Network/ExtensionProvider.swift +++ b/Library/Network/ExtensionProvider.swift @@ -3,8 +3,6 @@ import Libbox import NetworkExtension open class ExtensionProvider: NEPacketTunnelProvider { - public static let errorFile = FilePath.workingDirectory.appendingPathComponent("network_extension_error") - public var username: String? = nil private var commandServer: LibboxCommandServer! private var boxService: LibboxBoxService! @@ -13,14 +11,7 @@ open class ExtensionProvider: NEPacketTunnelProvider { private var platformInterface: ExtensionPlatformInterface! override open func startTunnel(options _: [String: NSObject]?) async throws { - try? FileManager.default.removeItem(at: ExtensionProvider.errorFile) - - do { - try FileManager.default.createDirectory(at: FilePath.workingDirectory, withIntermediateDirectories: true) - } catch { - writeFatalError("(packet-tunnel) error: create working directory: \(error.localizedDescription)") - return - } + LibboxClearServiceError() if let username { var error: NSError? @@ -43,7 +34,7 @@ open class ExtensionProvider: NEPacketTunnelProvider { writeError("(packet-tunnel) redirect stderr error: \(error.localizedDescription)") } - try await LibboxSetMemoryLimit(!SharedPreferences.disableMemoryLimit.get()) + await LibboxSetMemoryLimit(!SharedPreferences.disableMemoryLimit.get()) if platformInterface == nil { platformInterface = ExtensionPlatformInterface(self) @@ -69,7 +60,8 @@ open class ExtensionProvider: NEPacketTunnelProvider { func writeError(_ message: String) { writeMessage(message) - try? message.write(to: ExtensionProvider.errorFile, atomically: true, encoding: .utf8) + var error: NSError? + LibboxWriteServiceError(message, &error) } public func writeFatalError(_ message: String) { diff --git a/sing-box.xcodeproj/project.pbxproj b/sing-box.xcodeproj/project.pbxproj index 048f428..071bc19 100644 --- a/sing-box.xcodeproj/project.pbxproj +++ b/sing-box.xcodeproj/project.pbxproj @@ -1974,7 +1974,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.8.2; + MARKETING_VERSION = 1.8.4; PRODUCT_BUNDLE_IDENTIFIER = io.nekohasekai.sfa; PRODUCT_NAME = "sing-box"; SDKROOT = appletvos; @@ -2008,7 +2008,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.8.2; + MARKETING_VERSION = 1.8.4; PRODUCT_BUNDLE_IDENTIFIER = io.nekohasekai.sfa; PRODUCT_NAME = "sing-box"; SDKROOT = appletvos; @@ -2246,7 +2246,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.8.2; + MARKETING_VERSION = 1.8.4; OTHER_CODE_SIGN_FLAGS = "--deep"; PRODUCT_BUNDLE_IDENTIFIER = io.nekohasekai.sfa; PRODUCT_NAME = "sing-box"; @@ -2286,7 +2286,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.8.2; + MARKETING_VERSION = 1.8.4; OTHER_CODE_SIGN_FLAGS = "--deep"; PRODUCT_BUNDLE_IDENTIFIER = io.nekohasekai.sfa; PRODUCT_NAME = "sing-box"; @@ -2309,7 +2309,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 188; + CURRENT_PROJECT_VERSION = 192; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = Z56Z6NYZN2; ENABLE_HARDENED_RUNTIME = YES; @@ -2325,7 +2325,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 13.0; - MARKETING_VERSION = 1.8.2; + MARKETING_VERSION = 1.8.4; OTHER_CODE_SIGN_FLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = io.nekohasekai.sfa; PRODUCT_NAME = "sing-box"; @@ -2347,7 +2347,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 188; + CURRENT_PROJECT_VERSION = 192; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = Z56Z6NYZN2; ENABLE_HARDENED_RUNTIME = YES; @@ -2363,7 +2363,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 13.0; - MARKETING_VERSION = 1.8.2; + MARKETING_VERSION = 1.8.4; OTHER_CODE_SIGN_FLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = io.nekohasekai.sfa; PRODUCT_NAME = "sing-box"; @@ -2505,7 +2505,7 @@ "@executable_path/../../../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 13.0; - MARKETING_VERSION = 1.8.2; + MARKETING_VERSION = 1.8.4; PRODUCT_BUNDLE_IDENTIFIER = io.nekohasekai.sfa.system; PRODUCT_NAME = "$(inherited)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -2541,7 +2541,7 @@ "@executable_path/../../../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 13.0; - MARKETING_VERSION = 1.8.2; + MARKETING_VERSION = 1.8.4; PRODUCT_BUNDLE_IDENTIFIER = io.nekohasekai.sfa.system; PRODUCT_NAME = "$(inherited)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -2581,7 +2581,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 13.0; - MARKETING_VERSION = 1.8.2; + MARKETING_VERSION = 1.8.4; PRODUCT_BUNDLE_IDENTIFIER = io.nekohasekai.sfa.independent; PRODUCT_NAME = SFM; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -2620,7 +2620,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 13.0; - MARKETING_VERSION = 1.8.2; + MARKETING_VERSION = 1.8.4; PRODUCT_BUNDLE_IDENTIFIER = io.nekohasekai.sfa.independent; PRODUCT_NAME = SFM; PROVISIONING_PROFILE_SPECIFIER = "";