<?php include_once 'includes/config.inc.php'; include_once 'includes/session.inc.php'; include_once 'includes/misc.inc.php'; if (!is_csrf_safe()) { header('Status: 403'); header('Location: ./index.php'); jtable_respond(null, 'error', 'Authentication required'); } if (!is_adminuser()) { header('Status: 403'); jtable_respond(null, 'error', 'You need adminprivileges to get here'); } if (!isset($_GET['action'])) { header('Status: 400'); jtable_respond(null, 'error', 'No action given'); } if ($logging !== true) { jtable_respond(null, 'error', 'Logging is disabled'); } else { switch ($_GET['action']) { case 'list': 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, function ($val) { return(stripos($val['user'], $_POST['user']) !== false); } ); } if (!empty($_POST['entry'])) { $entries=array_filter( $entries, function ($val) { return(stripos($val['log'], $_POST['entry']) !== false); } ); } jtable_respond($entries); break; case 'export': if (!empty($_GET['logfile'])) { if (preg_match('/^[0-9]{4}-[0-9]{2}-[0-9]{2}-[0-9]{6}\.json/', $_GET['logfile']) == 1) { $entries=json_decode(file_get_contents($logsdirectory . '/' . $_GET['logfile']), true); } else { jtable_respond(null, 'error', "Can't find log file"); break; } } else { $entries=getlogs(); } if (defined('JSON_PRETTY_PRINT')) { print json_encode($entries, JSON_PRETTY_PRINT); } else { print json_encode($entries); } break; case 'clear': if ($allowclearlogs === true) { clearlogs(); } else { jtable_respond(null, 'error', 'Invalid action'); } break; case 'rotate': if ($allowrotatelogs === true) { rotatelogs(); } else { jtable_respond(null, 'error', 'Invalid action'); } break; default: jtable_respond(null, 'error', 'Invalid action'); break; } }