summaryrefslogtreecommitdiffstats
path: root/modules/webinterface
diff options
context:
space:
mode:
authorJonathan Bauer2016-04-01 16:50:13 +0200
committerJonathan Bauer2016-04-01 16:50:13 +0200
commitdbc0d9614421e064cc62aacf116ebb783c83f2f3 (patch)
tree091844b8578ff1d9ac18edfd3cee3e63210133d7 /modules/webinterface
parent[ldapauth] Add homedir conf to ldap wizard (diff)
downloadslx-admin-dbc0d9614421e064cc62aacf116ebb783c83f2f3.tar.gz
slx-admin-dbc0d9614421e064cc62aacf116ebb783c83f2f3.tar.xz
slx-admin-dbc0d9614421e064cc62aacf116ebb783c83f2f3.zip
[merge] merging c3sl / fr - initial commit
Diffstat (limited to 'modules/webinterface')
-rw-r--r--modules/webinterface/config.json4
-rw-r--r--modules/webinterface/module.inc.php85
-rw-r--r--modules/webinterface/templates/httpd-restart.html6
-rw-r--r--modules/webinterface/templates/https.html60
-rw-r--r--modules/webinterface/templates/passwords.html25
5 files changed, 180 insertions, 0 deletions
diff --git a/modules/webinterface/config.json b/modules/webinterface/config.json
new file mode 100644
index 00000000..4e7fa5fb
--- /dev/null
+++ b/modules/webinterface/config.json
@@ -0,0 +1,4 @@
+{
+ "category":"content",
+ "enabled":"true"
+}
diff --git a/modules/webinterface/module.inc.php b/modules/webinterface/module.inc.php
new file mode 100644
index 00000000..c301dec9
--- /dev/null
+++ b/modules/webinterface/module.inc.php
@@ -0,0 +1,85 @@
+<?php
+
+class Page_WebInterface extends Page
+{
+
+ protected function doPreprocess()
+ {
+ User::load();
+ if (!User::hasPermission('superadmin')) {
+ Message::addError('no-permission');
+ Util::redirect('?do=Main');
+ }
+ switch (Request::post('action')) {
+ case 'https':
+ $this->actionConfigureHttps();
+ break;
+ case 'password':
+ $this->actionShowHidePassword();
+ break;
+ }
+ }
+
+ private function actionConfigureHttps()
+ {
+ $task = false;
+ switch (Request::post('mode')) {
+ case 'off':
+ $task = $this->setHttpsOff();
+ break;
+ case 'random':
+ $task = $this->setHttpsRandomCert();
+ break;
+ case 'custom':
+ $task = $this->setHttpsCustomCert();
+ break;
+ }
+ if (isset($task['id'])) {
+ Session::set('https-id', $task['id']);
+ Util::redirect('?do=WebInterface&show=httpsupdate');
+ }
+ }
+
+ private function actionShowHidePassword()
+ {
+ Property::setPasswordFieldType(Request::post('mode') === 'show' ? 'text' : 'password');
+ Util::redirect('?do=WebInterface');
+ }
+
+ protected function doRender()
+ {
+ Render::setTitle(Dictionary::translate('lang_titleWebinterface'));
+ if (Request::get('show') === 'httpsupdate') {
+ Render::addTemplate('httpd-restart', array('taskid' => Session::get('https-id')));
+ }
+ Render::addTemplate('https', array('httpsEnabled' => file_exists('/etc/lighttpd/server.pem')));
+ $data = array();
+ if (Property::getPasswordFieldType() === 'text')
+ $data['selected_show'] = 'checked';
+ else
+ $data['selected_hide'] = 'checked';
+ Render::addTemplate('passwords', $data);
+ }
+
+ private function setHttpsOff()
+ {
+ return Taskmanager::submit('LighttpdHttps', array());
+ }
+
+ private function setHttpsRandomCert()
+ {
+ return Taskmanager::submit('LighttpdHttps', array(
+ 'proxyip' => Property::getServerIp()
+ ));
+ }
+
+ private function setHttpsCustomCert()
+ {
+ return Taskmanager::submit('LighttpdHttps', array(
+ 'importcert' => Request::post('certificate', 'bla'),
+ 'importkey' => Request::post('privatekey', 'bla'),
+ 'importchain' => Request::post('cachain', '')
+ ));
+ }
+
+}
diff --git a/modules/webinterface/templates/httpd-restart.html b/modules/webinterface/templates/httpd-restart.html
new file mode 100644
index 00000000..cc84aafb
--- /dev/null
+++ b/modules/webinterface/templates/httpd-restart.html
@@ -0,0 +1,6 @@
+<div class="panel panel-default">
+ <div class="panel-heading">{{lang_applyingSettings}}</div>
+ <div class="panel-body">
+ <div data-tm-id="{{taskid}}" data-tm-log="error">{{lang_installAndRestart}}</div>
+ </div>
+</div>
diff --git a/modules/webinterface/templates/https.html b/modules/webinterface/templates/https.html
new file mode 100644
index 00000000..c6161cd6
--- /dev/null
+++ b/modules/webinterface/templates/https.html
@@ -0,0 +1,60 @@
+<form action="?do=WebInterface" method="post">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="action" value="https">
+ <div class="panel panel-default">
+ <div class="panel-heading">{{lang_httpsSettings}}</div>
+ <div class="panel-body">
+ <p>{{lang_description}}</p>
+ {{^httpsEnabled}}
+ <p>{{lang_HttpsIsDisabled}}</p>
+ {{/httpsEnabled}}
+ {{#httpsEnabled}}
+ <div class="input-group" onclick="$('#moff').prop('checked', true);
+ $('#wcustom').hide()">
+ <span class="input-group-addon"><input id="moff" type="radio" name="mode" value="off"></span>
+ <span class="form-control">
+ {{lang_noHttps}}
+ </span>
+ </div>
+ {{/httpsEnabled}}
+ <div class="input-group" onclick="$('#mrandom').prop('checked', true);
+ $('#wcustom').hide()">
+ <span class="input-group-addon"><input id="mrandom" type="radio" name="mode" value="random"></span>
+ <span class="form-control">
+ {{lang_randomCert}}
+ </span>
+ </div>
+ <div class="input-group" onclick="$('#mcustom').prop('checked', true);
+ $('#wcustom').show()">
+ <span class="input-group-addon"><input id="mcustom" type="radio" name="mode" value="custom"></span>
+ <span class="form-control">
+ {{lang_customCert}}
+ </span>
+ </div>
+ <div class="well well-sm" style="display:none" id="wcustom">
+ {{lang_certificate}}
+ <pre class="small">
+-----BEGIN CERTIFICATE-----
+MIIFfTCCA...
+.....
+-----END CERTIFICATE-----</pre>
+ <textarea name="certificate" class="form-control small" cols="101" rows="10"></textarea>
+ <hr>
+ {{lang_privateKey}}
+ <pre class="small">
+-----BEGIN PRIVATE KEY-----
+MIIFfTCCA...
+.....
+-----END PRIVATE KEY-----</pre>
+ <textarea name="privatekey" class="form-control small" cols="101" rows="10"></textarea>
+ <hr>
+ {{lang_caChain}}
+ <textarea name="cachain" class="form-control small" cols="101" rows="10"></textarea>
+ <hr>
+ </div>
+ <div class="pull-right">
+ <button type="submit" class="btn btn-primary">{{lang_save}}</button>
+ </div>
+ </div>
+ </div>
+</form>
diff --git a/modules/webinterface/templates/passwords.html b/modules/webinterface/templates/passwords.html
new file mode 100644
index 00000000..f9fda016
--- /dev/null
+++ b/modules/webinterface/templates/passwords.html
@@ -0,0 +1,25 @@
+<form action="?do=WebInterface" method="post">
+ <input type="hidden" name="token" value="{{token}}">
+ <input type="hidden" name="action" value="password">
+ <div class="panel panel-default">
+ <div class="panel-heading">{{lang_passwordFields}}</div>
+ <div class="panel-body">
+ <p>{{lang_description}}</p>
+ <div class="input-group" onclick="$('#pmshow').prop('checked', true)">
+ <span class="input-group-addon"><input id="pmshow" type="radio" name="mode" value="show" {{selected_show}}></span>
+ <span class="form-control">
+ {{lang_showPasswords}}
+ </span>
+ </div>
+ <div class="input-group" onclick="$('#pmhide').prop('checked', true)">
+ <span class="input-group-addon"><input id="pmhide" type="radio" name="mode" value="hide" {{selected_hide}}></span>
+ <span class="form-control">
+ {{lang_hidePasswords}}
+ </span>
+ </div>
+ <div class="pull-right">
+ <button type="submit" class="btn btn-primary">{{lang_save}}</button>
+ </div>
+ </div>
+ </div>
+</form>