Compare commits

...

1 Commits

Author SHA1 Message Date
Ferdinand Thiessen
6f41f6a050 feat: provide server version as capability
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-08-19 17:59:45 +02:00
3 changed files with 14 additions and 3 deletions

View File

@@ -10,6 +10,7 @@ namespace OC\OCS;
use OCP\Capabilities\ICapability;
use OCP\IConfig;
use OCP\IURLGenerator;
use OCP\ServerVersion;
/**
* Class Capabilities
@@ -22,6 +23,7 @@ class CoreCapabilities implements ICapability {
*/
public function __construct(
private IConfig $config,
private ServerVersion $serverVersion,
) {
}
@@ -35,10 +37,13 @@ class CoreCapabilities implements ICapability {
* reference-api: boolean,
* reference-regex: string,
* mod-rewrite-working: boolean,
* version: list{int, int, int, int},
* },
* }
*/
public function getCapabilities(): array {
/** @var list{int, int, int, int} */
$version = $this->serverVersion->getVersion();
return [
'core' => [
'pollinterval' => $this->config->getSystemValueInt('pollinterval', 60),
@@ -46,6 +51,7 @@ class CoreCapabilities implements ICapability {
'reference-api' => true,
'reference-regex' => IURLGenerator::URL_REGEX_NO_MODIFIERS,
'mod-rewrite-working' => $this->config->getSystemValueBool('htaccess.IgnoreFrontController') || getenv('front_controller_active') === 'true',
'version' => $version,
],
];
}

View File

@@ -973,7 +973,10 @@ class Server extends ServerContainer implements IServerContainer {
$this->registerService(CapabilitiesManager::class, function (ContainerInterface $c) {
$manager = new CapabilitiesManager($c->get(LoggerInterface::class));
$manager->registerCapability(function () use ($c) {
return new \OC\OCS\CoreCapabilities($c->get(\OCP\IConfig::class));
return new \OC\OCS\CoreCapabilities(
$c->get(\OCP\IConfig::class),
$c->get(\OCP\ServerVersion::class),
);
});
$manager->registerCapability(function () use ($c) {
return $c->get(\OC\Security\Bruteforce\Capabilities::class);

View File

@@ -14,6 +14,7 @@ namespace OCP;
*/
class ServerVersion {
/** @var list{int, int, int, int} */
private array $version;
private string $versionString;
private string $build;
@@ -27,13 +28,13 @@ class ServerVersion {
$versionFile = __DIR__ . '/../../version.php';
require $versionFile;
/** @var int[] $OC_Version */
/** @var list{int, int, int, int} $OC_Version */
$this->version = $OC_Version;
/** @var string $OC_VersionString */
$this->versionString = $OC_VersionString;
/** @var string $OC_Build */
$this->build = $OC_Build;
/** @var string $OC_Channel */
/** @var 'beta'|'stable'|'enterprise'|'git' $OC_Channel */
$this->channel = $OC_Channel;
}
@@ -59,6 +60,7 @@ class ServerVersion {
}
/**
* @psalm-return list{int, int, int, int}
* @since 31.0.0
*/
public function getVersion(): array {