Fix libbox connection

This commit is contained in:
世界
2025-11-26 22:25:48 +08:00
parent f5a02d9da0
commit ac620cfd3a
3 changed files with 28 additions and 10 deletions
+5
View File
@@ -58,6 +58,11 @@ public enum SharedPreferences {
public static let systemProxyEnabled = Preference<Bool>("system_proxy_enabled", defaultValue: true)
#if os(tvOS)
public static let commandServerPort = Preference<Int32>("tv_command_server_port", defaultValue: 0)
public static let commandServerSecret = Preference<String>("tv_command_server_secret", defaultValue: "")
#endif
// Profile Override
public static let excludeDefaultRoute = Preference<Bool>("exclude_default_route", defaultValue: false)
+6 -10
View File
@@ -19,6 +19,12 @@ open class ExtensionProvider: NEPacketTunnelProvider {
options.workingPath = FilePath.workingDirectory.relativePath
options.tempPath = FilePath.cacheDirectory.relativePath
options.logMaxLines = 3000
#if os(tvOS)
options.commandServerListenPort = await SharedPreferences.commandServerPort.get()
options.commandServerSecret = await SharedPreferences.commandServerSecret.get()
#endif
var setupError: NSError?
LibboxSetup(options, &setupError)
if let setupError {
@@ -61,16 +67,6 @@ open class ExtensionProvider: NEPacketTunnelProvider {
}
}
public func writeFatalError(_ message: String) {
#if DEBUG
NSLog(message)
#endif
if let commandServer {
commandServer.setError(message)
}
cancelTunnelWithError(nil)
}
private func startService() async throws {
let profile: Profile?
do {
+17
View File
@@ -11,6 +11,23 @@ class ApplicationDelegate: NSObject, UIApplicationDelegate {
options.basePath = FilePath.sharedDirectory.relativePath
options.workingPath = FilePath.workingDirectory.relativePath
options.tempPath = FilePath.cacheDirectory.relativePath
var port = SharedPreferences.commandServerPort.getBlocking()
var secret = SharedPreferences.commandServerSecret.getBlocking()
if port == 0 || secret.isEmpty {
var error: NSError?
LibboxAvailablePort(7990, &port, &error)
if let error {
port = 7990
NSLog("Failed to get available port for control server: \(error.localizedDescription)")
}
secret = LibboxRandomHex(16)!.value
Task {
await SharedPreferences.commandServerPort.set(port)
await SharedPreferences.commandServerSecret.set(secret)
}
}
options.commandServerListenPort = port
options.commandServerSecret = secret
var error: NSError?
LibboxSetup(options, &error)
LibboxSetLocale(Locale.current.identifier)