| 1627 | |
| 1628 | //quantumult 格式的 vmess URI 转换 |
| 1629 | function VQ2QX(subs, Pudp, Ptfo, Pcert0, PTls13) { |
| 1630 | var server = String(Base64.decode(subs.replace("vmess://", "").trim()).split("\u0000")[0]) |
| 1631 | var node = "" |
| 1632 | var ip = "vmess=" + server.split(",")[1].trim() + ":" + server.split(",")[2].trim() + ", " + "method=aes-128-gcm, " + "password=" + server.split(",")[4].split("\"")[1] + ", " |
| 1633 | var tag = "tag=" + server.split("=")[0] |
| 1634 | var tfo = subs.indexOf("tfo=1") != -1 ? "fast-open=true, " : "fast-open=false, " |
| 1635 | var udp = Pudp == 1 ? "udp-relay=false, " : "udp-relay=false, "; // 不支持 vmess 类型 udp |
| 1636 | node = ip + tfo + udp |
| 1637 | var obfs = "" |
| 1638 | if (server.indexOf("obfs=") == -1) { // 非 ws/http 类型 |
| 1639 | obfs = server.indexOf("over-tls=true") != -1 ? "obfs=over-tls, " : "" //over-tls |
| 1640 | var host = server.indexOf("tls-host") != -1 ? "obfs-host=" + server.split("tls-host=")[1].split(",")[0] + ", " : "" |
| 1641 | obfs = obfs + host |
| 1642 | } else if (server.indexOf("obfs=ws") != -1) { |
| 1643 | obfs = server.indexOf("over-tls=true") != -1 ? "obfs=wss, " : "obfs=ws, " //ws,wss 类型 |
| 1644 | var uri = server.indexOf("obfs-path=") != -1 ? "obfs-uri=" + server.split("obfs-path=")[1].split("\"")[1] + ", " : "obfs-uri=/, " |
| 1645 | obfs = obfs + uri |
| 1646 | var host = server.indexOf("obfs-header=") != -1 ? "obfs-host=" + server.split("obfs-header=\"Host:")[1].split("[")[0].trim() + ", " : "" |
| 1647 | obfs = obfs + host |
| 1648 | } else if (server.indexOf("obfs=http") != -1) { |
| 1649 | obfs = "obfs=http, " |
| 1650 | var uri = server.indexOf("obfs-path=") != -1 ? "obfs-uri=" + server.split("obfs-path=")[1].split("\"")[1] + ", " : "obfs-uri=/, " |
| 1651 | obfs = obfs + uri |
| 1652 | var host = server.indexOf("obfs-header=") != -1 ? "obfs-host=" + server.split("obfs-header=\"Host:")[1].split("[")[0].trim() + ", " : "" |
| 1653 | obfs = obfs + host |
| 1654 | } |
| 1655 | if (obfs.indexOf("obfs=over-tls") != -1 || obfs.indexOf("obfs=wss") != -1) { |
| 1656 | var cert = Pcert0 != 0 || subs.indexOf("allowInsecure=1") != -1 ? "tls-verification=false, " : "tls-verification=true, " |
| 1657 | var tls13 = PTls13 == 1 ? "tls13=true, " : "" |
| 1658 | obfs = obfs + cert + tls13 |
| 1659 | } |
| 1660 | node = node + obfs + tag |
| 1661 | return node |
| 1662 | } |
| 1663 | |
| 1664 | |
| 1665 | //Shadowrocket 格式的 vmess URI 转换 |