summaryrefslogtreecommitdiffstats
path: root/modules/serversetup.inc.php
diff options
context:
space:
mode:
authorSimon Rettberg2014-05-21 18:41:25 +0200
committerSimon Rettberg2014-05-21 18:41:25 +0200
commit04123643da499bac9eed8e8d1198a4c69148075f (patch)
tree7da0dd36344624df67926b5f6312f11eca24e040 /modules/serversetup.inc.php
parentJS Stuff for Taskmanager interaction (diff)
downloadslx-admin-04123643da499bac9eed8e8d1198a4c69148075f.tar.gz
slx-admin-04123643da499bac9eed8e8d1198a4c69148075f.tar.xz
slx-admin-04123643da499bac9eed8e8d1198a4c69148075f.zip
Server Setup page
Diffstat (limited to 'modules/serversetup.inc.php')
-rw-r--r--modules/serversetup.inc.php72
1 files changed, 72 insertions, 0 deletions
diff --git a/modules/serversetup.inc.php b/modules/serversetup.inc.php
new file mode 100644
index 00000000..3f2b8768
--- /dev/null
+++ b/modules/serversetup.inc.php
@@ -0,0 +1,72 @@
+<?php
+
+class Page_ServerSetup extends Page
+{
+ private $taskStatus;
+ private $currentAddress;
+
+ protected function doPreprocess()
+ {
+ User::load();
+
+ if (!User::hasPermission('superadmin')) {
+ Message::addError('no-permission');
+ Util::redirect('?do=Main');
+ }
+
+ $this->currentAddress = Property::getServerIp();
+ $newAddress = Request::post('ip', 'none');
+
+ $this->taskStatus = Taskmanager::submit('LocalAddressesList', array());
+
+ if ($this->taskStatus === false) {
+ Util::redirect('?do=Main');
+ }
+
+ if ($this->taskStatus['statusCode'] === TASK_WAITING) {
+ $this->taskStatus = Taskmanager::waitComplete($this->taskStatus['id']);
+ }
+
+ $sortIp = array();
+ foreach (array_keys($this->taskStatus['data']['addresses']) as $key) {
+ $item =& $this->taskStatus['data']['addresses'][$key];
+ if (!isset($item['ip'])
+ || !preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $item['ip'])
+ || substr($item['ip'], 0, 4) === '127.') {
+ unset($this->taskStatus['data']['addresses'][$key]);
+ continue;
+ }
+ if ($this->currentAddress === $item['ip']) {
+ $item['default'] = true;
+ }
+ $sortIp[] = $item['ip'];
+ }
+ unset($item);
+ array_multisort($sortIp, SORT_STRING, $this->taskStatus['data']['addresses']);
+
+ if ($newAddress !== 'none') {
+ // New address is to be set - check if it is valid
+ $valid = false;
+ foreach ($this->taskStatus['data']['addresses'] as $item) {
+ if ($item['ip'] !== $newAddress) continue;
+ $valid = true;
+ break;
+ }
+ if ($valid) {
+ Property::setServerIp($newAddress);
+ } else {
+ Message::addError('invalid-ip', $newAddress);
+ }
+ Util::redirect();
+ }
+
+ }
+
+ protected function doRender()
+ {
+ Render::addTemplate('page-serversetup', array(
+ 'ips' => $this->taskStatus['data']['addresses'],
+ 'token' => Session::get('token')
+ ));
+ }
+} \ No newline at end of file