nodes = $nodes; } public function handle(): bool { $allSuccess = true; foreach ($this->nodes as $node) { $ret = $this->send(($node->server ?: $node->ip).':'.$node->push_port, $node->auth->secret, [ 'id' => $node->id, 'port' => (string) $node->port, 'passwd' => $node->passwd ?: '', 'method' => $node->method, 'protocol' => $node->protocol, 'obfs' => $node->obfs, 'protocol_param' => $node->protocol_param, 'obfs_param' => $node->obfs_param ?: '', 'push_port' => $node->push_port, 'single' => $node->single, 'secret' => $node->auth->secret, // 'is_udp' => $node->is_udp, // 'speed_limit' => $node->speed_limit, // 'client_limit' => $node->client_limit, // 'redirect_url' => (string) sysConfig('redirect_url') ]); if (!$ret) { $allSuccess = false; } } return $allSuccess; } public function send($host, $secret, $data): bool { $client = new Client([ 'base_uri' => $host, 'timeout' => 15, 'headers' => ['secret' => $secret], ]); $ret = $client->post('api/v2/node/reload', ['json' => $data]); if ($ret->getStatusCode() == 200) { $message = json_decode($ret->getBody(), true); if (array_key_exists('success', $message) && array_key_exists('content', $message)) { if ($message['success']) { return true; } Log::error('重载节点失败:'.$host.' 反馈:'.$message['content']); } } Log::error('重载节点失败url: '.$host); return false; } }