improve default config, inspired by v2rayn

This commit is contained in:
yanue 2020-02-03 23:10:11 +08:00
parent d59d223c51
commit 3085f8088e
4 changed files with 49 additions and 48 deletions

View File

@ -11,47 +11,47 @@ import SwiftyJSON
import JavaScriptCore
let jsSourceFormatConfig =
"""
/**
* V2ray Config Format
* @return {string}
*/
var V2rayConfigFormat = function (encodeStr) {
var deStr = decodeURIComponent(encodeStr);
if (!deStr) {
return "error: cannot decode uri"
}
try {
var obj = JSON.parse(deStr);
if (!obj) {
return "error: cannot parse json"
"""
/**
* V2ray Config Format
* @return {string}
*/
var V2rayConfigFormat = function (encodeStr) {
var deStr = decodeURIComponent(encodeStr);
if (!deStr) {
return "error: cannot decode uri"
}
var v2rayConfig = {};
// ordered keys
v2rayConfig["log"] = obj.log;
v2rayConfig["inbounds"] = obj.inbounds;
v2rayConfig["inbound"] = obj.inbound;
v2rayConfig["inboundDetour"] = obj.inboundDetour;
v2rayConfig["outbounds"] = obj.outbounds;
v2rayConfig["outbound"] = obj.outbound;
v2rayConfig["outboundDetour"] = obj.outboundDetour;
v2rayConfig["api"] = obj.api;
v2rayConfig["dns"] = obj.dns;
v2rayConfig["stats"] = obj.stats;
v2rayConfig["routing"] = obj.routing;
v2rayConfig["policy"] = obj.policy;
v2rayConfig["reverse"] = obj.reverse;
v2rayConfig["transport"] = obj.transport;
return JSON.stringify(v2rayConfig, null, 2);
} catch (e) {
console.log("error", e);
return "error: " + e.toString()
}
};
"""
try {
var obj = JSON.parse(deStr);
if (!obj) {
return "error: cannot parse json"
}
var v2rayConfig = {};
// ordered keys
v2rayConfig["log"] = obj.log;
v2rayConfig["inbounds"] = obj.inbounds;
v2rayConfig["inbound"] = obj.inbound;
v2rayConfig["inboundDetour"] = obj.inboundDetour;
v2rayConfig["outbounds"] = obj.outbounds;
v2rayConfig["outbound"] = obj.outbound;
v2rayConfig["outboundDetour"] = obj.outboundDetour;
v2rayConfig["api"] = obj.api;
v2rayConfig["dns"] = obj.dns;
v2rayConfig["stats"] = obj.stats;
v2rayConfig["routing"] = obj.routing;
v2rayConfig["policy"] = obj.policy;
v2rayConfig["reverse"] = obj.reverse;
v2rayConfig["transport"] = obj.transport;
return JSON.stringify(v2rayConfig, null, 2);
} catch (e) {
console.log("error", e);
return "error: " + e.toString()
}
};
"""
class V2rayConfig: NSObject {
var v2ray: V2rayStruct = V2rayStruct()
@ -160,7 +160,9 @@ class V2rayConfig: NSObject {
func combineManualData() {
// base
self.v2ray.log.loglevel = V2rayLog.logLevel(rawValue: UserDefaults.get(forKey: .v2rayLogLevel) ?? "info") ?? V2rayLog.logLevel.info
self.v2ray.dns.servers = self.dns.components(separatedBy: ",")
if self.dns.count > 0 {
self.v2ray.dns.servers = self.dns.components(separatedBy: ",")
}
// ------------------------------------- inbound start ---------------------------------------------
var inHttp = V2rayInbound()
inHttp.port = self.httpPort
@ -614,9 +616,9 @@ class V2rayConfig: NSObject {
var routing = V2rayRouting()
routing.settings.rules = []
if jsonParams["strategy"].stringValue.count > 0 {
routing.strategy = jsonParams["strategy"].stringValue;
}
// if jsonParams["strategy"].stringValue.count > 0 {
// routing.strategy = jsonParams["strategy"].stringValue;
// }
if jsonParams["settings"].exists() {

View File

@ -1,4 +1,4 @@
var str = '{"routing":{"strategy":"rules","settings":{"domainStrategy":"IPIfNonMatch","rules":[{"outboundTag":"direct","type":"field","ip":["geoip:cn","geoip:private"],"domain":["geosite:cn","geosite:speedtest"]}]}},"inbound":{"listen":"127.0.0.1","protocol":"http","settings":null,"tag":"","port":"1088"},"outbound":{"tag":"agentout","protocol":"vmess","settings":{"vnext":[{"address":"ssl.miwukeji.net","users":[{"id":"29f1ae2e-e29d-d804-7bcd-e01b5dfcf26a","alterId":64,"level":0,"security":""}],"port":"443"}]}},"dns":{"servers":["8.8.8.8","1.1.1.1","119.29.29.29","114.114.114.114"]},"log":{"error":"","loglevel":"info","access":""},"transport":{}}'
var str = '{"routing":{"settings":{"domainStrategy":"IPIfNonMatch","rules":[{"outboundTag":"direct","type":"field","ip":["geoip:cn","geoip:private"],"domain":["geosite:cn","geosite:speedtest"]}]}},"inbound":{"listen":"127.0.0.1","protocol":"http","settings":null,"tag":"","port":"1088"},"outbound":{"tag":"agentout","protocol":"vmess","settings":{"vnext":[{"address":"ssl.miwukeji.net","users":[{"id":"29f1ae2e-e29d-d804-7bcd-e01b5dfcf26a","alterId":64,"level":0,"security":""}],"port":"443"}]}},"dns":{"servers":["8.8.8.8","1.1.1.1","119.29.29.29","114.114.114.114"]},"log":{"error":"","loglevel":"info","access":""},"transport":{}}'
/**
* V2ray Config Format

View File

@ -54,7 +54,7 @@ struct V2rayApi: Codable {
}
struct V2rayDns: Codable {
var servers: [String] = ["1.1.1.1", "8.8.8.8", "8.8.4.4", "119.29.29.29", "114.114.114.114", "223.5.5.5", "223.6.6.6"]
var servers: [String]?
}
struct V2rayStats: Codable {
@ -62,7 +62,7 @@ struct V2rayStats: Codable {
}
struct V2rayRouting: Codable {
var strategy: String = "rules"
// var strategy: String = "rules"
var settings: V2rayRoutingSetting = V2rayRoutingSetting()
}
@ -74,7 +74,7 @@ struct V2rayRoutingSetting: Codable {
}
var domainStrategy: domainStrategy = .AsIs
var rules: [V2rayRoutingSettingRule] = [V2rayRoutingSettingRule()]
var rules: [V2rayRoutingSettingRule] = []
}
struct V2rayRoutingSettingRule: Codable {

View File

@ -87,7 +87,6 @@ let jsonTxt = """
}
],
"routing": {
"strategy": "rules",
"settings": {
"domainStrategy": "IPIfNonMatch",
"rules": [