summaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorSimon Rettberg2015-01-20 18:07:24 +0100
committerSimon Rettberg2015-01-20 18:07:24 +0100
commit1ff2bc4f3c694b7c76df8e57056c51ca39a23a34 (patch)
tree0eb19164af66b3d4e8bf639a710f323b631d23ee /modules
parentRework config module class structure. Still some TODOs though.... (diff)
downloadslx-admin-1ff2bc4f3c694b7c76df8e57056c51ca39a23a34.tar.gz
slx-admin-1ff2bc4f3c694b7c76df8e57056c51ca39a23a34.tar.xz
slx-admin-1ff2bc4f3c694b7c76df8e57056c51ca39a23a34.zip
config module structure completed. Many other fixes. Hidden pw field support.
Diffstat (limited to 'modules')
-rw-r--r--modules/sysconfig.inc.php27
-rw-r--r--modules/sysconfig/addconfig.inc.php2
-rw-r--r--modules/sysconfig/addmodule.inc.php2
-rw-r--r--modules/sysconfig/addmodule_adauth.inc.php19
-rw-r--r--modules/sysconfig/addmodule_branding.inc.php41
-rw-r--r--modules/sysconfig/addmodule_custommodule.inc.php23
-rw-r--r--modules/syslog.inc.php7
7 files changed, 73 insertions, 48 deletions
diff --git a/modules/sysconfig.inc.php b/modules/sysconfig.inc.php
index 134f3143..0da58767 100644
--- a/modules/sysconfig.inc.php
+++ b/modules/sysconfig.inc.php
@@ -249,34 +249,21 @@ class Page_SysConfig extends Page
private function delConfig()
{
$configid = Request::post('del', 'MISSING');
- $row = Database::queryFirst("SELECT title, filepath FROM configtgz WHERE configid = :configid LIMIT 1", array('configid' => $configid));
- if ($row === false) {
+ $module = ConfigModule::get($configid);
+ if ($module === false) {
Message::addError('config-invalid', $configid);
Util::redirect('?do=SysConfig');
}
- $task = Taskmanager::submit('DeleteFile', array(
- 'file' => $row['filepath']
- ));
- if (isset($task['statusCode']) && $task['statusCode'] === TASK_WAITING) {
- $task = Taskmanager::waitComplete($task['id']);
- }
- if (!isset($task['statusCode']) || $task['statusCode'] === TASK_ERROR) {
- Message::addWarning('task-error', $task['data']['error']);
- } elseif ($task['statusCode'] === TASK_FINISHED) {
- Message::addSuccess('module-deleted', $row['title']);
- }
- Database::exec("DELETE FROM configtgz WHERE configid = :configid LIMIT 1", array('configid' => $configid));
+ $module->delete();
Util::redirect('?do=SysConfig');
}
private function initAddModule()
{
- ConfigModules::loadDb();
+ ConfigModule::loadDb();
require_once 'modules/sysconfig/addmodule.inc.php';
- $step = Request::any('step', 0);
- if ($step === 0) {
- $step = 'AddModule_Start';
- } elseif (!class_exists($step) && preg_match('/^([a-zA-Z0-9]+)_/', $step, $out)) {
+ $step = Request::any('step', 'AddModule_Start');
+ if (!class_exists($step) && preg_match('/^([a-zA-Z0-9]+)_/', $step, $out)) {
require_once 'modules/sysconfig/addmodule_' . strtolower($out[1]) . '.inc.php';
}
AddModule_Base::setStep($step);
@@ -284,7 +271,7 @@ class Page_SysConfig extends Page
private function initAddConfig()
{
- ConfigModules::loadDb();
+ ConfigModule::loadDb();
require_once 'modules/sysconfig/addconfig.inc.php';
$step = Request::any('step', 0);
if ($step === 0)
diff --git a/modules/sysconfig/addconfig.inc.php b/modules/sysconfig/addconfig.inc.php
index 0f35095f..4949539e 100644
--- a/modules/sysconfig/addconfig.inc.php
+++ b/modules/sysconfig/addconfig.inc.php
@@ -108,7 +108,7 @@ class AddConfig_Start extends AddConfig_Base
protected function renderInternal()
{
- $mods = ConfigModules::getList();
+ $mods = ConfigModule::getList();
$res = Database::simpleQuery("SELECT moduleid, title, moduletype, filepath FROM configtgz_module"
. " ORDER BY title ASC");
while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
diff --git a/modules/sysconfig/addmodule.inc.php b/modules/sysconfig/addmodule.inc.php
index 7fa5b5b9..69160964 100644
--- a/modules/sysconfig/addmodule.inc.php
+++ b/modules/sysconfig/addmodule.inc.php
@@ -109,7 +109,7 @@ class AddModule_Start extends AddModule_Base
protected function renderInternal()
{
$title = $order = array();
- $mods = ConfigModules::getList();
+ $mods = ConfigModule::getList();
foreach ($mods as $module) {
$title[] = $module['title'];
$order[] = $module['sortOrder'];
diff --git a/modules/sysconfig/addmodule_adauth.inc.php b/modules/sysconfig/addmodule_adauth.inc.php
index 4873d505..baa705b2 100644
--- a/modules/sysconfig/addmodule_adauth.inc.php
+++ b/modules/sysconfig/addmodule_adauth.inc.php
@@ -125,15 +125,24 @@ class AdAuth_Finish extends AddModule_Base
$title = Request::post('title');
if (empty($title))
$title = 'AD: ' . Request::post('server');
- $config = ConfigModule_AdAuth::insert($title, Request::post('server'), $searchbase, $binddn, Request::post('bindpw', ''), Request::post('home', ''));
- $config['proxyip'] = Property::getServerIp();
- $tgz = Taskmanager::submit('CreateAdConfig', $config);
- if (!isset($tgz['id'])) {
+ $module = ConfigModule::getInstance('AdAuth');
+ $module->setData('server', Request::post('server'));
+ $module->setData('searchbase', $searchbase);
+ $module->setData('binddn', $binddn);
+ $module->setData('bindpw', Request::post('bindpw'));
+ $module->setData('home', Request::post('home'));
+ if (!$module->insert($title)) {
+ Message::addError('value-invalid', 'any', 'any');
+ $tgz = false;
+ } else {
+ $tgz = $module->generate(true);
+ }
+ if ($tgz === false) {
AddModule_Base::setStep('AdAuth_Start'); // Continues with AdAuth_Start for render()
return;
}
$this->taskIds = array(
- 'tm-config' => $tgz['id'],
+ 'tm-config' => $tgz,
);
}
diff --git a/modules/sysconfig/addmodule_branding.inc.php b/modules/sysconfig/addmodule_branding.inc.php
index a6c16d9d..8bcc10a1 100644
--- a/modules/sysconfig/addmodule_branding.inc.php
+++ b/modules/sysconfig/addmodule_branding.inc.php
@@ -46,8 +46,10 @@ class Branding_ProcessFile extends AddModule_Base
// URL - launch task that fetches the SVG file from it
if (strpos($url, '://') === false)
$url = "http://$url";
- if (!$this->downloadSvg($this->svgFile, $url))
+ $title = false;
+ if (!$this->downloadSvg($this->svgFile, $url, $title))
Util::redirect('?do=SysConfig&action=addmodule&step=Branding_Start');
+ Session::set('logo_name', $title);
}
chmod($this->svgFile, 0644);
$this->tarFile = '/tmp/bwlp-' . time() . '-' . mt_rand() . '.tgz';
@@ -83,7 +85,7 @@ class Branding_ProcessFile extends AddModule_Base
}
/**
- * Downlaod an svg file from the given url. This function has "wikipedia support", it tries to detect
+ * Download an svg file from the given url. This function has "wikipedia support", it tries to detect
* URLs in wikipedia articles or thumbnails and then find the actual svg file.
*
* @param string $svgName file to download to
@@ -91,8 +93,9 @@ class Branding_ProcessFile extends AddModule_Base
* @return boolean true of download succeded, false on download error (also returns true if downloaded file doesn't
* seem to be svg!)
*/
- private function downloadSvg($svgName, $url)
+ private function downloadSvg($svgName, $url, &$title)
{
+ $title = false;
// [wikipedia] Did someone paste a link to a thumbnail of the svg? Let's fix that...
if (preg_match('#^(.*)/thumb/(.*\.svg)/.*\.svg#', $url, $out)) {
$url = $out[1] . '/' . $out[2];
@@ -110,12 +113,14 @@ class Branding_ProcessFile extends AddModule_Base
// [wikipedia] Try to be nice and detect links that might give a hint where the svg can be found
if (preg_match_all('#href="([^"]*upload.wikimedia.org/[^"]*/[^"]*/[^"]*\.svg|[^"]+/[^"]+:[^"]+\.svg[^"]*)"#', $content, $out, PREG_PATTERN_ORDER)) {
+ if ($title === false && preg_match('#<title>([^<]*)</title>#i', $content, $tout))
+ $title = trim($tout[1]);
foreach ($out[1] as $res) {
- if (!strpos($res, 'action=edit')) {
- $new = $this->internetCombineUrl($url, html_entity_decode($res, ENT_COMPAT, 'UTF-8'));
- if ($new !== $url)
- break;
- }
+ if (strpos($res, 'action=edit') !== false)
+ continue;
+ $new = $this->internetCombineUrl($url, html_entity_decode($res, ENT_COMPAT, 'UTF-8'));
+ if ($new !== $url)
+ break;
}
if ($new === $url)
break;
@@ -124,7 +129,7 @@ class Branding_ProcessFile extends AddModule_Base
}
break;
}
- return true;
+ return false;
}
/**
@@ -141,7 +146,6 @@ class Branding_ProcessFile extends AddModule_Base
return $relative;
extract(parse_url($absolute));
-
$path = dirname($path);
if ($relative{0} === '/') {
@@ -188,18 +192,29 @@ class Branding_Finish extends AddModule_Base
protected function preprocessInternal()
{
$title = Request::post('title');
+ if ($title === false || empty($title))
+ $title = Session::get('logo_name');
if ($title === false || empty($title)) {
- Message::addError('missing-file'); // TODO: Ask for title again instead of starting over
+ Message::addError('missing-title'); // TODO: Ask for title again instead of starting over
Util::redirect('?do=SysConfig&action=addmodule&step=Branding_Start');
}
$tgz = Session::get('logo_tgz');
if ($tgz === false || !file_exists($tgz)) {
- Message::addError('missing-file');
+ Message::addError('error-read', $tgz);
+ Util::redirect('?do=SysConfig&action=addmodule&step=Branding_Start');
+ }
+ $module = ConfigModule::getInstance('Branding');
+ if ($module === false) {
+ Message::addError('error-read', 'branding.inc.php');
Util::redirect('?do=SysConfig&action=addmodule&step=Branding_Start');
}
- if (!ConfigModule_Branding::insert($title, $tgz))
+ $module->setData('tmpFile', $tgz);
+ if (!$module->insert($title))
+ Util::redirect('?do=SysConfig&action=addmodule&step=Branding_Start');
+ elseif (!$module->generate(true))
Util::redirect('?do=SysConfig&action=addmodule&step=Branding_Start');
Session::set('logo_tgz', false);
+ Session::set('logo_name', false);
Session::save();
// Yay
Message::addSuccess('module-added');
diff --git a/modules/sysconfig/addmodule_custommodule.inc.php b/modules/sysconfig/addmodule_custommodule.inc.php
index 66ba33a5..c42453db 100644
--- a/modules/sysconfig/addmodule_custommodule.inc.php
+++ b/modules/sysconfig/addmodule_custommodule.inc.php
@@ -39,7 +39,7 @@ class CustomModule_ProcessUpload extends AddModule_Base
Message::addError('upload-failed', Util::uploadErrorString($_FILES['modulefile']['error']));
Util::redirect('?do=SysConfig');
}
- $tempfile = '/tmp/bwlp-' . mt_rand(1, 100000) . '-' . crc32($_SERVER['REMOTE_HOST']) . '.tmp';
+ $tempfile = '/tmp/bwlp-' . mt_rand(1, 100000) . '-' . crc32($_SERVER['REMOTE_ADDR']) . '.tmp';
if (!move_uploaded_file($_FILES['modulefile']['tmp_name'], $tempfile)) {
Message::addError('error-write', $tempfile);
Util::redirect('?do=SysConfig');
@@ -108,7 +108,7 @@ class CustomModule_CompressModule extends AddModule_Base
}
// Recompress using task manager
$this->taskId = 'tgzmod' . mt_rand() . '-' . microtime(true);
- $destFile = CONFIG_TGZ_LIST_DIR . '/modules/mod-' . Util::sanitizeFilename($title) . '-' . microtime(true) . '.tgz';
+ $destFile = tempnam(sys_get_temp_dir(), 'bwlp-') . '.tgz';
Taskmanager::submit('RecompressArchive', array(
'id' => $this->taskId,
'inputFiles' => array($tempfile),
@@ -122,13 +122,20 @@ class CustomModule_CompressModule extends AddModule_Base
if ($status['statusCode'] != TASK_FINISHED) {
$this->taskError($status);
}
- // Seems ok, create entry in DB
- $ret = Database::exec("INSERT INTO configtgz_module (title, moduletype, filepath, contents) VALUES (:title, 'custom', :file, '')",
- array('title' => $title, 'file' => $destFile));
- if ($ret === false) {
- unlink($destFile);
- Util::traceError("Could not insert module into Database");
+ // Seems ok, create entry
+ $module = ConfigModule::getInstance('CustomModule');
+ if ($module === false) {
+ Message::addError('error-read', 'custommodule.inc.php');
+ Util::redirect('?do=SysConfig&action=addmodule&step=CustomModule_Start');
}
+ $module->setData('tmpFile', $destFile);
+ if (!$module->insert($title))
+ Util::redirect('?do=SysConfig&action=addmodule&step=CustomModule_Start');
+ elseif (!$module->generate(true))
+ Util::redirect('?do=SysConfig&action=addmodule&step=CustomModule_Start');
+ Session::set('mod_temp', false);
+ Session::save();
+ // Yay
Message::addSuccess('module-added');
Util::redirect('?do=SysConfig');
}
diff --git a/modules/syslog.inc.php b/modules/syslog.inc.php
index 7bd0c197..43a9bd28 100644
--- a/modules/syslog.inc.php
+++ b/modules/syslog.inc.php
@@ -42,6 +42,13 @@ class Page_SysLog extends Page
if (!empty($whereClause)) $whereClause = ' WHERE logtypeid ' . $not . ' IN (' . implode(', ', $whereClause) . ')';
}
if (!isset($whereClause) || empty($whereClause)) $whereClause = '';
+ if (Request::get('ip')) {
+ if (empty($whereClause))
+ $whereClause .= ' WHERE ';
+ else
+ $whereClause .= ' AND ';
+ $whereClause .= "clientip LIKE '" . preg_replace('/[^0-9\.\:]/', '', Request::get('ip')) . "%'";
+ }
$today = date('d.m.Y');
$yesterday = date('d.m.Y', time() - 86400);