Muv2.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace App\Http\Middleware;
  3. use App\Http\Models\SsNode;
  4. use Closure;
  5. use Response;
  6. use Redirect;
  7. class Muv2
  8. {
  9. public function handle($request, Closure $next)
  10. {
  11. \Log::info(json_encode($request->header()));
  12. # v2ray客户端提交参数说明
  13. # https://github.com/catpie/musdk-go/blob/master/http.go
  14. # 传入参数:
  15. # Token:mu_key
  16. # ServiceType:5 ---> https://github.com/catpie/musdk-go/blob/master/ret.go
  17. # Content-Type:application/json
  18. //$serviceType = $request->header('ServiceType'); //
  19. //$agent = $request->header('user-agent'); // Go-http-client/1.1
  20. // 验证MU_KEY
  21. $token = $request->header("Token", '');
  22. if ($token != $_ENV['MU_KEY']) {
  23. return Response::json([
  24. 'ret' => 0,
  25. 'msg' => 'Invalid Token.'
  26. ], 401);
  27. }
  28. // 验证IP是否在节点IP列表当中
  29. $ip = getClientIp();
  30. $node = SsNode::query()->where('ip', $ip)->orWhere('ipv6', $ip)->first();
  31. if (!$node && $ip != '127.0.0.1') {
  32. return Response::json([
  33. 'ret' => 0,
  34. 'msg' => 'Invalid Token.'
  35. ], 401);
  36. }
  37. return $next($request);
  38. }
  39. }