diff --git a/includes/misc.inc.php b/includes/misc.inc.php
index 4c88c01..3f77ee6 100644
--- a/includes/misc.inc.php
+++ b/includes/misc.inc.php
@@ -308,6 +308,27 @@ function rotatelogs() {
}
+function listrotatedlogs() {
+ global $logging, $logsdirectory;
+ if ($logging !== TRUE)
+ return FALSE;
+
+ $list = scandir($logsdirectory,SCANDIR_SORT_DESCENDING);
+
+ if($list === FALSE) {
+ writelog("Logs directory cannot read.");
+ return FALSE;
+ }
+
+ $list=array_filter($list,
+ function ($val) {
+ return(preg_match('/^[0-9]{4}-[0-9]{2}-[0-9]{2}-[0-9]{6}\.json/',$val) == 1);
+ }
+ );
+
+ return $list;
+}
+
function writelog($line) {
global $logging;
if ($logging !== TRUE)
diff --git a/index.php b/index.php
index 17c5b14..5165946 100644
--- a/index.php
+++ b/index.php
@@ -189,6 +189,21 @@ if ($blocklogin === TRUE) {
+
+
Log entries being viewed:
+
+
+
+
@@ -925,18 +940,18 @@ $(document).ready(function () {
});
- $('#Logs').hide();
+ $('#logs').hide();
$('#Users').hide();
$('#AboutMe').hide();
$('#aboutme').click(function () {
- $('#Logs').hide();
+ $('#logs').hide();
$('#Users').hide();
$('#MasterZones').hide();
$('#SlaveZones').hide();
$('#AboutMe').show();
});
$('#useradmin').click(function () {
- $('#Logs').hide();
+ $('#logs').hide();
$('#MasterZones').hide();
$('#SlaveZones').hide();
$('#AboutMe').hide();
@@ -944,7 +959,7 @@ $(document).ready(function () {
$('#Users').show();
});
$('#zoneadmin').click(function () {
- $('#Logs').hide();
+ $('#logs').hide();
$('#Users').hide();
$('#AboutMe').hide();
$('#MasterZones').show();
@@ -955,8 +970,10 @@ $(document).ready(function () {
$('#AboutMe').hide();
$('#MasterZones').hide();
$('#SlaveZones').hide();
- $('#Logs').jtable('load');
- $('#Logs').show();
+ $('#Logs').jtable('load', {
+ logfile: $('#logfile').val()
+ });
+ $('#logs').show();
});
$('#Users').jtable({
title: 'Users',
@@ -1032,6 +1049,7 @@ $(document).ready(function () {
$( this ).dialog( 'close' );
$('#Logs').find('.jtable-title-text').text('Logs (filtered)');
$('#Logs').jtable('load', {
+ logfile: $('#logfile').val(),
user: $('#searchlogs-user').val(),
entry: $('#searchlogs-entry').val()
});
@@ -1041,7 +1059,9 @@ $(document).ready(function () {
$('#searchlogs-entry').val('');
$( this ).dialog( 'close' );
$('#Logs').find('.jtable-title-text').text('Logs');
- $('#Logs').jtable('load');
+ $('#Logs').jtable('load', {
+ logfile: $('#logfile').val()
+ });
return false;
}
}
@@ -1060,6 +1080,7 @@ $(document).ready(function () {
Ok: function() {
$.get("logs.php?action=rotate");
$( this ).dialog( "close" );
+ $('#logfile').val('');
$('#Logs').jtable('load');
},
Cancel: function() {
@@ -1084,6 +1105,7 @@ $(document).ready(function () {
Ok: function() {
$.get("logs.php?action=clear");
$( this ).dialog( "close" );
+ $('#logfile').val('');
$('#Logs').jtable('load');
},
Cancel: function() {
@@ -1141,6 +1163,15 @@ $(document).ready(function () {
}
}
});
+
+ $('#logfile').change(function () {
+ $('#Logs').jtable('load', {
+ logfile: $('#logfile').val(),
+ user: $('#searchlogs-user').val(),
+ entry: $('#searchlogs-entry').val()
+ });
+ });
+
$('#MasterZones').jtable('load');
$('#SlaveZones').jtable('load');
diff --git a/logs.php b/logs.php
index 20a227f..816ef3e 100644
--- a/logs.php
+++ b/logs.php
@@ -24,10 +24,21 @@ switch ($_GET['action']) {
case "list":
global $logging;
- if ($logging !== TRUE)
+ if ($logging !== TRUE) {
jtable_respond(null, 'error', 'Logging is disabled');
+ break;
+ }
- $entries=getlogs();
+ if(!empty($_POST['logfile'])) {
+ if(preg_match('/^[0-9]{4}-[0-9]{2}-[0-9]{2}-[0-9]{6}\.json/',$_POST['logfile']) == 1) {
+ $entries=json_decode(file_get_contents($logsdirectory . "/" . $_POST['logfile']),true);
+ } else {
+ jtable_respond(null, 'error', "Can't find log file");
+ break;
+ }
+ } else {
+ $entries=getlogs();
+ }
if(!empty($_POST['user'])) {
$entries=array_filter($entries,
diff --git a/rotate-logs.php b/rotate-logs.php
new file mode 100644
index 0000000..3ce3793
--- /dev/null
+++ b/rotate-logs.php
@@ -0,0 +1,16 @@
+';
+ rotatelogs();
+ } else {
+ jtable_respond(null, 'error', 'Invalid action');
+ }
+}