|
@@ -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;
|
|
|
}
|