From c324749267d31498f28b170dfb3d0d3968fadc61 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Mon, 18 Dec 2017 14:25:47 +0100 Subject: [sysconfig] Fix logic by which condition the LDADPd gets (re)started --- .../sysconfig/addmodule_adauth.inc.php | 21 +-------------------- .../sysconfig/addmodule_ldapauth.inc.php | 21 +-------------------- .../sysconfig/inc/configmodulebaseldap.inc.php | 11 +++++++++-- modules-available/sysconfig/inc/configtgz.inc.php | 1 - modules-available/sysconfig/page.inc.php | 4 ++++ 5 files changed, 15 insertions(+), 43 deletions(-) (limited to 'modules-available/sysconfig') diff --git a/modules-available/sysconfig/addmodule_adauth.inc.php b/modules-available/sysconfig/addmodule_adauth.inc.php index aab10cbc..2c32e4a8 100644 --- a/modules-available/sysconfig/addmodule_adauth.inc.php +++ b/modules-available/sysconfig/addmodule_adauth.inc.php @@ -510,8 +510,7 @@ class AdAuth_Finish extends AddModule_Base Message::addError('main.value-invalid', 'any', 'any'); $tgz = false; } else { - $parent = $this->stopOldInstance(); - $tgz = $module->generate($this->edit === false, $parent); + $tgz = $module->generate($this->edit === false); } if ($tgz === false) { AddModule_Base::setStep('AdAuth_Start'); // Continues with AdAuth_Start for render() @@ -522,24 +521,6 @@ class AdAuth_Finish extends AddModule_Base ); } - private function stopOldInstance() - { - if ($this->edit === false) - return NULL; - $list = ConfigTgz::getAllForModule($this->edit->id()); - if (!is_array($list)) - return NULL; - $parent = NULL; - foreach ($list as $tgz) { - if (!$tgz->isActive()) - continue; - $task = Trigger::ldadp($tgz->id(), $parent); - if (isset($task['id'])) - $parent = $task['id']; - } - return $parent; - } - protected function renderInternal() { Render::addDialog(Dictionary::translateFile('config-module', 'adAuth_title'), false, 'ad-finish', $this->taskIds); diff --git a/modules-available/sysconfig/addmodule_ldapauth.inc.php b/modules-available/sysconfig/addmodule_ldapauth.inc.php index a193f779..e0de06ac 100644 --- a/modules-available/sysconfig/addmodule_ldapauth.inc.php +++ b/modules-available/sysconfig/addmodule_ldapauth.inc.php @@ -281,8 +281,7 @@ class LdapAuth_Finish extends AddModule_Base Message::addError('main.value-invalid', 'any', 'any'); $tgz = false; } else { - $parent = $this->stopOldInstance(); - $tgz = $module->generate($this->edit === false, $parent); + $tgz = $module->generate($this->edit === false); } if ($tgz === false) { AddModule_Base::setStep('LdapAuth_Start'); // Continues with LdapAuth_Start for render() @@ -293,24 +292,6 @@ class LdapAuth_Finish extends AddModule_Base ); } - private function stopOldInstance() - { - if ($this->edit === false) - return NULL; - $list = ConfigTgz::getAllForModule($this->edit->id()); - if (!is_array($list)) - return NULL; - $parent = NULL; - foreach ($list as $tgz) { - if (!$tgz->isActive()) - continue; - $task = Trigger::ldadp($tgz->id(), $parent); - if (isset($task['id'])) - $parent = $task['id']; - } - return $parent; - } - protected function renderInternal() { Render::addDialog(Dictionary::translateFile('config-module', 'ldapAuth_title'), false, 'ldap-finish', $this->taskIds); diff --git a/modules-available/sysconfig/inc/configmodulebaseldap.inc.php b/modules-available/sysconfig/inc/configmodulebaseldap.inc.php index d8a41a8b..d6fc3ed9 100644 --- a/modules-available/sysconfig/inc/configmodulebaseldap.inc.php +++ b/modules-available/sysconfig/inc/configmodulebaseldap.inc.php @@ -33,7 +33,10 @@ abstract class ConfigModuleBaseLdap extends ConfigModule protected function generateInternal($tgz, $parent) { - Trigger::ldadp($this->id(), $parent); + $np = Trigger::ldadp($this->id(), $parent); + if ($np !== false) { + $parent = $np; + } $config = $this->moduleData; if (isset($config['certificate']) && !is_string($config['certificate'])) { unset($config['certificate']); @@ -64,7 +67,11 @@ abstract class ConfigModuleBaseLdap extends ConfigModule $config['fixnumeric'] = 's'; } $this->preTaskmanagerHook($config); - return Taskmanager::submit('CreateLdapConfig', $config); + $task = Taskmanager::submit('CreateLdapConfig', $config); + if (is_array($task) && isset($task['id'])) { + Trigger::ldadp(null, $task['id']); + } + return $task; } /** diff --git a/modules-available/sysconfig/inc/configtgz.inc.php b/modules-available/sysconfig/inc/configtgz.inc.php index 09ea999c..17c9f35d 100644 --- a/modules-available/sysconfig/inc/configtgz.inc.php +++ b/modules-available/sysconfig/inc/configtgz.inc.php @@ -157,7 +157,6 @@ class ConfigTgz { if ($this->configId === 0) Util::traceError('ConfigTgz::markUpdated called with invalid config id!'); - Event::activeConfigChanged(); if ($this->areAllModulesUpToDate()) return $this->mark('OK'); return $this->mark('OUTDATED'); diff --git a/modules-available/sysconfig/page.inc.php b/modules-available/sysconfig/page.inc.php index 043645df..8053ab43 100644 --- a/modules-available/sysconfig/page.inc.php +++ b/modules-available/sysconfig/page.inc.php @@ -343,6 +343,9 @@ class Page_SysConfig extends Page Message::addError('main.empty-field'); Util::redirect('?do=sysconfig&locationid=' . $this->currentLoc); } + // Validate that either the configid is valid (in case we override for a specific location) + // or that if the locationid is 0 (=global) that the configid exists, because it's not allowed + // to unset the global config if ($this->currentLoc === 0 || $configid !== 0) { $row = Database::queryFirst("SELECT title, filepath FROM configtgz WHERE configid = :configid LIMIT 1", array('configid' => $configid)); if ($row === false) { @@ -358,6 +361,7 @@ class Page_SysConfig extends Page Database::exec("INSERT INTO configtgz_location (locationid, configid) VALUES (:locationid, :configid)" . " ON DUPLICATE KEY UPDATE configid = :configid", compact('locationid', 'configid')); } + Event::activeConfigChanged(); Util::redirect('?do=sysconfig&locationid=' . $this->currentLoc); } -- cgit v1.2.3-55-g7522