| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | 
							- <?php
 
- namespace App\Http\Controllers\Api\WebApi;
 
- use App\Helpers\WebApiResponse;
 
- use App\Models\Node;
 
- use App\Models\NodeCertificate;
 
- use Illuminate\Http\JsonResponse;
 
- use Illuminate\Routing\Controller;
 
- class V2RayController extends Controller
 
- {
 
-     use WebApiResponse;
 
-     public function getNodeInfo(Node $node): JsonResponse // 获取节点信息
 
-     {
 
-         $cert = NodeCertificate::whereDomain($node->profile['v2_host'])->first();
 
-         $tlsProvider = ! empty($node->profile['tls_provider']) ? $node->profile['tls_provider'] : sysConfig('v2ray_tls_provider');
 
-         return $this->succeed([
 
-             'id' => $node->id,
 
-             'is_udp' => (bool) $node->is_udp,
 
-             'speed_limit' => $node->getRawOriginal('speed_limit'),
 
-             'client_limit' => $node->client_limit,
 
-             'push_port' => $node->push_port,
 
-             'redirect_url' => (string) sysConfig('redirect_url'),
 
-             'secret' => $node->auth->secret,
 
-             'key' => $cert ? $cert->key : '',
 
-             'pem' => $cert ? $cert->pem : '',
 
-             'v2_license' => (string) sysConfig('v2ray_license'),
 
-             'v2_alter_id' => (int) $node->profile['v2_alter_id'],
 
-             'v2_port' => $node->port,
 
-             'v2_method' => $node->profile['method'] ?? '',
 
-             'v2_net' => $node->profile['v2_net'] ?? '',
 
-             'v2_type' => $node->profile['v2_type'] ?? '',
 
-             'v2_host' => $node->profile['v2_host'] ?? '',
 
-             'v2_path' => $node->profile['v2_path'] ?? '',
 
-             'v2_tls' => (bool) ($node->profile['v2_tls'] ?? false),
 
-             'v2_tls_provider' => $tlsProvider,
 
-         ]);
 
-     }
 
-     public function getUserList(Node $node): JsonResponse // 获取节点可用的用户列表
 
-     {
 
-         foreach ($node->users() as $user) {
 
-             $data[] = [
 
-                 'uid' => $user->id,
 
-                 'vmess_uid' => $user->vmess_id,
 
-                 'speed_limit' => $user->getRawOriginal('speed_limit'),
 
-             ];
 
-         }
 
-         return $this->succeed($data ?? [], ['updateTime' => time()]);
 
-     }
 
-     public function addCertificate(Node $node): JsonResponse // 上报节点伪装域名证书信息
 
-     {
 
-         if (request()->has(['key', 'pem'])) {
 
-             $cert = NodeCertificate::whereDomain($node->v2_host)->firstOrCreate(['domain' => $node->server]);
 
-             if ($cert && $cert->update(['key' => request('key'), 'pem' => request('pem')])) {
 
-                 return $this->succeed();
 
-             }
 
-         }
 
-         return $this->failed([400201, '上报节点伪装域名证书失败,请检查字段']);
 
-     }
 
- }
 
 
  |