Fix libbox connection
This commit is contained in:
@@ -58,6 +58,11 @@ public enum SharedPreferences {
|
|||||||
|
|
||||||
public static let systemProxyEnabled = Preference<Bool>("system_proxy_enabled", defaultValue: true)
|
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
|
// Profile Override
|
||||||
|
|
||||||
public static let excludeDefaultRoute = Preference<Bool>("exclude_default_route", defaultValue: false)
|
public static let excludeDefaultRoute = Preference<Bool>("exclude_default_route", defaultValue: false)
|
||||||
|
|||||||
@@ -19,6 +19,12 @@ open class ExtensionProvider: NEPacketTunnelProvider {
|
|||||||
options.workingPath = FilePath.workingDirectory.relativePath
|
options.workingPath = FilePath.workingDirectory.relativePath
|
||||||
options.tempPath = FilePath.cacheDirectory.relativePath
|
options.tempPath = FilePath.cacheDirectory.relativePath
|
||||||
options.logMaxLines = 3000
|
options.logMaxLines = 3000
|
||||||
|
|
||||||
|
#if os(tvOS)
|
||||||
|
options.commandServerListenPort = await SharedPreferences.commandServerPort.get()
|
||||||
|
options.commandServerSecret = await SharedPreferences.commandServerSecret.get()
|
||||||
|
#endif
|
||||||
|
|
||||||
var setupError: NSError?
|
var setupError: NSError?
|
||||||
LibboxSetup(options, &setupError)
|
LibboxSetup(options, &setupError)
|
||||||
if let 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 {
|
private func startService() async throws {
|
||||||
let profile: Profile?
|
let profile: Profile?
|
||||||
do {
|
do {
|
||||||
|
|||||||
@@ -11,6 +11,23 @@ class ApplicationDelegate: NSObject, UIApplicationDelegate {
|
|||||||
options.basePath = FilePath.sharedDirectory.relativePath
|
options.basePath = FilePath.sharedDirectory.relativePath
|
||||||
options.workingPath = FilePath.workingDirectory.relativePath
|
options.workingPath = FilePath.workingDirectory.relativePath
|
||||||
options.tempPath = FilePath.cacheDirectory.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?
|
var error: NSError?
|
||||||
LibboxSetup(options, &error)
|
LibboxSetup(options, &error)
|
||||||
LibboxSetLocale(Locale.current.identifier)
|
LibboxSetLocale(Locale.current.identifier)
|
||||||
|
|||||||
Reference in New Issue
Block a user