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

switch ($_GET['action']) {

case "list":
    global $logging;
    if ($logging !== TRUE) {
        jtable_respond(null, 'error', 'Logging is disabled');
        break;
    }

    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 "delete":
    if ($emailaddress != '' and delete_user($emailaddress) !== FALSE) {
        jtable_respond(null, 'delete');
    } else {
        jtable_respond(null, 'error', 'Could not delete user');
    }
    break;

case "export":
    print json_encode(getlogs());
    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;
}