Jelajahi Sumber

Merge pull request #316 from betaxab/p2

Utils: adjust QuantumultX & Surge & Surfboard
tokumeikoi 4 tahun lalu
induk
melakukan
2ee8a234a9
4 mengubah file dengan 62 tambahan dan 42 penghapusan
  1. 4 8
      app/Utils/Clash.php
  2. 9 7
      app/Utils/QuantumultX.php
  3. 8 11
      app/Utils/Surfboard.php
  4. 41 16
      app/Utils/Surge.php

+ 4 - 8
app/Utils/Clash.php

@@ -32,8 +32,8 @@ class Clash
         if ($server->tls) {
             $tlsSettings = json_decode($server->tlsSettings);
             $array['tls'] = true;
-            if (isset($tlsSettings->allowInsecure)) $array['skip-cert-verify'] = ($tlsSettings->allowInsecure ? true : false );
-            if (isset($tlsSettings->serverName)) $array['servername'] = $tlsSettings->serverName;
+            if (!empty($tlsSettings->allowInsecure)) $array['skip-cert-verify'] = ($tlsSettings->allowInsecure ? true : false );
+            if (!empty($tlsSettings->serverName)) $array['servername'] = $tlsSettings->serverName;
         }
         if ($server->network == 'ws') {
             $array['network'] = $server->network;
@@ -57,12 +57,8 @@ class Clash
         $array['port'] = $server->port;
         $array['password'] = $password;
         $array['udp'] = true;
-        $array['sni'] = $server->server_name;
-        if ($server->allow_insecure) {
-            $array['skip-cert-verify'] = true;
-        } else {
-            $array['skip-cert-verify'] = false;
-        }
+        if (!empty($server->server_name)) $array['sni'] = $server->server_name;
+        if (!empty($server->allow_insecure)) $array['skip-cert-verify'] = ($server->allow_insecure ? true : false );
         return $array;
     }
 }

+ 9 - 7
app/Utils/QuantumultX.php

@@ -11,8 +11,8 @@ class QuantumultX
             "shadowsocks={$server->host}:{$server->port}",
             "method={$server->cipher}",
             "password={$password}",
-            "fast-open=true",
-            "udp-relay=true",
+            'fast-open=true',
+            'udp-relay=true',
             "tag={$server->name}"
         ];
         $config = array_filter($config);
@@ -25,8 +25,10 @@ class QuantumultX
     {
         $config = [
             "vmess={$server->host}:{$server->port}",
-            "method=chacha20-poly1305",
+            'method=chacha20-poly1305',
             "password={$uuid}",
+            'fast-open=true',
+            'udp-relay=true',
             "tag={$server->name}"
         ];
         if ($server->network === 'tcp') {
@@ -37,7 +39,7 @@ class QuantumultX
                     // Tips: allowInsecure=false = tls-verification=true
                     array_push($config, $tlsSettings->allowInsecure ? 'tls-verification=false' : 'tls-verification=true');
                 }
-                if (isset($tlsSettings->serverName)) {
+                if (!empty($tlsSettings->serverName)) {
                     array_push($config, "obfs-host={$tlsSettings->serverName}");
                 }
             }
@@ -70,12 +72,12 @@ class QuantumultX
         $config = [
             "trojan={$server->host}:{$server->port}",
             "password={$password}",
-            "over-tls=true",
+            'over-tls=true',
             $server->server_name ? "tls-host={$server->server_name}" : "",
             // Tips: allowInsecure=false = tls-verification=true
             $server->allow_insecure ? 'tls-verification=false' : 'tls-verification=true',
-            "fast-open=false",
-            "udp-relay=false",
+            'fast-open=true',
+            'udp-relay=true',
             "tag={$server->name}"
         ];
         $config = array_filter($config);

+ 8 - 11
app/Utils/Surfboard.php

@@ -12,10 +12,10 @@ class Surfboard
             "{$server->host}",
             "{$server->port}",
             "{$server->cipher}",
-            "password={$password}",
-            "https://raw.githubusercontent.com/Hackl0us/proxy-tool-backup/master/SSEncrypt.module",
-            "tfo=true",
-            "udp-relay=true"
+            "{$password}",
+            'https://raw.githubusercontent.com/Hackl0us/proxy-tool-backup/master/SSEncrypt.module',
+            'tfo=true',
+            'udp-relay=true'
         ];
         $config = array_filter($config);
         $uri = implode(',', $config);
@@ -30,19 +30,16 @@ class Surfboard
             "{$server->host}",
             "{$server->port}",
             "username={$uuid}",
