diff options
Diffstat (limited to 'modules/webinterface')
-rw-r--r-- | modules/webinterface/config.json | 4 | ||||
-rw-r--r-- | modules/webinterface/module.inc.php | 85 | ||||
-rw-r--r-- | modules/webinterface/templates/httpd-restart.html | 6 | ||||
-rw-r--r-- | modules/webinterface/templates/https.html | 60 | ||||
-rw-r--r-- | modules/webinterface/templates/passwords.html | 25 |
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> |