Răsfoiți Sursa

quantumultx: fix wss

Tokumeikoi 4 ani în urmă
părinte
comite
1b4d03044d
1 a modificat fișierele cu 30 adăugiri și 13 ștergeri
  1. 30 13
      app/Utils/QuantumultX.php

+ 30 - 13
app/Utils/QuantumultX.php

@@ -7,26 +7,43 @@ class QuantumultX
 {
     public static function buildVmess($uuid, $server)
     {
-        $uri = "vmess=" . $server->host . ":" . $server->port . ", method=none, password=" . $uuid . ", fast-open=false, udp-relay=false, tag=" . $server->name;
-        if ($server->tls) {
-            $tlsSettings = json_decode($server->tlsSettings);
-            if ($server->network === 'tcp') $uri .= ', obfs=over-tls';
-            if (isset($tlsSettings->allowInsecure)) {
-                // Default: tls-verification=true
-                $uri .= ', tls-verification=' . ($tlsSettings->allowInsecure ? "false" : "true");
-            }
-            if (isset($tlsSettings->serverName)) {
-                $uri .= ', obfs-host=' . $tlsSettings->serverName;
+        $config = [
+            "vmess={$server->host}:{$server->port}",
+            "method=chacha20-poly1305",
+            "password={$uuid}",
+            "tag={$server->name}"
+        ];
+        if ($server->network === 'tcp') {
+            if ($server->tls) {
+                $tlsSettings = json_decode($server->tlsSettings);
+                array_push($config, 'obfs=over-tls');
+                if (isset($tlsSettings->allowInsecure)) {
+                    array_push($config, $server->allow_insecure ? 'tls-verification=true' : 'tls-verification=false');
+                }
+                if (isset($tlsSettings->serverName)) {
+                    array_push($config, "obfs-host={$tlsSettings->serverName}");
+                }
             }
         }
+
         if ($server->network === 'ws') {
-            $uri .= ', obfs=' . ($server->tls ? 'wss' : 'ws');
+            if ($server->tls) {
+                $tlsSettings = json_decode($server->tlsSettings);
+                array_push($config, 'obfs=wss');
+                if (isset($tlsSettings->allowInsecure)) {
+                    array_push($config, $server->allow_insecure ? 'tls-verification=true' : 'tls-verification=false');
+                }
+            } else {
+                array_push($config, 'obfs=ws');
+            }
             if ($server->networkSettings) {
                 $wsSettings = json_decode($server->networkSettings);
-                if (isset($wsSettings->path)) $uri .= ', obfs-uri=' . $wsSettings->path;
-                if (isset($wsSettings->headers->Host)) $uri .= ', obfs-host=' . $wsSettings->headers->Host;
+                if (isset($wsSettings->path)) array_push($config, "obfs-uri={$wsSettings->path}");
+                if (isset($wsSettings->headers->Host)) array_push($config, "obfs-host={$wsSettings->headers->Host}");
             }
         }
+
+        $uri = implode($config, ',');
         $uri .= "\r\n";
         return $uri;
     }