Files
2024-09-03 22:52:04 +02:00

60 lines
1.7 KiB
Swift

//
// SingBox.swift
// SingBoxPacketTunnel
//
// Created by GFWFighter on 7/25/1402 AP.
//
import Foundation
class SingBox {
static func setupConfig(config: String, mtu: Int = 9000) -> String? {
guard
let config = config.data(using: .utf8),
var json = try? JSONSerialization
.jsonObject(
with: config,
options: [.mutableLeaves, .mutableContainers]
) as? [String:Any]
else {
return nil
}
/*json["log"] = [
"disabled": false,
"level": "info",
"output": "log",
"timestamp": true
] as [String:Any]
json["experimental"] = [
"clash_api": [
"external_controller": "127.0.0.1:10864"
]
]
json["inbounds"] = [
[
"type": "tun",
"inet4_address": "172.19.0.1/30",
"auto_route": true,
"mtu": mtu,
"sniff": true
] as [String:Any]
]
var routing = (json["route"] as? [String:Any]) ?? [
"rules": [Any](),
"auto_detect_interface": true,
"final": (json["inbounds"] as? [[String:Any]])?.first?["tag"] ?? "proxy"
]
routing["geoip"] = [
"path": FilePath.assetsDirectory.appendingPathComponent("geoip.db"),
]
routing["geosite"] = [
"path": FilePath.assetsDirectory.appendingPathComponent("geosite.db"),
]
json["route"] = routing*/
guard let data = try? JSONSerialization.data(withJSONObject: json) else {
return nil
}
return String(data: data, encoding: .utf8)
}
}