f7cloud_client/apps/serverinfo/lib/Settings/AdminSettings.php
root 8b6a0139db f7cloud_client
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:59:26 +00:00

90 lines
2.8 KiB
PHP

<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016 F7cloud GmbH and F7cloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\ServerInfo\Settings;
use OCA\ServerInfo\DatabaseStatistics;
use OCA\ServerInfo\FpmStatistics;
use OCA\ServerInfo\Os;
use OCA\ServerInfo\PhpStatistics;
use OCA\ServerInfo\SessionStatistics;
use OCA\ServerInfo\ShareStatistics;
use OCA\ServerInfo\StorageStatistics;
use OCA\ServerInfo\SystemStatistics;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\IConfig;
use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\Settings\ISettings;
class AdminSettings implements ISettings {
public function __construct(
private Os $os,
private IL10N $l,
private IURLGenerator $urlGenerator,
private StorageStatistics $storageStatistics,
private PhpStatistics $phpStatistics,
private FpmStatistics $fpmStatistics,
private DatabaseStatistics $databaseStatistics,
private ShareStatistics $shareStatistics,
private SessionStatistics $sessionStatistics,
private SystemStatistics $systemStatistics,
private IConfig $config,
) {
}
#[\Override]
public function getForm(): TemplateResponse {
$monitoringEndPoint = $this->urlGenerator->getAbsoluteURL('ocs/v2.php/apps/serverinfo/api/v1/info');
$params = [
'hostname' => $this->os->getHostname(),
'osname' => $this->os->getOSName(),
'memory' => $this->os->getMemory(),
'cpu' => $this->os->getCPU(),
'diskinfo' => $this->os->getDiskInfo(),
'networkinfo' => $this->os->getNetworkInfo(),
'networkinterfaces' => $this->os->getNetworkInterfaces(),
'ocs' => $monitoringEndPoint,
'storage' => $this->storageStatistics->getStorageStatistics(),
'shares' => $this->shareStatistics->getShareStatistics(),
'php' => $this->phpStatistics->getPhpStatistics(),
'fpm' => $this->fpmStatistics->getFpmStatistics(),
'database' => $this->databaseStatistics->getDatabaseStatistics(),
'activeUsers' => $this->sessionStatistics->getSessionStatistics(),
'system' => $this->systemStatistics->getSystemStatistics(true, true),
'thermalzones' => $this->os->getThermalZones(),
'phpinfo' => $this->config->getAppValue('serverinfo', 'phpinfo', 'no') === 'yes',
'phpinfoUrl' => $this->urlGenerator->linkToRoute('serverinfo.page.phpinfo')
];
return new TemplateResponse('serverinfo', 'settings-admin', $params);
}
/**
* @return string the section ID, e.g. 'sharing'
*/
#[\Override]
public function getSection(): string {
return 'serverinfo';
}
/**
* @return int whether the form should be rather on the top or bottom of
* the admin section. The forms are arranged in ascending order of the
* priority values. It is required to return a value between 0 and 100.
*
* keep the server setting at the top, right after "server settings"
*/
#[\Override]
public function getPriority(): int {
return 0;
}
}