Added support for Vmess AEAD (including Loon/QX/Surge), closes 70

This commit is contained in:
Peng-YM 2022-03-11 22:00:41 +08:00
parent a981763982
commit 265a88fc5f
3 changed files with 39 additions and 9 deletions

View File

@ -2492,10 +2492,14 @@ var ProxyUtils = (function () {
}`; }`;
} }
} }
return `vmess=${proxy.server}:${proxy.port},method=${proxy.cipher === "auto" ? "none" : proxy.cipher let result = `vmess=${proxy.server}:${proxy.port},method=${proxy.cipher === "auto" ? "none" : proxy.cipher
},password=${proxy.uuid}${obfs_opts}${proxy.tfo ? ",fast-open=true" : ",fast-open=false" },password=${proxy.uuid}${obfs_opts}${proxy.tfo ? ",fast-open=true" : ",fast-open=false"
}${proxy.udp ? ",udp-relay=true" : ",udp-relay=false"},tag=${proxy.name }${proxy.udp ? ",udp-relay=true" : ",udp-relay=false"}`;
}`; if (typeof proxy['vmess-aead'] !== "undefined") {
result += `,aead=${proxy['vmess-aead']}`;
}
result += `,tag=${proxy.name}`;
return result;
case "trojan": case "trojan":
return `trojan=${proxy.server}:${proxy.port},password=${proxy.password return `trojan=${proxy.server}:${proxy.port},password=${proxy.password
}${proxy.sni ? ",tls-host=" + proxy.sni : "" }${proxy.sni ? ",tls-host=" + proxy.sni : ""
@ -2563,8 +2567,12 @@ var ProxyUtils = (function () {
obfs_opts += `${proxy.sni ? ",tls-name:" + proxy.sni : "" obfs_opts += `${proxy.sni ? ",tls-name:" + proxy.sni : ""
},skip-cert-verify:${proxy["skip-cert-verify"] || "false"}`; },skip-cert-verify:${proxy["skip-cert-verify"] || "false"}`;
} }
return `${proxy.name}=vmess,${proxy.server},${proxy.port},${proxy.cipher === "auto" ? "none" : proxy.cipher let result = `${proxy.name}=vmess,${proxy.server},${proxy.port},${proxy.cipher === "auto" ? "none" : proxy.cipher
},"${proxy.uuid}",over-tls:${proxy.tls || "false"}${obfs_opts}`; },"${proxy.uuid}",over-tls:${proxy.tls || "false"}${obfs_opts}`;
if (typeof proxy['vmess-aead'] !== "undefined") {
result += `,vmess-aead=${proxy['vmess-aead']}`;
}
return result;
case "trojan": case "trojan":
return `${proxy.name}=trojan,${proxy.server},${proxy.port},"${proxy.password return `${proxy.name}=trojan,${proxy.server},${proxy.port},"${proxy.password
}"${proxy.sni ? ",tls-name:" + proxy.sni : ""},skip-cert-verify:${proxy["skip-cert-verify"] || "false" }"${proxy.sni ? ",tls-name:" + proxy.sni : ""},skip-cert-verify:${proxy["skip-cert-verify"] || "false"
@ -2615,6 +2623,9 @@ var ProxyUtils = (function () {
result = `${proxy.name}=vmess,${proxy.server},${proxy.port result = `${proxy.name}=vmess,${proxy.server},${proxy.port
},username=${proxy.uuid},tls=${proxy.tls || "false"},tfo=${proxy.tfo || "false" },username=${proxy.uuid},tls=${proxy.tls || "false"},tfo=${proxy.tfo || "false"
}`; }`;
if (typeof proxy['vmess-aead'] !== "undefined") {
result += `,vmess-aead=${proxy['vmess-aead']}`;
}
if (proxy.network === "ws") { if (proxy.network === "ws") {
const path = proxy["ws-path"] || "/"; const path = proxy["ws-path"] || "/";
const wsHeaders = Object.entries(proxy["ws-headers"]).map( const wsHeaders = Object.entries(proxy["ws-headers"]).map(

File diff suppressed because one or more lines are too long

View File

@ -185,6 +185,24 @@
</v-col> </v-col>
</v-row> </v-row>
</v-radio-group> </v-radio-group>
<v-radio-group
v-model="options['vmess-aead']"
class="mt-0 mb-0"
dense
>
Vmess AEAD
<v-row>
<v-col>
<v-radio label="默认" value="DEFAULT"/>
</v-col>
<v-col>
<v-radio label="强制开启" value="FORCE_OPEN"/>
</v-col>
<v-col>
<v-radio label="强制关闭" value="FORCE_CLOSE"/>
</v-col>
</v-row>
</v-radio-group>
</v-item-group> </v-item-group>
</v-form> </v-form>
</v-card> </v-card>
@ -369,7 +387,8 @@ export default {
udp: "DEFAULT", udp: "DEFAULT",
"skip-cert-verify": "DEFAULT", "skip-cert-verify": "DEFAULT",
tfo: "DEFAULT", tfo: "DEFAULT",
"surge-hybrid": "DEFAULT" "surge-hybrid": "DEFAULT",
"vmess-aead": "DEFAULT",
}, },
process: [], process: [],
selected: [] selected: []
@ -437,8 +456,8 @@ export default {
type: "Useless Filter" type: "Useless Filter"
}); });
} }
// udp, tfo, scert // udp, tfo, scert, surge-hybrid, vmess-aead
for (const opt of ['udp', 'tfo', 'skip-cert-verify', 'surge-hybrid']) { for (const opt of ['udp', 'tfo', 'skip-cert-verify', 'surge-hybrid', 'vmess-aead']) {
if (this.options[opt] !== 'DEFAULT') { if (this.options[opt] !== 'DEFAULT') {
output.process.push({ output.process.push({
type: "Set Property Operator", type: "Set Property Operator",