ClientController.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. namespace App\Http\Controllers\Client;
  3. use App\Http\Controllers\Client\Protocols\V2rayN;
  4. use App\Http\Controllers\Controller;
  5. use App\Services\ServerService;
  6. use Illuminate\Http\Request;
  7. use App\Services\UserService;
  8. class ClientController extends Controller
  9. {
  10. public function subscribe(Request $request)
  11. {
  12. $flag = $request->input('flag')
  13. ?? (isset($_SERVER['HTTP_USER_AGENT'])
  14. ? $_SERVER['HTTP_USER_AGENT']
  15. : '');
  16. $flag = strtolower($flag);
  17. $user = $request->user;
  18. // account not expired and is not banned.
  19. $userService = new UserService();
  20. if ($userService->isAvailable($user)) {
  21. $serverService = new ServerService();
  22. $servers = $serverService->getAvailableServers($user);
  23. if ($flag) {
  24. foreach (glob(app_path('Http//Controllers//Client//Protocols') . '/*.php') as $file) {
  25. $file = 'App\\Http\\Controllers\\Client\\Protocols\\' . basename($file, '.php');
  26. $class = new $file($user, $servers);
  27. if (strpos($flag, $class->flag) !== false) {
  28. die($class->handle());
  29. }
  30. }
  31. }
  32. // todo 1.5.3 remove
  33. $class = new V2rayN($user, $servers);
  34. die($class->handle());
  35. die('该客户端暂不支持进行订阅');
  36. }
  37. }
  38. }