diff options
Diffstat (limited to 'modules-available/sysconfig/inc')
-rw-r--r-- | modules-available/sysconfig/inc/configmodule.inc.php | 12 | ||||
-rw-r--r-- | modules-available/sysconfig/inc/configmodulebaseldap.inc.php | 11 | ||||
-rw-r--r-- | modules-available/sysconfig/inc/configtgz.inc.php | 10 | ||||
-rw-r--r-- | modules-available/sysconfig/inc/ldap.inc.php | 6 | ||||
-rw-r--r-- | modules-available/sysconfig/inc/ppd.inc.php | 5 |
5 files changed, 31 insertions, 13 deletions
diff --git a/modules-available/sysconfig/inc/configmodule.inc.php b/modules-available/sysconfig/inc/configmodule.inc.php index 54d06afe..2cee37a9 100644 --- a/modules-available/sysconfig/inc/configmodule.inc.php +++ b/modules-available/sysconfig/inc/configmodule.inc.php @@ -135,7 +135,7 @@ abstract class ConfigModule * Get module instances from module type. * * @param int $moduleType module type to get - * @return \ConfigModule[] The requested modules from DB, or false on error + * @return \ConfigModule[]|false The requested modules from DB, or false on error */ public static function getAll($moduleType = false) { @@ -412,6 +412,9 @@ abstract class ConfigModule $this->markFailed(); return false; } + } elseif (!file_exists($tmpTgz)) { + EventLog::warning('ConfigModule::markUpdated for tmpTgz="' . $this->moduleTitle . '" called which doesn\'t exist. Doing nothing.'); + return true; } else { $task = Taskmanager::submit('MoveFile', array( 'source' => $tmpTgz, @@ -419,10 +422,11 @@ abstract class ConfigModule )); $task = Taskmanager::waitComplete($task, 5000); if (Taskmanager::isFailed($task) || !Taskmanager::isFinished($task)) { - if (!API && !AJAX) + if (!API && !AJAX) { Taskmanager::addErrorMessage($task); - else - EventLog::failure('Could not move ' . $tmpTgz . ' to ' . $this->moduleArchive . ' while generating "' . $this->moduleTitle . '"'); + } else { + EventLog::failure('Could not move ' . $tmpTgz . ' to ' . $this->moduleArchive . ' while generating "' . $this->moduleTitle . '"', print_r($task, true)); + } $this->markFailed(); return false; } 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 dbf1bc99..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'); @@ -232,6 +231,11 @@ class ConfigTgz self::recompress([], SysConfig::GLOBAL_MINIMAL_CONFIG); } + /** + * @param string $title Title of config + * @param int[] $moduleIds Modules to include in config + * @return false|ConfigTgz The module instance, false on error + */ public static function insert($title, $moduleIds) { if (!is_array($moduleIds)) @@ -287,6 +291,10 @@ class ConfigTgz return $instance; } + /** + * @param int $moduleId ID of config module + * @return ConfigTgz[]|false + */ public static function getAllForModule($moduleId) { $res = Database::simpleQuery("SELECT configid, title, filepath FROM configtgz_x_module " diff --git a/modules-available/sysconfig/inc/ldap.inc.php b/modules-available/sysconfig/inc/ldap.inc.php index 23b24885..349a662e 100644 --- a/modules-available/sysconfig/inc/ldap.inc.php +++ b/modules-available/sysconfig/inc/ldap.inc.php @@ -12,11 +12,7 @@ class Ldap { // To find ourselves we try to figure out the proper search base, since the given one // might be just for users, not for functional or utility accounts - if (preg_match('/,(OU=.*DC=.*)$/i', Ldap::normalizeDn($binddn), $out)) { - // Get OU from binddn; works if not given short form of DOMAIN\user or user@domain.fqdn.com - $searchbase = $out[1]; - } elseif (preg_match('/,(DC=.*)$/i', Ldap::normalizeDn($searchbase), $out)) { - // Otherwise, shorten search base enough to only consider the DC=..,DC=.. part at the end + if (preg_match('/^\w+=[^=]+,(.*)$/i', Ldap::normalizeDn($binddn), $out)) { $searchbase = $out[1]; } return $searchbase; diff --git a/modules-available/sysconfig/inc/ppd.inc.php b/modules-available/sysconfig/inc/ppd.inc.php index aa2e0e5a..5ccdbd53 100644 --- a/modules-available/sysconfig/inc/ppd.inc.php +++ b/modules-available/sysconfig/inc/ppd.inc.php @@ -413,6 +413,8 @@ class Ppd // StringValue $value = $vMatch[1]; $valueTranslation = isset($vMatch[2]) ? $this->unhexTranslation($no, substr($vMatch[2], 1)) : $value; + } else { + $valueTranslation = $value; } // Key-value-pair parsed, now the fun part // Special cases for openening closing certain groups @@ -691,6 +693,7 @@ class Ppd $chars = array_reduce(array_unique($array), function ($carry, $item) { return $carry . '\x' . dechex(ord($item)); }, ''); + return $chars; } private function unhexTranslation($lineNo, $translation) @@ -703,7 +706,7 @@ class Ppd } $string = preg_replace('/[^a-fA-F0-9]/', '', $match[0]); if (strlen($string) % 2 !== 0) { - $this->warn('Odd number of hex digits in hex substring'); + $this->warn($lineNo, 'Odd number of hex digits in hex substring'); $string = substr($string, 0, -1); } return pack('H*', $string); |