summaryrefslogtreecommitdiffstats
path: root/lib/private/Settings
diff options
context:
space:
mode:
authorArthur Schiwon <blizzz@arthur-schiwon.de>2016-08-12 16:52:20 +0200
committerArthur Schiwon <blizzz@arthur-schiwon.de>2016-08-12 16:52:20 +0200
commit9aa6b99a567403c6a3749814033b0e2f600a876f (patch)
tree8aa7f07ef90a3871f5398aed973eed06de2b6c7e /lib/private/Settings
parent0c15081279a56d382400622e3c066584421cb67c (diff)
downloadnextcloud-server-9aa6b99a567403c6a3749814033b0e2f600a876f.tar.gz
nextcloud-server-9aa6b99a567403c6a3749814033b0e2f600a876f.zip
added some missed diagnosis output
Diffstat (limited to 'lib/private/Settings')
-rw-r--r--lib/private/Settings/Admin/Server.php59
-rw-r--r--lib/private/Settings/Manager.php14
2 files changed, 64 insertions, 9 deletions
diff --git a/lib/private/Settings/Admin/Server.php b/lib/private/Settings/Admin/Server.php
index 4f1edcf4691..0c72983a887 100644
--- a/lib/private/Settings/Admin/Server.php
+++ b/lib/private/Settings/Admin/Server.php
@@ -26,9 +26,13 @@ namespace OC\Settings\Admin;
use Doctrine\DBAL\Connection;
use Doctrine\DBAL\DBALException;
use Doctrine\DBAL\Platforms\SqlitePlatform;
+use OC\Lock\DBLockingProvider;
+use OC\Lock\NoopLockingProvider;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\IConfig;
use OCP\IDBConnection;
+use OCP\IL10N;
+use OCP\Lock\ILockingProvider;
use OCP\Settings\ISettings;
class Server implements ISettings {
@@ -39,9 +43,17 @@ class Server implements ISettings {
/** @var IConfig */
private $config;
- public function __construct(IDBConnection $db, IConfig $config) {
+ /** @var ILockingProvider */
+ private $lockingProvider;
+
+ /** @var IL10N */
+ private $l;
+
+ public function __construct(IDBConnection $db, IConfig $config, ILockingProvider $lockingProvider, IL10N $l) {
$this->db = $db;
$this->config = $config;
+ $this->lockingProvider = $lockingProvider;
+ $this->l = $l;
}
/**
@@ -59,19 +71,54 @@ class Server implements ISettings {
$invalidTransactionIsolationLevel = false;
}
+ $envPath = getenv('PATH');
+
+ // warn if outdated version of a memcache module is used
+ $caches = [
+ 'apcu' => ['name' => $this->l->t('APCu'), 'version' => '4.0.6'],
+ 'redis' => ['name' => $this->l->t('Redis'), 'version' => '2.2.5'],
+ ];
+ $outdatedCaches = [];
+ foreach ($caches as $php_module => $data) {
+ $isOutdated = extension_loaded($php_module) && version_compare(phpversion($php_module), $data['version'], '<');
+ if ($isOutdated) {
+ $outdatedCaches[$php_module] = $data;
+ }
+ }
+
+ if ($this->lockingProvider instanceof NoopLockingProvider) {
+ $fileLockingType = 'none';
+ } else if ($this->lockingProvider instanceof DBLockingProvider) {
+ $fileLockingType = 'db';
+ } else {
+ $fileLockingType = 'cache';
+ }
+
+ // If the current web root is non-empty but the web root from the config is,
+ // and system cron is used, the URL generator fails to build valid URLs.
+ $shouldSuggestOverwriteCliUrl = $this->config->getAppValue('core', 'backgroundjobs_mode', 'ajax') === 'cron'
+ && \OC::$WEBROOT && \OC::$WEBROOT !== '/'
+ && !$this->config->getSystemValue('overwrite.cli.url', '');
+ $suggestedOverwriteCliUrl = ($shouldSuggestOverwriteCliUrl) ? \OC::$WEBROOT : '';
+
$parameters = [
// Diagnosis
- 'readOnlyConfigEnabled' => \OC_Helper::isReadOnlyConfigEnabled(),
- 'isLocaleWorking' => \OC_Util::isSetLocaleWorking(),
- 'isAnnotationsWorking' => \OC_Util::isAnnotationsWorking(),
- 'checkForWorkingWellKnownSetup', $this->config->getSystemValue('check_for_working_wellknown_setup'),
- 'has_fileinfo' => \OC_Util::fileInfoLoaded(),
+ 'readOnlyConfigEnabled' => \OC_Helper::isReadOnlyConfigEnabled(),
+ 'isLocaleWorking' => \OC_Util::isSetLocaleWorking(),
+ 'isAnnotationsWorking' => \OC_Util::isAnnotationsWorking(),
+ 'checkForWorkingWellKnownSetup' => $this->config->getSystemValue('check_for_working_wellknown_setup', true),
+ 'has_fileinfo' => \OC_Util::fileInfoLoaded(),
'invalidTransactionIsolationLevel' => $invalidTransactionIsolationLevel,
+ 'getenvServerNotWorking' => empty($envPath),
+ 'OutdatedCacheWarning' => $outdatedCaches,
+ 'fileLockingType' => $fileLockingType,
+ 'suggestedOverwriteCliUrl' => $suggestedOverwriteCliUrl,
// Background jobs
'backgroundjobs_mode' => $this->config->getAppValue('core', 'backgroundjobs_mode', 'ajax'),
'cron_log' => $this->config->getSystemValue('cron_log', true),
'lastcron' => $this->config->getAppValue('core', 'lastcron', false),
+ 'cronErrors' => $this->config->getAppValue('core', 'cronErrors'),
// Mail
'sendmail_is_available' => (bool) \OC_Helper::findBinaryPath('sendmail'),
diff --git a/lib/private/Settings/Manager.php b/lib/private/Settings/Manager.php
index 769ef71e955..7e22d0a3b8c 100644
--- a/lib/private/Settings/Manager.php
+++ b/lib/private/Settings/Manager.php
@@ -30,6 +30,7 @@ use OCP\IDBConnection;
use OCP\IL10N;
use OCP\ILogger;
use OCP\IUserManager;
+use OCP\Lock\ILockingProvider;
use OCP\Settings\ISettings;
use OCP\Settings\IManager;
use OCP\Settings\ISection;
@@ -39,7 +40,6 @@ class Manager implements IManager {
const TABLE_ADMIN_SECTIONS = 'admin_sections';
/** @var ILogger */
- /** @var ILogger */
private $log;
/** @var IDBConnection */
@@ -57,13 +57,17 @@ class Manager implements IManager {
/** @var IUserManager */
private $userManager;
+ /** @var ILockingProvider */
+ private $lockingProvider;
+
public function __construct(
ILogger $log,
IDBConnection $dbc,
IL10N $l,
IConfig $config,
EncryptionManager $encryptionManager,
- IUserManager $userManager
+ IUserManager $userManager,
+ ILockingProvider $lockingProvider
) {
$this->log = $log;
$this->dbc = $dbc;
@@ -71,6 +75,7 @@ class Manager implements IManager {
$this->config = $config;
$this->encryptionManager = $encryptionManager;
$this->userManager = $userManager;
+ $this->lockingProvider = $lockingProvider;
}
/**
@@ -85,6 +90,9 @@ class Manager implements IManager {
}
}
+ /**
+ * @param string $sectionClassName
+ */
private function setupAdminSection($sectionClassName) {
if(!class_exists($sectionClassName)) {
$this->log->debug('Could not find admin section class ' . $sectionClassName);
@@ -283,7 +291,7 @@ class Manager implements IManager {
try {
if($section === 'server') {
/** @var ISettings $form */
- $form = new Admin\Server($this->dbc, $this->config);
+ $form = new Admin\Server($this->dbc, $this->config, $this->lockingProvider, $this->l);
$forms[$form->getPriority()] = [$form];
}
if($section === 'encryption') {