From cdf027678dff6a98053c5b415cd94120888b592f Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Mon, 9 Mar 2015 16:29:16 +0100 Subject: [PATCH] work in progress proxy feature --- .../OPNsense/Proxy/Api/ServiceController.php | 19 ++++++++ .../OPNsense/Proxy/IndexController.php | 1 + .../mvc/app/views/OPNsense/Proxy/index.volt | 45 +++++++++++-------- src/opnsense/www/js/opnsense_ui.js | 11 +++-- 4 files changed, 54 insertions(+), 22 deletions(-) diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Proxy/Api/ServiceController.php b/src/opnsense/mvc/app/controllers/OPNsense/Proxy/Api/ServiceController.php index 18ed29934..f036fe5be 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Proxy/Api/ServiceController.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Proxy/Api/ServiceController.php @@ -91,4 +91,23 @@ class ServiceController extends ApiControllerBase return array("status" => $status); } + + /** + * reconfigure squid, generate config and reload + */ + public function reconfigureAction() + { + $backend = new Backend(); + $backend->sendEvent("template reload OPNsense.Proxy"); + + $runStatus = $this->statusAction(); + + if ($runStatus == "running") { + $backend->sendEvent("service reconfigure proxy"); + } else { + $this->startAction(); + } + + return array("status" => "ok"); + } } diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Proxy/IndexController.php b/src/opnsense/mvc/app/controllers/OPNsense/Proxy/IndexController.php index 016978020..1f08a03b9 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Proxy/IndexController.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Proxy/IndexController.php @@ -36,6 +36,7 @@ class IndexController extends \OPNsense\Base\IndexController { public function indexAction() { + $this->view->title = "Proxy"; $this->view->pick('OPNsense/Proxy/index'); } } diff --git a/src/opnsense/mvc/app/views/OPNsense/Proxy/index.volt b/src/opnsense/mvc/app/views/OPNsense/Proxy/index.volt index 0fade3279..8e07a0921 100644 --- a/src/opnsense/mvc/app/views/OPNsense/Proxy/index.volt +++ b/src/opnsense/mvc/app/views/OPNsense/Proxy/index.volt @@ -10,24 +10,26 @@ // form event handlers $("#save").click(function(){ - data = getFormData("frm_general"); - ajaxCall(url="/api/proxy/settings/set",sendData=data,callback=function(data,status){ - if ( status == "success") { - handleFormValidation("frm_general",data['validations']); - if (data['validations'] != undefined) { + saveFormToEndpoint(url="/api/proxy/settings/set",formid="frm_general",callback_ok=function(){ + // on correct save, perform reconfigure. set progress animation when reloading + $("#frm_general_progress").addClass("fa fa-spinner fa-pulse"); + + // + ajaxCall(url="/api/proxy/service/reconfigure", sendData={}, callback=function(data,status){ + // when done, disable progress animation. + $("#frm_general_progress").removeClass("fa fa-spinner fa-pulse"); + + if (status != "success" || data['status'] != 'ok' ) { + // fix error handling BootstrapDialog.show({ type:BootstrapDialog.TYPE_WARNING, - title: 'Input validation', - message: 'Please correct validation errors in form' + title: 'Proxy', + message: JSON.stringify(data) }); } - } - // TODO: implement error handling - //alert(status); + }); }); - - }); }); @@ -42,24 +44,29 @@
- +
- - - + + + {{ partial("layout_partials/form_input_tr", ['id': 'general.enabled', 'label':'enabled', 'type':'checkbox', - 'help':'gfvjhgghfh' + 'help':'test' + ]) + }} + {{ partial("layout_partials/form_input_tr", + ['id': 'general.port', + 'label':'port', + 'type':'text' ]) }} - {{ partial("layout_partials/form_input_tr", ['id': 'general.port','label':'test','type':'text']) }} - +
diff --git a/src/opnsense/www/js/opnsense_ui.js b/src/opnsense/www/js/opnsense_ui.js index 908a17ca2..8b7f83db2 100644 --- a/src/opnsense/www/js/opnsense_ui.js +++ b/src/opnsense/www/js/opnsense_ui.js @@ -7,20 +7,25 @@ * @param url endpoint url * @param formid parent id to grep input data from */ -function saveFormToEndpoint(url,formid) { +function saveFormToEndpoint(url,formid,callback_ok) { data = getFormData(formid); ajaxCall(url=url,sendData=data,callback=function(data,status){ if ( status == "success") { + // update field validation + handleFormValidation(formid,data['validations']); + // if there are validation issues, update our screen and show a dialog. if (data['validations'] != undefined) { - // update field validation - handleFormValidation(formid,data['validations']); BootstrapDialog.show({ type:BootstrapDialog.TYPE_WARNING, title: 'Input validation', message: 'Please correct validation errors in form' }); + } else if ( callback_ok != undefined ) { + // execute callback function + callback_ok(); } + } else { // error handling, show internal errors // Normally the form should only return validation issues, if other things go wrong throw an error.