frainzy1477 %!s(int64=4) %!d(string=hai) anos
pai
achega
4bc7f26d2b

+ 10 - 0
resources/views/material/user/index.tpl

@@ -721,6 +721,16 @@ table tr td:first-child {
                                                         使用方式:
                                                         <a class="copy-text btn-dl" data-clipboard-text="{$subInfo['v2ray']}"><i class="material-icons icon-sm">send</i> 拷贝订阅链接</a>
                                                     </p>
+                                                <hr/>
+												<p><span class="icon icon-lg text-white">filter_3</span> AxXray - [ SS/SSR/VMess/Trojan ]:</p>
+                                                    <p>
+                                                        应用下载:
+                                                        <a class="btn-dl" href="https://github.com/XTLS/AnXray/releases" target="_blank"><i class="material-icons icon-sm">cloud_download</i> 官方下载</a>
+                                                    </p>
+                                                    <p>
+                                                        使用方式:
+                                                        <a class="copy-text btn-dl" data-clipboard-text="{$subInfo['anxray']}"><i class="material-icons icon-sm">send</i> 拷贝订阅链接</a>
+                                                    </p>
                                                 <hr/>
                                                 <p><span class="icon icon-lg text-white">filter_4</span> Surfboard - [ SS/VMess ]:</p>
                                                     <p>

+ 11 - 11
src/Controllers/LinkController.php

@@ -278,7 +278,7 @@ class LinkController extends BaseController
                 ];
                 break;
 			case 'anxray':
-				$return = [
+                $return = [
                     'filename' => 'AnXray',
                     'suffix'   => 'txt',
                     'class'    => 'AnXray'
@@ -435,7 +435,7 @@ class LinkController extends BaseController
             'trojan'          => '?sub=4',
             // apps
             'ssa'             => '?list=ssa',
-			'anxray'		  => '?anxray=1',
+            'anxray'		  => '?anxray=1',
             'clash'           => '?clash=1',
             'clash_provider'  => '?list=clash',
             'surge'           => '?surge=' . $int,
@@ -474,8 +474,8 @@ class LinkController extends BaseController
             case 'ssa':
                 $return = AppURI::getSSJSON($item);
                 break;
-			case 'anxray':
-				$return = AppURI::getAnXrayURI($item);
+            case 'anxray':
+                $return = AppURI::getAnXrayURI($item);
                 break;	
             case 'surge':
                 $return = AppURI::getSurgeURI($item, 3);
@@ -810,17 +810,17 @@ class LinkController extends BaseController
         return ConfGenerate::getClashConfs($user, $Proxys, $_ENV['Clash_Profiles'][$Profiles]);
     }
 
-	public static function getAnXray($user, $anxray, $opts, $Rule)
+    public static function getAnXray($user, $anxray, $opts, $Rule)
     {
         $subInfo = self::getSubinfo($user, $anxray);
-		$All_Proxy  = '';
+        $All_Proxy  = '';
         $userapiUrl = $subInfo['anxray'];	
         $items = URL::getNew_AllItems($user, $Rule); 
-		foreach ($items as $item) {
-				$out = AppURI::getAnXrayURI($item);	
-				if ($out !== null) {
-					$All_Proxy .= $out . PHP_EOL;
-				}
+        foreach ($items as $item) {
+                $out = AppURI::getAnXrayURI($item);	
+                if ($out !== null) {
+                  $All_Proxy .= $out . PHP_EOL;
+                }
         }
         return base64_encode($All_Proxy);
     }

+ 9 - 9
src/Models/Node.php

@@ -450,16 +450,16 @@ class Node extends Model
         $item['passwd']   = $user->uuid;
         $item['host']     = $item['address'];
         $item['net']	  = (isset($opt['grpc']) ? "grpc" :'');
-        $item['serviceName'] = (isset($opt['serviceName']) ? $opt['serviceName'] :'');
-		$item['flow']	  = (isset($opt['flow']) ? $opt['flow'] :'');
-		$xtls			= (isset($opt['enable_xtls']) ? $opt['enable_xtls'] :'');
-		if($xtls == 'true'){
-			$item['tls'] =  'xtls';
-		}else {
-			$item['tls'] =  'tls';
-		}	
+        $item['servicename'] = (isset($opt['serviceName']) ? $opt['serviceName'] :'');
+        $item['flow']	  = (isset($opt['flow']) ? $opt['flow'] :'');
+        $xtls			= (isset($opt['enable_xtls']) ? $opt['enable_xtls'] :'');
+        if($xtls == 'true'){
+          $item['tls'] =  'xtls';
+        }else {
+          $item['tls'] =  'tls';
+        }	
         if (isset($opt['host'])) {
-            $item['host'] = $opt['host'];
+          $item['host'] = $opt['host'];
         }
         return $item;
     }

+ 47 - 40
src/Utils/AppURI.php

@@ -66,7 +66,7 @@ class AppURI
                     'net'   => $item['net'],
                     'type'  => $item['net'] =='grpc' ?  "multi" : $item['headerType'],
                     'host'  => $item['net'] =='grpc' ? '' : $item['host'],
-                    'path'  => $item['net'] =='grpc' ?  $item['serviceName'] : $item['path'],
+                    'path'  => $item['net'] =='grpc' ?  $item['servicename'] : $item['path'],
                     'tls'   => $item['tls'],
                     'sni'	=> $item['sni']
                 ];
