summaryrefslogtreecommitdiffstats
path: root/modules/sysconfig.inc.php
diff options
context:
space:
mode:
authorSimon Rettberg2014-05-15 18:28:24 +0200
committerSimon Rettberg2014-05-15 18:28:24 +0200
commit63c0cf521f8097b0dadaf1228176dc38c7d897f6 (patch)
tree83f5da6dc130ac7db575b0eee41ed6c7a2f994fb /modules/sysconfig.inc.php
parentFix handle leak in downloading, better error reporting on failed downloads, a... (diff)
downloadslx-admin-63c0cf521f8097b0dadaf1228176dc38c7d897f6.tar.gz
slx-admin-63c0cf521f8097b0dadaf1228176dc38c7d897f6.tar.xz
slx-admin-63c0cf521f8097b0dadaf1228176dc38c7d897f6.zip
Working on config.tgz composition through config modules
Diffstat (limited to 'modules/sysconfig.inc.php')
-rw-r--r--modules/sysconfig.inc.php81
1 files changed, 37 insertions, 44 deletions
diff --git a/modules/sysconfig.inc.php b/modules/sysconfig.inc.php
index c883eb68..faa26787 100644
--- a/modules/sysconfig.inc.php
+++ b/modules/sysconfig.inc.php
@@ -1,37 +1,29 @@
<?php
+/*
+@include_once('Archive/Tar.php');
+if (!class_exists('Archive_Tar')) {
+ Message::addError('Broken php installation: pear extension Archive_Tar missing!');
+ Util::redirect('?do=main');
+}
+ */
+
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 = substr($dest, 0, -3);
- $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');
+// Read request vars
+$action = Request::any('action', 'list');
+$step = Request::any('step', 0);
+$nextStep = $step + 1;
+
+// Action: "addmodule" (upload new module)
+if ($action === 'addmodule') {
+ require_once 'modules/sysconfig/addmodule.inc.php';
+ $handler = AddModule_Base::get($step);
+ $handler->preprocess();
}
-if (isset($_REQUEST['action']) && $_REQUEST['action'] === 'activate') {
- if (!Util::verifyToken()) {
- Util::redirect('?do=sysconfig');
- }
+// Action "activate" (set sysconfig as active)
+if ($action === 'activate') {
if (!User::hasPermission('superadmin')) {
Message::addError('no-permission');
Util::redirect('?do=sysconfig');
@@ -55,15 +47,19 @@ if (isset($_REQUEST['action']) && $_REQUEST['action'] === 'activate') {
Util::redirect('?do=sysconfig');
}
+/**
+ * Render module; called by main script when this module page should render
+ * its content.
+ */
function render_module()
{
- if (!isset($_REQUEST['action'])) $_REQUEST['action'] = 'list';
- switch ($_REQUEST['action']) {
- case 'remotelist':
- list_remote_configs();
+ global $action, $handler;
+ switch ($action) {
+ case 'addmodule':
+ $handler->render();
break;
case 'list':
- list_configs();
+ rr_list_configs();
break;
default:
Message::addError('invalid-action', $_REQUEST['action']);
@@ -71,25 +67,23 @@ function render_module()
}
}
-function list_configs()
+function rr_list_configs()
{
if (!User::hasPermission('superadmin')) {
Message::addError('no-permission');
return;
}
- $current = '<none>';
- if (file_exists(CONFIG_HTTP_DIR . '/default/config.tgz')) $current = realpath(CONFIG_HTTP_DIR . '/default/config.tgz');
- $files = array();
- foreach (glob(CONFIG_TGZ_LIST_DIR . '/*.tgz') as $file) {
- $files[] = array(
- 'file' => basename($file),
- 'current' => ($current === realpath($file))
+ $res = Database::simpleQuery("SELECT title FROM configtgz_module ORDER BY title ASC");
+ $modules = array();
+ while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
+ $modules[] = array(
+ 'module' => $row['title']
);
}
- Render::addTemplate('page-tgz-list', array('files' => $files, 'token' => Session::get('token')));
+ Render::addTemplate('page-sysconfig-main', array('modules' => $modules, 'token' => Session::get('token')));
}
-function list_remote_configs()
+function rr_list_remote_configs()
{
if (!User::hasPermission('superadmin')) {
Message::addError('no-permission');
@@ -111,4 +105,3 @@ function list_remote_configs()
}
Render::addTemplate('page-remote-tgz-list', array('files' => $list));
}
-