diff options
author | Simon Rettberg | 2013-11-09 18:31:40 +0100 |
---|---|---|
committer | Simon Rettberg | 2013-11-09 18:31:40 +0100 |
commit | 3a6abc666fe815c789fbb5068d011acd8766e1e7 (patch) | |
tree | 84006a3f701307bd2f9072fd0b7ee0475848b548 /modules | |
parent | Make download work (diff) | |
download | slx-admin-3a6abc666fe815c789fbb5068d011acd8766e1e7.tar.gz slx-admin-3a6abc666fe815c789fbb5068d011acd8766e1e7.tar.xz slx-admin-3a6abc666fe815c789fbb5068d011acd8766e1e7.zip |
Add custom config.tgz upload functionality
Diffstat (limited to 'modules')
-rw-r--r-- | modules/sysconfig.inc.php | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/modules/sysconfig.inc.php b/modules/sysconfig.inc.php index e4751ec4..d5300194 100644 --- a/modules/sysconfig.inc.php +++ b/modules/sysconfig.inc.php @@ -2,6 +2,31 @@ User::load(); +if (isset($_POST['action']) && $_POST['action'] === 'upload') { + if (!Util::verifyToken()) { + Util::redirect('?do=sysconfig'); + } + if (!User::hasPermission('superadmin')) { + Message::addError('no-permission'); + Util::redirect('?do=sysconfig'); + } + if (!isset($_FILES['customtgz'])) { + Message::addError('missing-file'); + Util::redirect('?do=sysconfig'); + } + $dest = $_FILES['customtgz']['name']; + $dest = preg_replace('/[^a-z0-9\-_]/', '', $dest); + $dest = substr($dest, 0, 30); + if (substr($dest, -3) !== 'tgz') $dest .= '.tgz'; + # TODO: Validate its a (compressed) tar? + if (move_uploaded_file($_FILES['customtgz']['tmp_name'], CONFIG_TGZ_LIST_DIR . '/' . $dest)) { + Message::addSuccess('upload-complete', $dest); + } else { + Message::addError('upload-failed', $dest); + } + Util::redirect('?do=sysconfig'); +} + function render_module() { if (!isset($_REQUEST['action'])) $_REQUEST['action'] = 'list'; @@ -30,7 +55,7 @@ function list_configs() 'file' => $file ); } - Render::addTemplate('page-tgz-list', array('files' => $files)); + Render::addTemplate('page-tgz-list', array('files' => $files, 'token' => Session::get('token'))); } function list_remote_configs() |