@@ -358,11 +358,11 @@ class AppURI
                         $return['skip-cert-verify'] = true;
                     }
                 }
-				if ($item['net'] == 'grpc') {
-					$return['network'] = 'grpc';
-					$return['servername'] = ($item['host'] != '' ? $item['host'] : $item['add']);
-					$return['grpc-opts']['grpc-service-name'] = ($item['serviceName'] != '' ? $item['serviceName'] : "");
-				}				
+                if ($item['net'] == 'grpc') {
+                    $return['network'] = 'grpc';
+                    $return['servername'] = ($item['host'] != '' ? $item['host'] : $item['add']);
+                    $return['grpc-opts']['grpc-service-name'] = ($item['servicename'] != '' ? $item['servicename'] : "");
+                }				
                 break;
             case 'trojan':
                 $return = [
@@ -373,10 +373,10 @@ class AppURI
                     'password'    => $item['passwd'],
                     'sni'         => $item['host']
                 ];
-				if ($item['net'] == 'grpc') {
-					$return['network'] = 'grpc';
-					$return['grpc-opts']['grpc-service-name'] = ($item['serviceName'] != '' ? $item['serviceName'] : "");
-				}				
+                if ($item['net'] == 'grpc') {
+                    $return['network'] = 'grpc';
+                    $return['grpc-opts']['grpc-service-name'] = ($item['servicename'] != '' ? $item['servicename'] : "");
+                }				
                 break;
         }
         return $return;
@@ -547,10 +547,10 @@ class AppURI
             case 'trojan':
                 $return  = ('trojan://' . $item['passwd'] . '@' . $item['address'] . ':' . $item['port']);
                 $return .= ('?peer=' . $item['host'] . '&sni=' . $item['host']);
-				if($item['tls'] == "xtls"){
-					$return.=("&security=".$item['tls']."&flow=".$item['flow']);
-				}
-				$return.=('#' .  rawurlencode($item['remark']));
+                if($item['tls'] == "xtls"){
+                   $return.=("&security=".$item['tls']."&flow=".$item['flow']);
+                }
+                $return.=('#' .  rawurlencode($item['remark']));
                 break;
         }
         return $return;
