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'); + } +}