chore(parser): sync upstream parser updates

This commit is contained in:
github-actions[bot]
2026-05-21 02:19:51 +00:00
parent 8507b2f164
commit ecdd3b22c9
4 changed files with 77 additions and 6 deletions

View File

@@ -1 +1,20 @@
[] [
{
"sha": "ca209069bef6aa192ea4c6d63acc8fcc2125ad03",
"subject": "Update subparser.cpp",
"time": "2026-05-21T02:19:51+00:00",
"paths": [
"src/parser/subparser.cpp"
],
"copilot_reason": "Single-line parser tweak (case-insensitive regex for wssettings). No generator or bridge changes."
},
{
"sha": "79369b0e7617e24366b57cbfb0402e6293d04fb4",
"subject": "Update subparser.cpp",
"time": "2026-05-21T02:19:51+00:00",
"paths": [
"src/parser/subparser.cpp"
],
"copilot_reason": "Small parser-only adjustments to plugin option handling; backward-compatible parsing changes."
}
]

View File

@@ -1 +1 @@
add52ec9cb86da1a1276b74b75e2de667fe3c31c 633ecd5a3b33cf288658f0910fb2cc5faabd351c

View File

@@ -1 +1,53 @@
[] [
{
"sha": "c6b9661088941e56cd3def92f579add450276626",
"subject": "add vless encryption field support.(#59) fix AnyTLS and TUIC IPV6 filed parse and some AnyTLS.(#58) fix macos arm build.",
"time": "2026-05-21T02:19:51+00:00",
"reason": "Adds VLESS encryption and AnyTLS/TUIC parsing fixes while also changing generator/export code — requires coordinated exporter updates.",
"copilot_decision": {
"sha": "c6b9661088941e56cd3def92f579add450276626",
"decision": "needs_output_adapter",
"risk": "medium",
"reason": "Adds VLESS encryption and AnyTLS/TUIC parsing fixes while also changing generator/export code — requires coordinated exporter updates.",
"required_tests": [
"explodeStdVless_encryption_field",
"explodeSingbox_vless_encryption_capture",
"singbox_export_roundtrip_with_encryption"
]
}
},
{
"sha": "bca37c74367792077d35a3260cb65bd0e75ae8e2",
"subject": "Enhance proxy configuration to support the WebSocket transport protocol and custom headers.",
"time": "2026-05-21T02:19:51+00:00",
"reason": "Introduces WebSocket host/path/header parsing and generator ws-opts mapping; parser and exporter must be applied together.",
"copilot_decision": {
"sha": "bca37c74367792077d35a3260cb65bd0e75ae8e2",
"decision": "needs_output_adapter",
"risk": "medium",
"reason": "Introduces WebSocket host/path/header parsing and generator ws-opts mapping; parser and exporter must be applied together.",
"required_tests": [
"explodeTrojan_ws_host_fallback",
"proxyToClash_ws_opts_generation",
"clash_ws_roundtrip_headers"
]
}
},
{
"sha": "877a1291a0b618ad52f98ea1ffaddb5d17c1c22f",
"subject": "keep dialer-proxy when converting Clash subscriptions",
"time": "2026-05-21T02:19:51+00:00",
"reason": "Propagates dialer/underlying_proxy across many proxy types and updates generator; application requires exporter changes to preserve detour/dialer-proxy.",
"copilot_decision": {
"sha": "877a1291a0b618ad52f98ea1ffaddb5d17c1c22f",
"decision": "needs_output_adapter",
"risk": "medium",
"reason": "Propagates dialer/underlying_proxy across many proxy types and updates generator; application requires exporter changes to preserve detour/dialer-proxy.",
"required_tests": [
"explodeClash_underlying_proxy_propagation",
"proxy_export_preserves_dialer_proxy",
"clash_subscription_conversion_dialer_proxy"
]
}
}
]

View File

@@ -399,7 +399,7 @@ void explodeVmessConf(std::string content, std::vector<Proxy> &nodes) {
std::string streamset = "streamSettings", tcpset = "tcpSettings", wsset = "wsSettings"; std::string streamset = "streamSettings", tcpset = "tcpSettings", wsset = "wsSettings";
regGetMatch(content, "((?i)streamsettings)", 2, 0, &streamset); regGetMatch(content, "((?i)streamsettings)", 2, 0, &streamset);
regGetMatch(content, "((?i)tcpsettings)", 2, 0, &tcpset); regGetMatch(content, "((?i)tcpsettings)", 2, 0, &tcpset);
regGetMatch(content, "((?1)wssettings)", 2, 0, &wsset); regGetMatch(content, "((?i)wssettings)", 2, 0, &wsset);
json.Parse(content.data()); json.Parse(content.data());
if (json.HasParseError() || !json.IsObject()) if (json.HasParseError() || !json.IsObject())
@@ -1286,7 +1286,7 @@ void explodeClash(Node yamlnode, std::vector<Proxy> &nodes) {
singleproxy["plugin-opts"]["host"] >>= pluginopts_host; singleproxy["plugin-opts"]["host"] >>= pluginopts_host;
tls = safe_as<bool>(singleproxy["plugin-opts"]["tls"]) ? "tls;" : ""; tls = safe_as<bool>(singleproxy["plugin-opts"]["tls"]) ? "tls;" : "";
singleproxy["plugin-opts"]["path"] >>= path; singleproxy["plugin-opts"]["path"] >>= path;
pluginopts_mux = safe_as<bool>(singleproxy["plugin-opts"]["mux"]) ? "mux=4;" : ""; pluginopts_mux = safe_as<bool>(singleproxy["plugin-opts"]["mux"]) ? "4" : "";
} }
break; break;
default: default:
@@ -1306,7 +1306,7 @@ void explodeClash(Node yamlnode, std::vector<Proxy> &nodes) {
pluginopts += pluginopts_host.empty() ? "" : ";obfs-host=" + pluginopts_host; pluginopts += pluginopts_host.empty() ? "" : ";obfs-host=" + pluginopts_host;
break; break;
case "v2ray-plugin"_hash: case "v2ray-plugin"_hash:
pluginopts = "mode=" + pluginopts_mode + ";" + tls + pluginopts_mux; pluginopts = "mode=" + pluginopts_mode + ";" + tls;
if (!pluginopts_host.empty()) if (!pluginopts_host.empty())
pluginopts += "host=" + pluginopts_host + ";"; pluginopts += "host=" + pluginopts_host + ";";
if (!path.empty()) if (!path.empty())