@@ -560,37 +560,44 @@ class AppURI
     {
         $return = null;
         switch ($item['type']) {
-			case 'ss':
-				$personal_info = $item['method'] . ':' . $item['passwd'] . '@' . $item['address'] . ':' . $item['port'];
-				$return = 'ss://' . Tools::base64_url_encode($personal_info);
-				$return .= '#' . rawurlencode($item['remark']);
-				break;			
+            case 'ss':
+                $personal_info = $item['method'] . ':' . $item['passwd'] . '@' . $item['address'] . ':' . $item['port'];
+                $return = 'ss://' . Tools::base64_url_encode($personal_info);
+                $return .= '#' . rawurlencode($item['remark']);
+                break;
+            case 'ssr':
+                $return = $item['address'] . ':' . $item['port'] . ':' . $item['protocol'] . ':' . $item['method'] . ':' . $item['obfs'] . ':' . Tools::base64_url_encode($item['passwd'])
+                . '/?obfsparam=' . Tools::base64_url_encode($item['obfs_param'])
+                . '&protoparam=' . Tools::base64_url_encode($item['protocol_param'])
+                . '&remarks=' . Tools::base64_url_encode($item['remark'])
+                . '&group=' . Tools::base64_url_encode($item['group']);
+                return 'ssr://' . Tools::base64_url_encode($return);	
+                break;				
             case 'vmess':
-			    $return = $item['vtype'] . $item['id'] ."@".$item['add'].":".$item['port']."?encryption=auto";
-		        $return.="&type=".$item['net'];
-				$return.="&security=".$item['tls'];
-				if($item['tls'] == "xtls"){
-					$return.="&flow=".$item['flow'];
-				}
-				if($item['host']!="")$return=$return."&host=". rawurlencode($item['host']);
-		        if($item['host']!="")$return=$return."&sni=".$item['host'];	
+                $return = $item['vtype'] . $item['id'] ."@".$item['add'].":".$item['port']."?encryption=auto";
+                $return.="&type=".$item['net'];
+                $return.="&security=".$item['tls'];
+                if($item['tls'] == "xtls"){
+                   $return.="&flow=".$item['flow'];
+                }
+                if($item['host']!="")$return=$return."&host=". rawurlencode($item['host']);
+                if($item['host']!="")$return=$return."&sni=".$item['host'];	
                 if($item['path']!="")$return=$return."&path=".rawurlencode($item['path']);
-				if($item['net'] == "grpc"){
-					if($item['net'] == "grpc")$return=$return."&mode=multi&serviceName=".$item['serviceName'];
-				}else{
-					if($item['headerType']!="")$return=$return."&headerType=".$item['headerType'];
-				}
-		        if ($item['remark']!="")$return=$return."#". rawurlencode($item['remark']);
+                if($item['net'] == "grpc"){
+                   if($item['net'] == "grpc")$return=$return."&mode=multi&serviceName=".$item['servicename'];
+                }else{
+                   if($item['headerType']!="")$return=$return."&headerType=".$item['headerType'];
+                }
+                if ($item['remark']!="")$return=$return."#". rawurlencode($item['remark']);
                 break;
-			case 'trojan':
+            case 'trojan':
                 $return  = ('trojan://' . $item['passwd'] . '@' . $item['address'] . ':' . $item['port']);
                 $return .= ('?peer=' . $item['host'] . '&sni=' . $item['host'] );
-				if($item['tls'] == "xtls"){
-					$return.=("&security=".$item['tls']."&flow=".$item['flow']);
-				}
-				$return.=('#' .  rawurlencode($item['remark']));
-                break;	
-
+                if($item['tls'] == "xtls"){
+                   $return.=("&security=".$item['tls']."&flow=".$item['flow']);
+                }
+                $return.=('#' .  rawurlencode($item['remark']));
+                break;
         }
         return $return;
     }	

+ 24 - 25
src/Utils/Tools.php

@@ -460,34 +460,33 @@ class Tools
                 unset($item['inside_port']);
             }
 			
-			if (array_key_exists('serviceName', $item)) {
-				$item['serviceName'] = $item['serviceName'];
-			}else{
-				$item['serviceName'] = "";
-			}
+            if (array_key_exists('serviceName', $item)) {
+                $item['servicename'] = $item['serviceName'];
+            }else{
+                $item['servicename'] = "";
+            }
 			
-			if (array_key_exists('enable_xtls', $item)) {
-				$item['enable_xtls'] = $item['enable_xtls'];
-			}else{
-				$item['enable_xtls'] = "";
-			}		
-
-			if (array_key_exists('enable_xtls', $item)) {
-				$item['enable_xtls'] = $item['enable_xtls'];
-			}else{
-				$item['enable_xtls'] = "";
-			}	
+            if (array_key_exists('enable_xtls', $item)) {
+                $item['enable_xtls'] = $item['enable_xtls'];
+            }else{
+                $item['enable_xtls'] = "";
+            }		
+
+            if (array_key_exists('enable_xtls', $item)) {
+                $item['enable_xtls'] = $item['enable_xtls'];
+            }else{
+                $item['enable_xtls'] = "";
+            }	
 			
-			if (array_key_exists('enable_vless', $item)) {
-				$item['vtype'] = 'vless://';
-			}else{
-				$item['vtype'] = 'vmess://';
-			}
+            if (array_key_exists('enable_vless', $item)) {
+                $item['vtype'] = 'vless://';
+            }else{
+                $item['vtype'] = 'vmess://';
+            }
 			
-			if (array_key_exists('host', $item)) {
-				$item['sni'] = $item['host'];
-			}
-		
+            if (array_key_exists('host', $item)) {
+                $item['sni'] = $item['host'];
+            }
         }
         return $item;
     }