summaryrefslogtreecommitdiffstats
path: root/modules-available/sysconfig/install.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules-available/sysconfig/install.inc.php')
-rw-r--r--modules-available/sysconfig/install.inc.php44
1 files changed, 41 insertions, 3 deletions
diff --git a/modules-available/sysconfig/install.inc.php b/modules-available/sysconfig/install.inc.php
index ace5361b..fe6a8c09 100644
--- a/modules-available/sysconfig/install.inc.php
+++ b/modules-available/sysconfig/install.inc.php
@@ -120,17 +120,55 @@ if (!tableHasColumn('configtgz', 'warnings')) {
}
// ----- rebuild configs ------
-// TEMPORARY HACK; Rebuild configs.. move somewhere else?
+// PERMANENT HACK; Rebuild configs.. move somewhere else?
Module::isAvailable('sysconfig');
$list = ConfigModule::getAll();
+$parentTask = null;
+$configList = [];
if ($list === false) {
- EventLog::warning('Could not regenerate AD/LDAP configs - please do so manually');
+ EventLog::warning('Could not regenerate configs - please do so manually');
} else {
foreach ($list as $ad) {
+ if ($ad->moduleType() === 'SshConfig') {
+ // 2020-11-12: Split SshConfig into SshConfig and SshKey
+ $pubkey = $ad->getData('publicKey');
+ if ($pubkey !== false && !empty($pubkey)) {
+ error_log('Legacy module with pubkey ' . $ad->id());
+ $key = ConfigModule::getInstance('SshKey');
+ if ($key !== false) {
+ $key->setData('publicKey', $pubkey);
+ if ($key->insert($ad->title())) {
+ // Insert worked, remove key from old module, add this module to the same configs
+ $task = $key->generate(false, $parentTask);
+ if ($task !== false) {
+ $parentTask = $task;
+ }
+ error_log('Inserted new module with id ' . $key->id());
+ $ad->setData('publicKey', false);
+ $ad->update();
+ $configs = ConfigTgz::getAllForModule($ad->id());
+ foreach ($configs as $config) {
+ // Add newly created key-only module to all configs
+ $new = array_merge($config->getModuleIds(), [$key->id()]);
+ error_log(implode(',', $config->getModuleIds()) . ' -> ' . implode(',', $new));
+ $config->update('', $new);
+ $configList[] = $config;
+ }
+ }
+ }
+ }
+ }
if ($ad->needRebuild()) {
- $ad->generate(false);
+ $update[] = UPDATE_DONE;
+ $task = $ad->generate(false, $parentTask);
+ if ($task !== false) {
+ $parentTask = $task;
+ }
}
}
+ foreach ($configList as $config) {
+ $config->generate(false, 0, $parentTask);
+ }
}
// Create response for browser