<?php
@include_once 'configuration.server.php';
set_time_limit(0);
ini_set("memory_limit",-1);
function recursiveDirectoryIterator($path,$search,$base)
{
    $out = [];
    $string = trim(urldecode($search));
    $arr  = explode(' ',$string);
    set_time_limit(0);
    ini_set("memory_limit",-1);

    foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $file)
    {
        if (!$file->isDir())
        {
            if(count($arr) > 1)
            {
                if(stristr($file->getFilename(),$string))
                {
                    $seprator = explode($base,$file->getPathname());
                    if(isset($seprator[1]))
                    {
                        $out['files'][] = [
                            str_replace(DIRECTORY_SEPARATOR,'/',trim($seprator[1],DIRECTORY_SEPARATOR))
                        ];
                    }
                }
            }
            else
            {
                foreach ($arr as $srchfile)
                {
                    if (preg_match("/(?:^|[^a-zA-Z])" . preg_quote($srchfile, '/') . "(?:$|[^a-zA-Z])/i", $file->getPathname()))
                    {
                        $seprator = explode($base,$file->getPathname());
                        if(isset($seprator[1]))
                        {
                            $out['files'][] = [
                                str_replace(DIRECTORY_SEPARATOR,'/',trim($seprator[1],DIRECTORY_SEPARATOR))
                            ];
                        }
                    }
                }
            }

        }
    }
    $out['status'] = true;

    return $out;
}
function BackRestrict($url)
{
    $stack = explode('/',$url);
    $flag = 0;
    foreach ($stack as $key)
    {
        switch($key)
        {
            case '...':
            case '..':
            case '.' : ++$flag; break;
        }
    }

    if($flag != 0)
    {
        http_response_code(403);
        exit(json_encode([
            'status' => false,
            'code' => 403
        ]));
    }
}
if(!isset($_SERVER['HTTP_TOKEN']))
{
    http_response_code(403);
    exit(json_encode([
        'status' => false,
        'code' => 403
    ]));
}
if($_SERVER['HTTP_TOKEN'] != config['server']['token'])
{
    http_response_code(403);
    exit(json_encode([
        'status' => false,
        'code' => 1111
    ]));
}
$file_to_search = $_GET['file'];
if(stristr($file_to_search,'/'))
{
    http_response_code(400);
    exit(json_encode([
        'status' => false,
        'code' => 400
    ]));
}
BackRestrict($file_to_search);
$base = config['server']['secure_folder'];
$instance = recursiveDirectoryIterator(trim($base,'/'),$file_to_search,trim($base,'/'));

echo json_encode($instance);