summaryrefslogtreecommitdiffstats
path: root/modules-available/sysconfig/inc
diff options
context:
space:
mode:
Diffstat (limited to 'modules-available/sysconfig/inc')
-rw-r--r--modules-available/sysconfig/inc/configmodule.inc.php12
-rw-r--r--modules-available/sysconfig/inc/configmodulebaseldap.inc.php11
-rw-r--r--modules-available/sysconfig/inc/configtgz.inc.php10
-rw-r--r--modules-available/sysconfig/inc/ldap.inc.php6
-rw-r--r--modules-available/sysconfig/inc/ppd.inc.php5
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);