getConfigValue('username', null); $password = $this->getConfigValue('password', null); $ignoreTls = $this->getConfigValue('ignore_tls', false); $isLoginNeeded = !is_null($username) && !empty($username) && !is_null($password) && !empty($password); $attrs['headers'] = [ 'Accept' => 'application/json']; if($isLoginNeeded) { $attrs['auth'] = [ $username, $password ]; } if($ignoreTls) { $attrs['verify'] = false; } return $attrs; } public function test() { $attrs = $this->getRequestAttrs(); $test = parent::appTest($this->url('api/version'), $attrs); echo $test->status; } public function livestats() { $apiEndpoints = collect([ 'httpRouters' => 'api/http/routers', 'httpServices' => 'api/http/services', 'tcpRouters' => 'api/tcp/routers', 'tcpServices' => 'api/tcp/services' ]); $status = 'active'; $attrs = $this->getRequestAttrs(); $responses = $apiEndpoints->mapWithKeys(function ($endpoint, $key) use ($attrs) { $response = parent::execute($this->url($endpoint), $attrs); $body = json_decode($response->getBody()); $bodyCollection = collect($body); return [ $key => [ 'data' => $bodyCollection->filter(function ($value, $key) { return $value->status === 'enabled'; })->count(), 'total' => $bodyCollection->count(), ] ]; }); $data = $this->getViewData($this->getConfigValue('fields', 'E'), $responses); return parent::getLiveStats($status, $data); } public function getViewData($config, $responses) { $nullValue = [ 'data' => 0, 'total' => 0 ]; switch ($config) { /* HTTP routers/services only */ case 'H': return [ 'left' => [ 'title' => 'Routers', 'data' => $responses->get('httpRouters', $nullValue)['data'], 'total' => $responses->get('httpRouters', $nullValue)['total'], ], 'right' => [ 'title' => 'Services', 'data' => $responses->get('httpServices', $nullValue)['data'], 'total' => $responses->get('httpServices', $nullValue)['total'], ], ]; break; /* TCP routers/services only */ case 'T': return [ 'left' => [ 'title' => 'Routers', 'data' => $responses->get('tcpRouters', $nullValue)['data'], 'total' => $responses->get('tcpRouters', $nullValue)['total'], ], 'right' => [ 'title' => 'Services', 'data' => $responses->get('tcpServices', $nullValue)['data'], 'total' => $responses->get('tcpServices', $nullValue)['total'], ], ]; /* Routers only */ case 'R': return [ 'left' => [ 'title' => 'HTTP', 'data' => $responses->get('httpRouters', $nullValue)['data'], 'total' => $responses->get('httpRouters', $nullValue)['total'], ], 'right' => [ 'title' => 'TCP', 'data' => $responses->get('tcpRouters', $nullValue)['data'], 'total' => $responses->get('tcpRouters', $nullValue)['total'], ], ]; /* Services only */ case 'S': return [ 'left' => [ 'title' => 'HTTP', 'data' => $responses->get('httpServices', $nullValue)['data'], 'total' => $responses->get('httpServices', $nullValue)['total'], ], 'right' => [ 'title' => 'TCP', 'data' => $responses->get('tcpServices', $nullValue)['data'], 'total' => $responses->get('tcpServices', $nullValue)['total'], ], ]; /* Everything */ default: return [ 'left' => [ 'title' => 'Routers', 'data' => $responses->get('httpRouters', $nullValue)['data'] + $responses->get('tcpRouters', $nullValue)['data'], 'total' => $responses->get('httpRouters', $nullValue)['total'] + $responses->get('tcpRouters', $nullValue)['total'], ], 'right' => [ 'title' => 'Services', 'data' => $responses->get('httpServices', $nullValue)['data'] + $responses->get('tcpServices', $nullValue)['data'], 'total' => $responses->get('httpServices', $nullValue)['total'] + $responses->get('tcpServices', $nullValue)['total'], ], ]; } } public function url($endpoint) { $api_url = parent::normaliseurl($this->config->url).$endpoint; return $api_url; } public function getConfigValue($key, $default=null) { return (isset($this->config) && isset($this->config->$key)) ? $this->config->$key : $default; } }