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.php2
-rw-r--r--modules-available/sysconfig/inc/configmodule/adauth.inc.php2
-rw-r--r--modules-available/sysconfig/inc/configmodule/ldapauth.inc.php2
-rw-r--r--modules-available/sysconfig/inc/configmodulebaseldap.inc.php6
-rw-r--r--modules-available/sysconfig/inc/configtgz.inc.php51
5 files changed, 48 insertions, 15 deletions
diff --git a/modules-available/sysconfig/inc/configmodule.inc.php b/modules-available/sysconfig/inc/configmodule.inc.php
index 2cee37a9..b6db9c4f 100644
--- a/modules-available/sysconfig/inc/configmodule.inc.php
+++ b/modules-available/sysconfig/inc/configmodule.inc.php
@@ -354,7 +354,7 @@ abstract class ConfigModule
// Wait for generation if requested
if ($timeoutMs > 0 && isset($ret['id']) && !Taskmanager::isFinished($ret))
$ret = Taskmanager::waitComplete($ret, $timeoutMs);
- if ($ret === true || (isset($ret['statusCode']) && $ret['statusCode'] === TASK_FINISHED)) {
+ if ($ret === true || (isset($ret['statusCode']) && $ret['statusCode'] === Taskmanager::TASK_FINISHED)) {
// Already Finished
if (file_exists($this->moduleArchive) && !file_exists($tmpTgz))
$tmpTgz = false; // If generateInternal succeeded and there's no tmpTgz, it means the file didn't have to be updated
diff --git a/modules-available/sysconfig/inc/configmodule/adauth.inc.php b/modules-available/sysconfig/inc/configmodule/adauth.inc.php
index db06a4a4..ed7b318d 100644
--- a/modules-available/sysconfig/inc/configmodule/adauth.inc.php
+++ b/modules-available/sysconfig/inc/configmodule/adauth.inc.php
@@ -12,5 +12,5 @@ ConfigModule::registerModule(
Dictionary::translateFileModule('sysconfig', 'config-module', 'adAuth_title'), // Title
Dictionary::translateFileModule('sysconfig', 'config-module', 'adAuth_description'), // Description
Dictionary::translateFileModule('sysconfig', 'config-module', 'group_authentication'), // Group
- true // Only one per config?
+ false // Only one per config?
);
diff --git a/modules-available/sysconfig/inc/configmodule/ldapauth.inc.php b/modules-available/sysconfig/inc/configmodule/ldapauth.inc.php
index 1a706234..e8df2877 100644
--- a/modules-available/sysconfig/inc/configmodule/ldapauth.inc.php
+++ b/modules-available/sysconfig/inc/configmodule/ldapauth.inc.php
@@ -19,5 +19,5 @@ ConfigModule::registerModule(
Dictionary::translateFileModule('sysconfig', 'config-module', 'ldapAuth_title'), // Title
Dictionary::translateFileModule('sysconfig', 'config-module', 'ldapAuth_description'), // Description
Dictionary::translateFileModule('sysconfig', 'config-module', 'group_authentication'), // Group
- true // Only one per config?
+ false // Only one per config?
);
diff --git a/modules-available/sysconfig/inc/configmodulebaseldap.inc.php b/modules-available/sysconfig/inc/configmodulebaseldap.inc.php
index d6fc3ed9..9364c2e3 100644
--- a/modules-available/sysconfig/inc/configmodulebaseldap.inc.php
+++ b/modules-available/sysconfig/inc/configmodulebaseldap.inc.php
@@ -3,12 +3,13 @@
abstract class ConfigModuleBaseLdap extends ConfigModule
{
- const VERSION = 2;
+ const VERSION = 3;
private static $REQUIRED_FIELDS = array('server', 'searchbase');
private static $OPTIONAL_FIELDS = array('binddn', 'bindpw', 'home', 'ssl', 'fixnumeric', 'fingerprint', 'certificate', 'homeattr',
'shareRemapMode', 'shareRemapCreate', 'shareDocuments', 'shareDownloads', 'shareDesktop', 'shareMedia',
- 'shareOther', 'shareHomeDrive', 'shareDomain', 'credentialPassthrough', 'mapping');
+ 'shareOther', 'shareHomeDrive', 'shareDomain', 'credentialPassthrough', 'mapping', 'genuid',
+ 'ldapAttrMountOpts', 'shareHomeMountOpts');
public static function getMapping($config = false, &$empty = true)
{
@@ -66,6 +67,7 @@ abstract class ConfigModuleBaseLdap extends ConfigModule
if (!isset($config['fixnumeric'])) {
$config['fixnumeric'] = 's';
}
+ $config['genuid'] = isset($config['genuid']) && !empty($config['genuid']);
$this->preTaskmanagerHook($config);
$task = Taskmanager::submit('CreateLdapConfig', $config);
if (is_array($task) && isset($task['id'])) {
diff --git a/modules-available/sysconfig/inc/configtgz.inc.php b/modules-available/sysconfig/inc/configtgz.inc.php
index 17c9f35d..7b042cdb 100644
--- a/modules-available/sysconfig/inc/configtgz.inc.php
+++ b/modules-available/sysconfig/inc/configtgz.inc.php
@@ -63,7 +63,7 @@ class ConfigTgz
foreach ($moduleIds as $module) {
$idstr .= ',' . (int)$module; // Casting to int should make it safe
}
- $res = Database::simpleQuery("SELECT moduleid, filepath, status FROM configtgz_module WHERE moduleid IN ($idstr)");
+ $res = Database::simpleQuery("SELECT moduleid, moduletype, filepath, status FROM configtgz_module WHERE moduleid IN ($idstr)");
// Delete old connections
Database::exec("DELETE FROM configtgz_x_module WHERE configid = :configid", array('configid' => $this->configId));
// Make connection
@@ -98,8 +98,13 @@ class ConfigTgz
$files = array();
// Get all config modules for system config
foreach ($this->modules as $module) {
- if (!empty($module['filepath']) && file_exists($module['filepath']))
+ if (!empty($module['filepath']) && file_exists($module['filepath'])) {
$files[] = $module['filepath'];
+ }
+ if ($module['moduletype'] === 'SshConfig') {
+ // HACK XXX TODO Global + SSH ugly
+ self::rebuildEmptyGlobalConfig();
+ }
}
$task = self::recompress($files, $this->file);
@@ -107,7 +112,7 @@ class ConfigTgz
// Wait for completion
if ($timeoutMs > 0 && !Taskmanager::isFailed($task) && !Taskmanager::isFinished($task))
$task = Taskmanager::waitComplete($task, $timeoutMs);
- if ($task === true || (isset($task['statusCode']) && $task['statusCode'] === TASK_FINISHED)) {
+ if ($task === true || (isset($task['statusCode']) && $task['statusCode'] === Taskmanager::TASK_FINISHED)) {
// Success!
$this->markUpdated();
return true;
@@ -222,13 +227,39 @@ class ConfigTgz
));
$res = Database::simpleQuery("SELECT configid FROM configtgz");
while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
- $module = self::get($row['configid']);
- if ($module !== false) {
- $module->generate();
+ $configTgz = self::get($row['configid']);
+ if ($configTgz !== false) {
+ $configTgz->generate();
}
}
// Build the global "empty" config that just includes global hooks
- self::recompress([], SysConfig::GLOBAL_MINIMAL_CONFIG);
+ self::rebuildEmptyGlobalConfig();
+ }
+
+ /**
+ * Rebuild the general "empty" config that only contains global hook modules
+ * and forced ones.
+ */
+ private static function rebuildEmptyGlobalConfig()
+ {
+ static $onceOnly = false;
+ if ($onceOnly)
+ return;
+ $onceOnly = true;
+ // HACK TODO XXX -- just stuff (global) ssh config into this one for now, needs proper fix :-(
+ $res = Database::simpleQuery("SELECT DISTINCT cm.filepath FROM configtgz_module cm
+ INNER JOIN configtgz_x_module cxm USING (moduleid)
+ INNER JOIN configtgz_location cl USING (configid)
+ WHERE cm.moduletype = 'SshConfig' AND cm.status = 'OK'
+ ORDER BY locationid ASC");
+ $extra = [];
+ while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
+ if (file_exists($row['filepath'])) {
+ $extra[] = $row['filepath'];
+ break;
+ }
+ }
+ self::recompress($extra, SysConfig::GLOBAL_MINIMAL_CONFIG);
}
/**
@@ -258,7 +289,7 @@ class ConfigTgz
foreach ($moduleIds as $module) {
$idstr .= ',' . (int)$module; // Casting to int should make it safe
}
- $res = Database::simpleQuery("SELECT moduleid, filepath, status FROM configtgz_module WHERE moduleid IN ($idstr)");
+ $res = Database::simpleQuery("SELECT moduleid, moduletype, filepath, status FROM configtgz_module WHERE moduleid IN ($idstr)");
// Make connection
while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
Database::exec("INSERT INTO configtgz_x_module (configid, moduleid) VALUES (:configid, :moduleid)", array(
@@ -281,7 +312,7 @@ class ConfigTgz
$instance->configId = $ret['configid'];
$instance->configTitle = $ret['title'];
$instance->file = $ret['filepath'];
- $ret = Database::simpleQuery("SELECT moduleid, filepath, status FROM configtgz_x_module "
+ $ret = Database::simpleQuery("SELECT moduleid, moduletype, filepath, status FROM configtgz_x_module "
. " INNER JOIN configtgz_module USING (moduleid) "
. " WHERE configid = :configid", array('configid' => $instance->configId));
$instance->modules = array();
@@ -310,7 +341,7 @@ class ConfigTgz
$instance->configId = $row['configid'];
$instance->configTitle = $row['title'];
$instance->file = $row['filepath'];
- $innerRes = Database::simpleQuery("SELECT moduleid, filepath, status FROM configtgz_x_module "
+ $innerRes = Database::simpleQuery("SELECT moduleid, moduletype, filepath, status FROM configtgz_x_module "
. " INNER JOIN configtgz_module USING (moduleid) "
. " WHERE configid = :configid", array('configid' => $instance->configId));
$instance->modules = array();