added some missed diagnosis output

This commit is contained in:
Arthur Schiwon 2016-08-12 16:52:20 +02:00 committed by Lukas Reschke
parent cd08307bb8
commit 6fa34e334f
No known key found for this signature in database
GPG Key ID: B9F6980CF6E759B1
3 changed files with 66 additions and 10 deletions

View File

@ -728,7 +728,8 @@ class Server extends ServerContainer implements IServerContainer {
$c->getL10N('core'),
$c->getConfig(),
$c->getEncryptionManager(),
$c->getUserManager()
$c->getUserManager(),
$c->getLockingProvider()
);
return $manager;
});

View File

@ -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'),

View File

@ -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;
@ -38,7 +39,6 @@ class Manager implements IManager {
const TABLE_ADMIN_SETTINGS = 'admin_settings';
const TABLE_ADMIN_SECTIONS = 'admin_sections';
/** @var ILogger */
/** @var ILogger */
private $log;
@ -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') {