Files
ClashX-Dashboard/ClashX Dashboard Kit/Sources/ClashX Dashboard Kit/ClashX Links/General/Managers/ConfigManager.swift
2023-05-31 23:56:25 +08:00

60 lines
1.6 KiB
Swift

//
// ConfigManager.swift
// ClashX
//
// Created by CYC on 2018/6/12.
// Copyright © 2018 yichengchen. All rights reserved.
//
import Cocoa
import Foundation
class ConfigManager {
static let shared = ConfigManager()
var apiPort = "9090"
var apiSecret: String = ""
var overrideApiURL: URL?
var overrideSecret: String?
var isRunning: Bool = false {
didSet {
NotificationCenter.default.post(.init(name: .init("ClashRunningStateChanged")))
}
}
var benchMarkUrl: String = UserDefaults.standard.string(forKey: "benchMarkUrl") ?? "http://cp.cloudflare.com/generate_204" {
didSet {
UserDefaults.standard.set(benchMarkUrl, forKey: "benchMarkUrl")
}
}
static var apiUrl: String {
if let override = shared.overrideApiURL {
return override.absoluteString
}
return "http://127.0.0.1:\(shared.apiPort)"
}
static var webSocketUrl: String {
if let override = shared.overrideApiURL, var comp = URLComponents(url: override, resolvingAgainstBaseURL: true) {
if comp.scheme == "https" {
comp.scheme = "wss"
} else {
comp.scheme = "ws"
}
return comp.url?.absoluteString ?? ""
}
return "ws://127.0.0.1:\(shared.apiPort)"
}
static var selectLoggingApiLevel: ClashLogLevel {
get {
return ClashLogLevel(rawValue: UserDefaults.standard.string(forKey: "selectLoggingApiLevel") ?? "") ?? .info
}
set {
UserDefaults.standard.set(newValue.rawValue, forKey: "selectLoggingApiLevel")
}
}
}