<?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;
    }
}