l10n->t('AppAPI deploy daemon'); } public function getCategory(): string { return 'system'; } public function getDefaultDaemonConfig(): ?DaemonConfig { $defaultDaemonConfigName = $this->appConfig->getValueString(Application::APP_ID, 'default_daemon_config', lazy: true); if ($defaultDaemonConfigName === '') { return null; } return $this->daemonConfigService->getDaemonConfigByName($defaultDaemonConfigName); } public function run(): SetupResult { $serverVer = explode('.', $this->config->getSystemValueString('version', 'latest'))[0]; $daemonConfig = $this->getDefaultDaemonConfig(); if ($daemonConfig === null) { return SetupResult::error( $this->l10n->t('AppAPI default deploy daemon is not set. Please register a default deploy daemon in the settings to install External Apps (Ex-Apps).'), "https://docs.nextcloud.com/server/$serverVer/admin_manual/exapps_management/AppAPIAndExternalApps.html#setup-deploy-daemon", ); } $this->dockerActions->initGuzzleClient($daemonConfig); $daemonConfigAccessible = $this->dockerActions->ping($this->dockerActions->buildDockerUrl($daemonConfig)); if (!$daemonConfigAccessible) { $this->logger->error(sprintf('Deploy daemon "%s" is not accessible by Nextcloud. Please check its configuration', $daemonConfig->getName())); return SetupResult::error( $this->l10n->t('AppAPI default deploy daemon "%s" is not accessible. Please check the daemon configuration.', ['daemon' => $daemonConfig->getName()]), "https://docs.nextcloud.com/server/$serverVer/admin_manual/exapps_management/AppAPIAndExternalApps.html#setup-deploy-daemon", ); } if (!boolval($daemonConfig->getDeployConfig()['harp'] ?? false)) { return SetupResult::warning( $this->l10n->t('The AppAPI default deploy daemon is not using HaRP. Please consider switching to HaRP for better performance.'), // todo: update link "https://github.com/nextcloud/HaRP/", ); } // HaRP is accessible since ping is already successful return SetupResult::success(); } }