92 lines
3.9 KiB
PHP
Executable File
92 lines
3.9 KiB
PHP
Executable File
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Services\Subscribe;
|
|
|
|
use App\Models\Config;
|
|
use App\Services\Subscribe;
|
|
use function base64_encode;
|
|
use function json_decode;
|
|
use function json_encode;
|
|
use const PHP_EOL;
|
|
|
|
final class V2Ray extends Base
|
|
{
|
|
public function getContent($user): string
|
|
{
|
|
$links = '';
|
|
//判断是否开启V2Ray订阅
|
|
if (! Config::obtain('enable_v2_sub')) {
|
|
return $links;
|
|
}
|
|
|
|
$nodes_raw = Subscribe::getUserNodes($user);
|
|
|
|
foreach ($nodes_raw as $node_raw) {
|
|
$node_custom_config = json_decode($node_raw->custom_config, true);
|
|
|
|
if ((int) $node_raw->sort === 11) {
|
|
$v2_port = $node_custom_config['offset_port_user'] ?? ($node_custom_config['offset_port_node'] ?? 443);
|
|
$security = $node_custom_config['security'] ?? 'none';
|
|
$network = $node_custom_config['network'] ?? '';
|
|
$header = $node_custom_config['header'] ?? ['type' => 'none'];
|
|
$header_type = $header['type'] ?? '';
|
|
$host = $node_custom_config['header']['request']['headers']['Host'][0] ?? $node_custom_config['host'] ?? '';
|
|
$path = $node_custom_config['header']['request']['path'][0] ?? $node_custom_config['path'] ?? '/';
|
|
|
|
$v2rayn_array = [
|
|
'v' => '2',
|
|
'ps' => $node_raw->name,
|
|
'add' => $node_raw->server,
|
|
'port' => $v2_port,
|
|
'id' => $user->uuid,
|
|
'aid' => 0,
|
|
'net' => $network,
|
|
'type' => $header_type,
|
|
'host' => $host,
|
|
'path' => $path,
|
|
'tls' => $security,
|
|
];
|
|
|
|
$links .= 'vmess://' . base64_encode(json_encode($v2rayn_array)) . PHP_EOL;
|
|
} else if ((int) $node_raw->sort === 0) {
|
|
// case 0:
|
|
// $node = [
|
|
// 'protocol' => 'shadowsocks',
|
|
// 'settings' => [
|
|
// 'address' => $node_raw->server,
|
|
// 'port' => (int) $user->port,
|
|
// 'method' => $user->method,
|
|
// 'password' => $user->passwd,
|
|
// ],
|
|
// 'tag' => $node_raw->name,
|
|
// ];
|
|
//
|
|
// break;
|
|
|
|
$ss_array = [
|
|
// 'v' => '2',
|
|
'ps' => $node_raw->name,
|
|
'add' => $node_raw->server,
|
|
'port' => (int) $node_custom_config['offset_port_user'],
|
|
'encryption' => $user->method,
|
|
'password' => $user->passwd,
|
|
|
|
// 'id' => $user->uuid,
|
|
// 'aid' => 0,
|
|
// 'net' => $network,
|
|
// 'type' => $header_type,
|
|
// 'host' => $host,
|
|
// 'path' => $path,
|
|
// 'tls' => $security,
|
|
];
|
|
|
|
$links .= 'shadowsocks://' . base64_encode(json_encode($ss_array)) . PHP_EOL;
|
|
}
|
|
}
|
|
|
|
return $links;
|
|
}
|
|
}
|