Procházet zdrojové kódy

QuantumultX: keep expected behavior for host

According to the documentation, quantumultx exposes one param for both sni and ws host. and sni priority is usually higher than ws host in other similar apps, we keep the behavior here.
ref: https://github.com/crossutility/Quantumult-X/blob/8b6d7d84fce4cf74c6936d075ff769486bd09077/sample.conf#L91
Julian Liu před 4 roky
rodič
revize
f036b46bf0
1 změnil soubory, kde provedl 12 přidání a 11 odebrání
  1. 12 11
      app/Utils/QuantumultX.php

+ 12 - 11
app/Utils/QuantumultX.php

@@ -33,31 +33,32 @@ class QuantumultX
         ];
 
         if ($server['tls']) {
-            if ($server['network'] === 'tcp') {
+            if ($server['network'] === 'tcp')
                 array_push($config, 'obfs=over-tls');
-            } else {
-                array_push($config, 'obfs=wss');
-            }
-        } else if ($server['network'] === 'ws') {
-            array_push($config, 'obfs=ws');
-        }
-
-        if ($server['tls']) {
             if ($server['tlsSettings']) {
                 $tlsSettings = json_decode($server['tlsSettings'], true);
                 if (isset($tlsSettings['allowInsecure']) && !empty($tlsSettings['allowInsecure']))
                     array_push($config, 'tls-verification=' . ($tlsSettings['allowInsecure'] ? 'false' : 'true'));
+                if (isset($tlsSettings['serverName']) && !empty($tlsSettings['serverName']))
+                    $host = $tlsSettings['serverName'];
             }
         }
         if ($server['network'] === 'ws') {
+            if ($server['tls'])
+                array_push($config, 'obfs=wss');
+            else
+                array_push($config, 'obfs=ws');
             if ($server['networkSettings']) {
                 $wsSettings = json_decode($server['networkSettings'], true);
                 if (isset($wsSettings['path']) && !empty($wsSettings['path']))
                     array_push($config, "obfs-uri={$wsSettings['path']}");
-                if (isset($wsSettings['headers']['Host']) && !empty($wsSettings['headers']['Host']))
-                    array_push($config, "obfs-host={$wsSettings['headers']['Host']}");
+                if (isset($wsSettings['headers']['Host']) && !empty($wsSettings['headers']['Host']) && !isset($host))
+                    $host = $wsSettings['headers']['Host'];
             }
         }
+        if (isset($host)) {
+            array_push($config, "obfs-host={$host}");
+        }
 
         $uri = implode(',', $config);
         $uri .= "\r\n";