api.php 4.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. use App\Http\Controllers\Api\Client\AuthController;
  3. use App\Http\Controllers\Api\Client\ClientController;
  4. use App\Http\Controllers\Api\WebApi\CoreController;
  5. use App\Http\Controllers\Api\WebApi\Hysteria2Controller;
  6. use App\Http\Controllers\Api\WebApi\SSController;
  7. use App\Http\Controllers\Api\WebApi\SSRController;
  8. use App\Http\Controllers\Api\WebApi\TrojanController;
  9. use App\Http\Controllers\Api\WebApi\V2RayController;
  10. // 后端WEBAPI
  11. Route::domain(sysConfig('web_api_url') ?: sysConfig('website_url'))->middleware('webApi')->group(function () {
  12. // 核心功能路由
  13. Route::prefix('{prefix}')->controller(CoreController::class)->group(function () {
  14. foreach ([
  15. Route::post('nodeStatus/{node}', 'setNodeStatus'), // 上报节点心跳信息
  16. Route::post('nodeOnline/{node}', 'setNodeOnline'), // 上报节点在线人数
  17. Route::post('userTraffic/{node}', 'setUserTraffic'), // 上报用户流量日志
  18. Route::get('nodeRule/{node}', 'getNodeRule'), // 获取节点的审计规则
  19. Route::post('trigger/{node}', 'addRuleLog'), // 上报用户触发的审计规则记录
  20. ] as $route) {
  21. $route->where('prefix', 'ss/v1|ssr/v1|web/v1|vnet/v2|v2ray/v1|trojan/v1');
  22. }
  23. });
  24. // SS后端WEBAPI V1版
  25. Route::prefix('ss/v1')->controller(SSController::class)->group(function () {
  26. Route::get('node/{node}', 'getNodeInfo'); // 获取节点信息
  27. Route::get('userList/{node}', 'getUserList'); // 获取节点可用的用户列表
  28. });
  29. // SSR后端WEBAPI V1版
  30. Route::prefix('{prefix}')->controller(SSRController::class)->group(function () {
  31. foreach ([
  32. Route::get('node/{node}', 'getNodeInfo'), // 获取节点信息
  33. Route::get('userList/{node}', 'getUserList'), // 获取节点可用的用户列表
  34. ] as $route) {
  35. $route->where('prefix', 'ssr/v1|web/v1|vnet/v2'); // SSR/VNet后端WEBAPI
  36. }
  37. });
  38. // V2Ray后端WEBAPI V1版
  39. Route::prefix('v2ray/v1')->controller(V2RayController::class)->group(function () {
  40. Route::get('node/{node}', 'getNodeInfo'); // 获取节点信息
  41. Route::get('userList/{node}', 'getUserList'); // 获取节点可用的用户列表
  42. Route::post('certificate/{node}', 'addCertificate'); // 上报节点伪装域名证书信息
  43. });
  44. // Trojan后端WEBAPI V1版
  45. Route::prefix('trojan/v1')->controller(TrojanController::class)->group(function () {
  46. Route::get('node/{node}', 'getNodeInfo'); // 获取节点信息
  47. Route::get('userList/{node}', 'getUserList'); // 获取节点可用的用户列表
  48. });
  49. // Hysteria2后端WEBAPI V1版
  50. Route::prefix('hysteria2/v1')->controller(Hysteria2Controller::class)->withoutMiddleware('webApi')->group(function () {
  51. Route::post('auth/{node}', 'authenticate')->name('api.hysteria2.auth'); // Hysteria2 HTTP验证端点
  52. });
  53. });
  54. // 客户端API
  55. Route::prefix('v1')->group(function () {
  56. Route::controller(AuthController::class)->group(function () {
  57. Route::post('login', 'login'); // 登录
  58. Route::post('register', 'register'); // 注册
  59. Route::get('logout', 'logout'); // 登出
  60. });
  61. Route::controller(ClientController::class)->group(function () {
  62. Route::get('getconfig', 'getConfig'); // 获取配置文件
  63. Route::get('version/update', 'checkClientVersion'); // 检查更新
  64. Route::get('shop', 'shop'); // 获取商品列表
  65. // 用户验证
  66. Route::middleware('auth.client')->group(function () {
  67. Route::get('getclash', 'downloadProxies'); // 下载节点配置
  68. Route::get('getuserinfo', 'getUserInfo'); // 获取用户信息
  69. Route::post('doCheckIn', 'checkIn'); // 签到
  70. Route::get('checkClashUpdate', 'proxyCheck'); // 判断是否更新订阅
  71. Route::get('proxy', 'getProxyList'); // 获取节点列表
  72. Route::get('tickets', 'ticketList'); // 获取工单列表
  73. Route::post('tickets/add', 'ticket_add'); // 提交工单
  74. Route::get('order', 'getOrders'); // 获取订单列表
  75. Route::get('invite/gift', 'getInvite'); // 获取邀请详情和列表
  76. Route::get('gettransfer', 'getUserTransfer'); // 获取剩余流量
  77. });
  78. });
  79. });