diff --git a/src/etc/inc/xmlrpc/service.inc b/src/etc/inc/xmlrpc/service.inc new file mode 100644 index 000000000..9fe833df7 --- /dev/null +++ b/src/etc/inc/xmlrpc/service.inc @@ -0,0 +1,105 @@ + 0) { + uasort($services, "service_name_compare"); + } + foreach ($services as &$service) { + $service['status'] = get_service_status($service); + } + return $services; +} + +/** + * stop service + */ +function stop_service_xmlrpc($params) +{ + $filter = array(); + $name = $params["service"]; + if (!empty($params["id"])) { + $filter['id'] = $params["id"]; + } + + return service_control_stop($name, $filter); +} + +/** + * start service + */ +function start_service_xmlrpc($params) +{ + $filter = array(); + $name = $params["service"]; + if (!empty($params["id"])) { + $filter['id'] = $params["id"]; + } + + return service_control_start($name, $filter); +} + +/** + * restart service + */ +function restart_service_xmlrpc($params) +{ + $filter = array(); + $name = $params["service"]; + if (!empty($params["id"])) { + $filter['id'] = $params["id"]; + } + + return service_control_restart($name, $filter); +} + +/** + * generate all templates + */ +function configd_reload_all_templates_xmlrpc($params) +{ + configd_run('template reload *'); + return array("status" => "done"); +} diff --git a/src/opnsense/mvc/app/models/OPNsense/Base/Menu/Menu.xml b/src/opnsense/mvc/app/models/OPNsense/Base/Menu/Menu.xml index 5a503ea1e..d25ddb447 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Base/Menu/Menu.xml +++ b/src/opnsense/mvc/app/models/OPNsense/Base/Menu/Menu.xml @@ -36,6 +36,7 @@ + diff --git a/src/opnsense/mvc/app/models/OPNsense/Core/ACL_Legacy_Page_Map.json b/src/opnsense/mvc/app/models/OPNsense/Core/ACL_Legacy_Page_Map.json index e15cb8e2b..53fc816c2 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Core/ACL_Legacy_Page_Map.json +++ b/src/opnsense/mvc/app/models/OPNsense/Core/ACL_Legacy_Page_Map.json @@ -769,6 +769,13 @@ "carp_status.php*" ] }, + "page-status-habackup": { + "name": "WebCfg - Status: HA backup page", + "descr": "Allow access to the 'Status: HA backup' page.", + "match": [ + "status_habackup.php" + ] + }, "page-status-dhcpleases": { "name": "WebCfg - Status: DHCP leases page", "descr": "Allow access to the 'Status: DHCP leases' page.", diff --git a/src/www/status_habackup.php b/src/www/status_habackup.php new file mode 100644 index 000000000..e360e54e6 --- /dev/null +++ b/src/www/status_habackup.php @@ -0,0 +1,318 @@ +debug=$debug; + $client->setCredentials($username, $hasync['password']); + if ($client->query($method, $params)) { + return $client->getResponse(); + } + } + return false; +} + +function get_xmlrpc_backup_version() +{ + return xmlrpc_exec('opnsense.firmware_version'); +} + +function get_xmlrpc_services() +{ + return xmlrpc_exec('opnsense.list_services'); +} + + +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + if (!empty($_POST["action"])) { + switch ($_POST["action"]) { + case 'stop': + $result=xmlrpc_exec('opnsense.stop_service', array("service" => $_POST['service'], "id" => $_POST['id'])); + echo json_encode(array("response" => $result)); + break; + case 'start': + $result=xmlrpc_exec('opnsense.start_service', array("service" => $_POST['service'], "id" => $_POST['id'])); + echo json_encode(array("response" => $result)); + break; + case 'restart': + $result=xmlrpc_exec('opnsense.restart_service', array("service" => $_POST['service'], "id" => $_POST['id'])); + echo json_encode(array("response" => $result)); + break; + case 'reload_templates': + xmlrpc_exec('opnsense.configd_reload_all_templates'); + echo json_encode(array("status" => "done")); + break; + } + } + exit; +} + +$carp_backup_version = get_xmlrpc_backup_version(); +include("head.inc"); +?> + + + + + + +
+
+
+ + + +
+
+
+ + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+ + + + + + + + + + + + + + $service):?> + + + + + + + + + + + + + + + + + + + + +
+
+ "> + "> + + + " + data-service_name="" + data-toggle="tooltip" + data-placement="bottom" + title="" + class="btn btn-xs btn-default xmlrpc_srv_status_act glyphicon glyphicon-refresh"> + + " + data-service_name="" + data-toggle="tooltip" + data-placement="bottom" + title="" + class="btn btn-xs btn-default xmlrpc_srv_status_act glyphicon glyphicon-stop"> + + + " + data-service_name="" + data-toggle="tooltip" + data-placement="bottom" + title="" + class="btn btn-xs btn-default xmlrpc_srv_status_act glyphicon glyphicon-play"> + + +
+ + +
+ + +
+
+ + +
+
+
+
+
+ + +
+
+
+ +