-            "tfo=true",
-            "udp-relay=false"
+            'tfo=true',
+            'udp-relay=true'
         ];
         if ($server->network === 'tcp') {
             if ($server->tls) {
                 $tlsSettings = json_decode($server->tlsSettings);
                 array_push($config, $server->tls ? 'tls=true' : 'tls=false');
-                if (isset($tlsSettings->allowInsecure)) {
+                if (!empty($tlsSettings->allowInsecure)) {
                     array_push($config, $tlsSettings->allowInsecure ? 'skip-cert-verify=true' : 'skip-cert-verify=false');
                 }
-                if (isset($tlsSettings->serverName)) {
-                    array_push($config, "obfs-host={$tlsSettings->serverName}");
-                }
             }
         }
 
@@ -51,7 +48,7 @@ class Surfboard
             if ($server->tls) {
                 $tlsSettings = json_decode($server->tlsSettings);
                 array_push($config, $server->tls ? 'tls=true' : 'tls=false');
-                if (isset($tlsSettings->allowInsecure)) {
+                if (!empty($tlsSettings->allowInsecure)) {
                     array_push($config, $tlsSettings->allowInsecure ? 'skip-cert-verify=true' : 'skip-cert-verify=false');
                 }
             }

+ 41 - 16
app/Utils/Surge.php

@@ -13,8 +13,8 @@ class Surge
             "{$server->port}",
             "encrypt-method={$server->cipher}",
             "password={$password}",
-            "tfo=true",
-            "udp-relay=true"
+            'tfo=true',
+            'udp-relay=true'
         ];
         $config = array_filter($config);
         $uri = implode(',', $config);
@@ -24,24 +24,46 @@ class Surge
 
     public static function buildVmess($uuid, $server)
     {
-        $proxies = $server->name . ' = vmess, ' . $server->host . ', ' . $server->port . ', username=' . $uuid . ', tfo=true';
-        if ($server->tls) {
-            $tlsSettings = json_decode($server->tlsSettings);
-            $proxies .= ', tls=' . ($server->tls ? "true" : "false");
-            if (isset($tlsSettings->allowInsecure)) {
-                $proxies .= ', skip-cert-verify=' . ($tlsSettings->allowInsecure ? "true" : "false");
+        $config = [
+            "{$server->name}=vmess",
+            "{$server->host}",
+            "{$server->port}",
+            "username={$uuid}",
+            'tfo=true',
+            'udp-relay=true'
+        ];
+        if ($server->network === 'tcp') {
+            if ($server->tls) {
+                $tlsSettings = json_decode($server->tlsSettings);
+                array_push($config, $server->tls ? 'tls=true' : 'tls=false');
+                if (!empty($tlsSettings->allowInsecure)) {
+                    array_push($config, $tlsSettings->allowInsecure ? 'skip-cert-verify=true' : 'skip-cert-verify=false');
+                }
+                if (!empty($tlsSettings->serverName)) {
+                    array_push($config, "sni={$tlsSettings->serverName}");
+                }
             }
         }
-        if ($server->network == 'ws') {
-            $proxies .= ', ws=true';
+
+        if ($server->network === 'ws') {
+            array_push($config, 'ws=true');
+            if ($server->tls) {
+                $tlsSettings = json_decode($server->tlsSettings);
+                array_push($config, $server->tls ? 'tls=true' : 'tls=false');
+                if (!empty($tlsSettings->allowInsecure)) {
+                    array_push($config, $tlsSettings->allowInsecure ? 'skip-cert-verify=true' : 'skip-cert-verify=false');
+                }
+            }
             if ($server->networkSettings) {
                 $wsSettings = json_decode($server->networkSettings);
-                if (isset($wsSettings->path)) $proxies .= ', ws-path=' . $wsSettings->path;
-                if (isset($wsSettings->headers->Host)) $proxies .= ', ws-headers=host:' . $wsSettings->headers->Host;
+                if (isset($wsSettings->path)) array_push($config, "ws-path={$wsSettings->path}");
+                if (isset($wsSettings->headers->Host)) array_push($config, "ws-headers=host:{$wsSettings->headers->Host}");
             }
         }
-        $proxies .= "\r\n";
-        return $proxies;
+
+        $uri = implode(',', $config);
+        $uri .= "\r\n";
+        return $uri;
     }
 
     public static function buildTrojan($password, $server)
@@ -51,10 +73,13 @@ class Surge
             "{$server->host}",
             "{$server->port}",
             "password={$password}",
-            $server->allow_insecure ? 'skip-cert-verify=true' : 'skip-cert-verify=false',
             $server->server_name ? "sni={$server->server_name}" : "",
-            "tfo=true"
+            'tfo=true',
+            'udp-relay=true'
         ];
+        if (!empty($server->allow_insecure)) {
+            array_push($config, $server->allow_insecure ? 'skip-cert-verify=true' : 'skip-cert-verify=false');
+        }
         $config = array_filter($config);
         $uri = implode(',', $config);
         $uri .= "\r\n";