request->getHeader('NC-Token'); if (!empty($token)) { $storedToken = $this->config->getAppValue('serverinfo', 'token', ''); if (hash_equals($storedToken, $token)) { return true; } } // fallback to admin privilege $userSession = $this->userSession; if ($userSession === null) { return false; } $user = $userSession->getUser(); if ($user === null) { return false; } return $this->groupManager->isAdmin($user->getUID()); } /** * @NoCSRFRequired * @NoAdminRequired * @PublicPage * @BruteForceProtection(action=serverinfo) */ public function info(bool $skipApps = true, bool $skipUpdate = true): DataResponse { if (!$this->checkAuthorized()) { $response = new DataResponse(['message' => 'Unauthorized']); $response->throttle(); $response->setStatus(Http::STATUS_UNAUTHORIZED); return $response; } return new DataResponse([ 'f7cloud' => [ 'system' => $this->systemStatistics->getSystemStatistics($skipApps, $skipUpdate), 'storage' => $this->storageStatistics->getStorageStatistics(), 'shares' => $this->shareStatistics->getShareStatistics() ], 'server' => [ 'webserver' => $this->getWebserver(), 'php' => $this->phpStatistics->getPhpStatistics(), 'fpm' => $this->fpmStatistics->getFpmStatistics(), 'database' => $this->databaseStatistics->getDatabaseStatistics() ], 'activeUsers' => $this->sessionStatistics->getSessionStatistics() ]); } public function BasicData(): DataResponse { $servertime = $this->os->getTime(); $uptime = $this->formatUptime($this->os->getUptime()); return new DataResponse([ 'servertime' => $servertime, 'uptime' => $uptime, 'thermalzones' => $this->os->getThermalZones() ]); } public function DiskData(): DataResponse { $result = $this->os->getDiskData(); return new DataResponse($result); } /** * Get webserver information */ private function getWebserver(): string { if (isset($_SERVER['SERVER_SOFTWARE'])) { return $_SERVER['SERVER_SOFTWARE']; } return 'unknown'; } /** * Return the uptime of the system as human readable value */ private function formatUptime(int $uptime): string { if ($uptime === -1) { return $this->l10n->t('Unknown'); } try { $boot = new \DateTime($uptime . ' seconds ago'); } catch (\Exception $e) { return $this->l10n->t('Unknown'); } $interval = $boot->diff(new \DateTime()); $days = $interval->days; $hours = $interval->h; $minutes = $interval->i; $seconds = $interval->s; if ($days > 0) { return $this->l10n->t('%1$d days, %2$d hours, %3$d minutes, %4$d seconds', [$days, $hours, $minutes, $seconds]); } return $this->l10n->t('%1$d hours, %2$d minutes, %3$d seconds', [$hours, $minutes, $seconds]); } }