Skip to content

Commit

Permalink
services: $_GET should be $_POST
Browse files Browse the repository at this point in the history
(cherry picked from commit 4918a81)
(cherry picked from commit f9d6ddc)
(cherry picked from commit cef101f)
(cherry picked from commit 4765db0)
(cherry picked from commit 9896d2e)
  • Loading branch information
AdSchellevis authored and fichtner committed Apr 17, 2016
1 parent 9a3805e commit 255dcd2
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 50 deletions.
62 changes: 37 additions & 25 deletions src/etc/inc/services.inc
Original file line number Diff line number Diff line change
Expand Up @@ -2687,7 +2687,7 @@ function services_get()
$services[] = array(
'pidfile' => '/var/run/lighttpd-api-dispatcher.pid',
'description' => gettext('Captive Portal'),
'confidg' => array(
'configd' => array(
'restart' => array('captiveportal restart'),
'start' => array('captiveportal start'),
'stop' => array('captiveportal stop'),
Expand Down Expand Up @@ -2784,33 +2784,45 @@ function get_service_status_icon($service, $withtext = true, $smallicon = false)

function get_service_control_links($service, $addname = false)
{
$stitle = $addname ? $service['name'] . ' ' : '';
$service_id = isset($service['id']) ? $service['id'] : '';
$service_title = $addname ? $service['name'] . ' ' : '';

$template = '<span data-service_id="%s" data-service_action="%s" data-service="%s" ';
$template .= 'data-toggle="tooltip" data-placement="bottom" title="%s" ';
$template .= 'class="btn btn-default %s %s"></span>' . PHP_EOL;

$output = '';

if (get_service_status($service)) {
/* restart service button */
$output .= "<a href='status_services.php?action=restart&amp;service={$service['name']}";
if (isset($service['id'])) {
$output .= "&amp;id={$service['id']}";
}
$output .= "' class=\"btn btn-default\">";
$output .= "<span data-toggle=\"tooltip\" data-placement=\"bottom\" title='" . sprintf(gettext("Restart %sService"),$stitle) . "' class=\"glyphicon glyphicon-refresh\"></span></a>\n";

/* stop service button */
$output .= "<a href='status_services.php?action=stop&amp;service={$service['name']}";
if (isset($service['id'])) {
$output .= "&amp;id={$service['id']}";
}
$output .= "' class=\"btn btn-default\">";
$output .= "<span data-toggle=\"tooltip\" data-placement=\"bottom\" title='" . sprintf(gettext("Stop %sService"),$stitle) . "' class=\"glyphicon glyphicon-stop\"></span></a>";
} else {
/* start service button */
$output .= "<a href='status_services.php?action=start&amp;service={$service['name']}";
if (isset($service['id'])) {
$output .= "&amp;id={$service['id']}";
}
$output .= "' class=\"btn btn-default\">";
$output .= "<span data-toggle=\"tooltip\" data-placement=\"bottom\" title='" . sprintf(gettext("Start %sService"),$stitle) . "' class=\"glyphicon glyphicon-play\"/></a>\n";
$output .= sprintf(
$template,
$service_id,
'restart',
$service['name'],
sprintf(gettext('Restart %sService'), $service_title),
'srv_status_act',
'glyphicon glyphicon-refresh'
);

$output .= sprintf(
$template,
$service_id,
'stop',
$service['name'],
sprintf(gettext('Stop %sService'), $service_title),
'srv_status_act',
'glyphicon glyphicon-stop'
);
} else {
$output .= sprintf(
$template,
$service_id,
'start',
$service['name'],
sprintf(gettext('Start %sService'), $service_title),
'srv_status_act',
'glyphicon glyphicon-play'
);
}

return $output;
Expand Down
28 changes: 22 additions & 6 deletions src/www/foot.inc
Original file line number Diff line number Diff line change
Expand Up @@ -63,11 +63,27 @@
<?php
endif; ?>

<!-- bootstrap script -->
<script type="text/javascript" src="/ui/js/bootstrap.min.js"></script>
<!-- Fancy select with search options -->
<script type="text/javascript" src="/ui/js/bootstrap-select.min.js"></script>
<!-- bootstrap dialog -->
<script src="/ui/js/bootstrap-dialog.min.js"></script>
<!-- bootstrap script -->
<script type="text/javascript" src="/ui/js/bootstrap.min.js"></script>
<!-- Fancy select with search options -->
<script type="text/javascript" src="/ui/js/bootstrap-select.min.js"></script>
<!-- bootstrap dialog -->
<script type="text/javascript" src="/ui/js/bootstrap-dialog.min.js"></script>
<!-- service control hook -->
<script type="text/javascript">
$( document ).ready(function() {
$('.srv_status_act').click(function(event){
event.preventDefault();
params = {};
params['action'] = $(this).data('service_action');
params['service'] = $(this).data('service');
params['id'] = $(this).data('service_id');
$.post('/status_services.php',params, function(data) {
// refresh page after service action via server
location.reload(true);
});
});
});
</script>
</body>
</html>
31 changes: 12 additions & 19 deletions src/www/status_services.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,42 +41,34 @@
require_once("interfaces.inc");
require_once("rrd.inc");

if (!empty($_GET['service'])) {
$service_name = $_GET['service'];
switch ($_GET['action']) {
if (!empty($_POST['service'])) {
$service_name = $_POST['service'];
switch ($_POST['action']) {
case 'restart':
$savemsg = service_control_restart($service_name, $_GET);
echo service_control_restart($service_name, $_POST);
break;
case 'start':
$savemsg = service_control_start($service_name, $_GET);
echo service_control_start($service_name, $_POST);
break;
case 'stop':
$savemsg = service_control_stop($service_name, $_GET);
echo service_control_stop($service_name, $_POST);
break;
}
if (isset($_SERVER['HTTP_REFERER'])) {
$referer = $_SERVER['HTTP_REFERER'];
if (strpos($referer, $_SERVER['PHP_SELF']) === false) {
/* redirect only if launched from somewhere else */
header('Location: '. $referer);
exit;
}
}
exit;
}

function service_control_start($name, $extras)
{
$msg = sprintf(gettext('%s has been started.'), htmlspecialchars($name));

if (isset($extras['id'])) {
if (!empty($extras['id'])) {
$filter['id'] = $extras['id'];
}

$service = find_service_by_name($name, $filter);
if (!isset($service['name'])) {
return sprintf(gettext("Could not start unknown service `%s'"), htmlspecialchars($name));
}

if (isset($service['configd']['start'])) {
foreach ($service['configd']['start'] as $cmd) {
configd_run($cmd);
Expand Down Expand Up @@ -107,7 +99,7 @@ function service_control_stop($name, $extras)
$msg = sprintf(gettext("%s has been stopped."), htmlspecialchars($name));
$filter = array();

if (isset($extras['id'])) {
if (!empty($extras['id'])) {
$filter['id'] = $extras['id'];
}

Expand Down Expand Up @@ -142,7 +134,7 @@ function service_control_restart($name, $extras)
{
$msg = sprintf(gettext("%s has been restarted."), htmlspecialchars($name));

if (isset($extras['id'])) {
if (!empty($extras['id'])) {
$filter['id'] = $extras['id'];
}

Expand Down Expand Up @@ -187,6 +179,7 @@ function service_control_restart($name, $extras)
?>

<body>

<?php include("fbegin.inc"); ?>
<section class="page-content-main">
<div class="container-fluid">
Expand All @@ -212,7 +205,7 @@ function service_control_restart($name, $extras)
<td><?=$service['description'];?></td>
<td>
<?=get_service_status_icon($service, true, true);?>
<?=get_service_control_links($service);?>
<?=get_service_control_links($service, false);?>
</td>
</tr>
<?php
Expand Down

0 comments on commit 255dcd2

Please sign in to comment.