Merge pull request #3971 from florianbeer/syslog

Syslog page updates
This commit is contained in:
Neil Lathwood 2016-08-05 22:11:41 +01:00 committed by GitHub
commit d68949b724
4 changed files with 106 additions and 77 deletions

View File

@ -5,6 +5,7 @@ $common_output[] = '
<table id="syslog" class="table table-hover table-condensed table-striped">
<thead>
<tr>
<th data-column-id="priority">&nbsp;</th>
<th data-column-id="timestamp" data-order="desc">Datetime</th>
<th data-column-id="device_id">Hostname</th>
<th data-column-id="program">Program</th>
@ -21,7 +22,11 @@ var syslog_grid = $("#syslog").bootgrid({
{
return {
id: "syslog",
device: "' .mres($vars['device']) .'",
device: "'.mres($vars['device']) .'",
program: "'.mres($vars['program']).'",
priority: "'.mres($vars['priority']).'",
to: "'.mres($vars['to']).'",
from: "'.mres($vars['from']).'",
};
},
url: "ajax_table.php"

View File

@ -17,6 +17,11 @@ if (is_numeric($_POST['device'])) {
$param[] = $_POST['device'];
}
if ($_POST['priority']) {
$where .= ' AND S.priority = ?';
$param[] = $_POST['priority'];
}
if (!empty($_POST['from'])) {
$where .= ' AND timestamp >= ?';
$param[] = $_POST['from'];
@ -64,7 +69,8 @@ $sql = "SELECT S.*, DATE_FORMAT(timestamp, '".$config['dateformat']['mysql']['co
foreach (dbFetchRows($sql, $param) as $syslog) {
$dev = device_by_id_cache($syslog['device_id']);
$response[] = array(
'timestamp' => $syslog['date'],
'priority' => generate_priority_icon($syslog['priority']),
'timestamp' => '<div style="white-space:nowrap;">'.$syslog['date'].'</div>',
'device_id' => generate_device_link($dev, shorthost($dev['hostname'])),
'program' => $syslog['program'],
'msg' => htmlspecialchars($syslog['msg']),

View File

@ -10,86 +10,82 @@ if ($vars['action'] == 'expunge' && $_SESSION['userlevel'] >= '10') {
}
$pagetitle[] = 'Syslog';
print_optionbar_start();
?>
<div class="table-responsive">
<table id="syslog" class="table table-hover table-condensed table-striped">
<thead>
<tr>
<th data-column-id="timestamp" data-order="desc">Datetime</th>
<th data-column-id="device_id">Hostname</th>
<th data-column-id="program">Program</th>
<th data-column-id="msg">Message</th>
</tr>
</thead>
</table>
<div id="{{ctx.id}}" class="{{css.header}}">
<div class="row">
<div class="col-sm-9 actionBar">
<div class="pull-left">
<form method="post" action="" class="form-inline" role="form" id="result_form">
<div class="form-group">
<select name="device" id="device" class="form-control input-sm">
<option value="">All Devices</option>
<?php
foreach (get_all_devices() as $hostname) {
$device_id = getidbyname($hostname);
if (device_permitted($device_id)) {
echo '"<option value="'.$device_id.'"';
if ($device_id == $vars['device']) {
echo ' selected';
}
echo '>'.$hostname.'</option>';
}
}
?>
</select>
</div>
<div class="form-group">
<select name="program" id="program" class="form-control input-sm">
<option value="">All Programs</option>
<?php
foreach (dbFetchRows('SELECT DISTINCT `program` FROM `syslog` ORDER BY `program`') as $data) {
echo '"<option value="'.$data['program'].'"';
if ($data['program'] == $vars['program']) {
echo ' selected';
}
echo '>'.$data['program'].'</option>';
}
?>
</select>
</div>
<div class="form-group">
<select name="priority" id="priority" class="form-control input-sm">
<option value="">All Priorities</option>
<?php
foreach (dbFetchRows('SELECT DISTINCT `priority` FROM `syslog` ORDER BY `level`') as $data) {
echo '"<option value="'.$data['priority'].'"';
if ($data['priority'] == $vars['priority']) {
echo ' selected';
}
echo '>'.$data['priority'].'</option>';
}
?>
</select>
</div>
<div class="form-group">
<input name="from" type="text" class="form-control input-sm" id="dtpickerfrom" maxlength="16" value="<?php echo $vars['from']; ?>" placeholder="From" data-date-format="YYYY-MM-DD HH:mm">
</div>
<div class="form-group">
<input name="to" type="text" class="form-control input-sm" id="dtpickerto" maxlength="16" value="<?php echo $vars['to']; ?>" placeholder="To" data-date-format="YYYY-MM-DD HH:mm">
</div>
<button type="submit" class="btn btn-default input-sm">Filter</button>
</form>
</div>
</div>
<div class="col-sm-3 actionBar">
<p class="{{css.actions}}"></p>
</div>
</div>
</div>
<script>
var grid = $("#syslog").bootgrid({
ajax: true,
templates: {
header: "<div id=\"{{ctx.id}}\" class=\"{{css.header}}\"><div class=\"row\">"+
"<div class=\"col-sm-9 actionBar\"><span class=\"pull-left\">"+
"<form method=\"post\" action=\"\" class=\"form-inline\" role=\"form\" id=\"result_form\">"+
"<div class=\"form-group\">"+
"<select name=\"device\" id=\"device\" class=\"form-control input-sm\">"+
"<option value=\"\">All Devices</option>"+
<?php
foreach (get_all_devices() as $hostname) {
$device_id = getidbyname($hostname);
if (device_permitted($device_id)) {
echo '"<option value=\"'.$device_id.'\"';
if ($device_id == $vars['device']) {
echo ' selected';
}
echo '>'.$hostname.'</option>"+';
}
}
?>
"</select>"+
"</div>"+
"<div class=\"form-group\">"+
"<select name=\"program\" id=\"program\" class=\"form-control input-sm\">"+
"<option value=\"\">All Programs</option>"+
<?php
foreach (dbFetchRows('SELECT DISTINCT `program` FROM `syslog` ORDER BY `program`') as $data) {
echo '"<option value=\"'.$data['program'].'\"';
if ($data['program'] == $vars['program']) {
echo ' selected';
}
echo '>'.$data['program'].'</option>"+';
}
?>
"</select>"+
"</div>"+
"<div class=\"form-group\">"+
"<input name=\"from\" type=\"text\" class=\"form-control input-sm\" id=\"dtpickerfrom\" maxlength=\"16\" value=\"<?php echo $vars['from']; ?>\" placeholder=\"From\" data-date-format=\"YYYY-MM-DD HH:mm\">"+
"</div>"+
"<div class=\"form-group\">"+
"<input name=\"to\" type=\"text\" class=\"form-control input-sm\" id=\"dtpickerto\" maxlength=\"16\" value=\"<?php echo $vars['to']; ?>\" placeholder=\"To\" data-date-format=\"YYYY-MM-DD HH:mm\">"+
"</div>"+
"<button type=\"submit\" class=\"btn btn-default input-sm\">Filter</button>"+
"</form></span></div>"+
"<div class=\"col-sm-3 actionBar\"><p class=\"{{css.actions}}\"></p></div></div></div>"
},
post: function ()
{
return {
id: "syslog",
device: '<?php echo htmlspecialchars($vars['device']); ?>',
program: '<?php echo htmlspecialchars($vars['program']); ?>',
to: '<?php echo htmlspecialchars($vars['to']); ?>',
from: '<?php echo htmlspecialchars($vars['from']); ?>',
};
},
url: "ajax_table.php"
});
$(function () {
$("#dtpickerfrom").datetimepicker();
$("#dtpickerfrom").on("dp.change", function (e) {
@ -109,3 +105,10 @@ $(function () {
}
});
</script>
<?php
print_optionbar_end();
require_once 'includes/common/syslog.inc.php';
echo implode('',$common_output);
?>

View File

@ -16,6 +16,21 @@
* the source code distribution for details.
*/
function generate_priority_icon($priority) {
$map = array(
"emerg" => "server_delete",
"alert" => "cancel",
"crit" => "application_lightning",
"err" => "application_delete",
"warning" => "application_error",
"notice" => "application_edit",
"info" => "application",
"debug" => "bug",
);
return '<img src="images/16/' . $map[$priority] .'.png" title="' . $priority . '">';
}
function format_number_short($number, $sf) {
// This formats a number so that we only send back three digits plus an optional decimal point.
// Example: 723.42 -> 723 72.34 -> 72.3 2.23 -> 2.23