getUser.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace App\Jobs\VNet;
  3. use App\Models\Node;
  4. use Arr;
  5. use Exception;
  6. use Http;
  7. use Log;
  8. class GetUser
  9. {
  10. public function list(Node $node, string $mode = 'uid'): false|array
  11. {
  12. $list = $this->send(($node->server ?: $node->ips()[0]).':'.$node->push_port, $node->auth->secret);
  13. if (is_array($list)) {
  14. if ($mode === 'uid') {
  15. return Arr::pluck($list, 'uid');
  16. }
  17. if ($mode === 'port') {
  18. return Arr::pluck($list, 'port');
  19. }
  20. return $list;
  21. }
  22. return false;
  23. }
  24. private function send(string $host, string $secret): false|array
  25. {
  26. try {
  27. $response = Http::baseUrl($host)->timeout(20)->withHeader('secret', $secret)->get('api/user/list');
  28. $message = $response->json();
  29. if ($message && $response->ok()) {
  30. return $message;
  31. }
  32. Log::warning('【用户列表】获取失败(推送地址:'.$host.')');
  33. } catch (Exception $exception) {
  34. Log::alert('【用户列表】获取异常:'.$exception->getMessage());
  35. }
  36. return false;
  37. }
  38. }