diff options
author | Simon Rettberg | 2020-12-10 14:01:18 +0100 |
---|---|---|
committer | Simon Rettberg | 2020-12-10 14:01:18 +0100 |
commit | cdf414bf6a999788d4d70e997f8c413e96ef7bb1 (patch) | |
tree | 3c05b78ffd5133fafaf110b4dd392294399d788e /modules-available/sysconfig/inc/configmodule/customodule.inc.php | |
parent | [rebootcontrol] rename scheduler table and associated queries (diff) | |
download | slx-admin-cdf414bf6a999788d4d70e997f8c413e96ef7bb1.tar.gz slx-admin-cdf414bf6a999788d4d70e997f8c413e96ef7bb1.tar.xz slx-admin-cdf414bf6a999788d4d70e997f8c413e96ef7bb1.zip |
[sysconfig] CustomModule: Add check for file ownership, add "fix" option
The fix option will change the owner/group of every file and directory
in the archive to root:root
Previously, the client changed the ownership of the config.tgz contents
to root when extracting, but in some cases it's desired to deliver files
with specific owner and group settings.
The version of the CustomModule module has been bumped to 2, so we can
automatically convert old modules when upgrading or importing a backup,
to be compatible to the old "root everything on the client" logic.
Diffstat (limited to 'modules-available/sysconfig/inc/configmodule/customodule.inc.php')
-rw-r--r-- | modules-available/sysconfig/inc/configmodule/customodule.inc.php | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/modules-available/sysconfig/inc/configmodule/customodule.inc.php b/modules-available/sysconfig/inc/configmodule/customodule.inc.php index 3c10bada..8b968336 100644 --- a/modules-available/sysconfig/inc/configmodule/customodule.inc.php +++ b/modules-available/sysconfig/inc/configmodule/customodule.inc.php @@ -12,14 +12,27 @@ ConfigModule::registerModule( class ConfigModule_CustomModule extends ConfigModule { const MODID = 'CustomModule'; - const VERSION = 1; + const VERSION = 2; private $tmpFile = false; protected function generateInternal($tgz, $parent) { if (!$this->validateConfig()) { - return $this->archive() !== false && file_exists($this->archive()); // No new temp file given, old archive still exists, pretend it worked... + // No temp file given from wizard + // Old archive still exists? pretend it worked... + if ($this->archive() === false || !file_exists($this->archive())) + return false; + if ($this->currentVersion() == 1) { + // Need an upgrade + return Taskmanager::submit('RecompressArchive', array( + 'inputFiles' => [$this->archive() => false], + 'outputFile' => $tgz, + 'forceRoot' => true, // Force this for old modules for backward compat + )); + } + // Nothing to do + return true; } $task = Taskmanager::submit('MoveFile', array( 'source' => $this->tmpFile, @@ -42,6 +55,7 @@ class ConfigModule_CustomModule extends ConfigModule public function setData($key, $value) { + // Sets the temp file from the wizard, where it stored the processed archive if ($key !== 'tmpFile' || !file_exists($value)) return false; $this->tmpFile = $value; |