Source: index.php
⬇️ Tải file Trang chính
<?php
require __DIR__.'/s3helper.php';
$cfg = s3_load_config();

$flash = null;
if (($_POST['action'] ?? '') === 'check') {
    $r = s3_list($cfg, $cfg['bucket']);
    $flash = $r['ok']
      ? ['ok'=>1,'msg'=>"✅ Kết nối thành công (HTTP {$r['http_code']})"]
      : ['ok'=>0,'msg'=>"❌ Lỗi: HTTP {$r['http_code']} — ".htmlspecialchars(strip_tags($r['body']))];
}
?>
<!doctype html>
<html lang="vi">
<head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>MinIO S3 Demo — Mini Drive</title>
<style>
:root{--bg:#f3f4f6;--card:#fff;--text:#111827;--muted:#6b7280;--pri:#2563eb;--pri2:#1e40af;--okbg:#dcfce7;--ok:#166534;--errbg:#fee2e2;--err:#991b1b}
*{box-sizing:border-box} body{margin:0;background:var(--bg);font-family:Inter,system-ui,Segoe UI,Roboto,Arial}
header{background:var(--pri);color:#fff;padding:16px 24px;font-weight:700}
.container{max-width:1100px;margin:24px auto;padding:0 12px}
.panel{background:var(--card);border-radius:14px;box-shadow:0 2px 10px rgba(0,0,0,.08);padding:20px;margin-bottom:16px}
h1{margin:0 0 8px;font-size:22px;color:#fff} h2{margin:0 0 8px;font-size:18px;color:var(--text)}
label{display:block;margin-top:10px;font-weight:600;color:var(--text)}
.input{width:100%;padding:9px 11px;margin-top:4px;border:1px solid #d1d5db;border-radius:10px}
.btn{display:inline-block;background:var(--pri);color:#fff;border:none;border-radius:10px;padding:10px 14px;font-weight:600;cursor:pointer;text-decoration:none}
.btn:hover{background:var(--pri2)}
.row{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}
.card{border:1px solid #e5e7eb;background:#fafafa;border-radius:12px;padding:14px}
.card b{display:block;margin-bottom:6px} .note{color:var(--muted);font-size:13px}
.flash{margin-top:12px;padding:10px;border-radius:10px} .ok{background:var(--okbg);color:var(--ok)} .err{background:var(--errbg);color:var(--err)}
footer{color:var(--muted);text-align:center;padding:18px 0}
.srcs a{margin-right:6px;margin-top:6px}
</style>
</head>
<body>
<header><h1>☁️ MinIO S3 — Mini Drive Demo</h1></header>
<div class="container">
  <div class="panel">
    <h2>1) Cấu hình kết nối</h2>
    <form method="post" autocomplete="off">
      <label>Endpoint</label>
      <input class="input" name="endpoint" value="<?=htmlspecialchars($cfg['endpoint'])?>" placeholder="https://minio1.webtui.vn:9000">
      <label>Region</label>
      <input class="input" name="region" value="<?=htmlspecialchars($cfg['region'])?>" placeholder="vn-1">
      <label>Access Key</label>
      <input class="input" name="access" value="<?=htmlspecialchars($cfg['access']??'')?>">
      <label>Secret Key</label>
      <input class="input" name="secret" value="<?=htmlspecialchars($cfg['secret']??'')?>">
      <label>Bucket</label>
      <input class="input" name="bucket" value="<?=htmlspecialchars($cfg['bucket'])?>">
      <div style="margin-top:12px">
        <button class="btn" type="submit" name="save" value="1">💾 Lưu cấu hình</button>
        <button class="btn" type="submit" name="action" value="check" style="background:#059669">🔍 Kiểm tra kết nối</button>
      </div>
    </form>
    <?php if($flash): ?><div class="flash <?=$flash['ok']?'ok':'err'?>"><?=$flash['msg']?></div><?php endif; ?>
    <p class="note" style="margin-top:8px">Không dùng DB, thông tin lưu trong <b>session</b>. Dùng <b>path-style</b>: <code>endpoint/bucket/prefix/object</code>.</p>
  </div>

  <div class="panel">
    <h2>2) Demo chức năng</h2>
    <div class="row">
      <div class="card">
        <b>📤 Upload (put.php)</b>
        <div class="note">Upload vào bucket hoặc thư mục cụ thể (prefix).</div>
        <div style="margin-top:8px">
          <a class="btn" href="put.php" target="_blank">Mở</a>
          <a class="btn" href="view_source.php?file=put.php" style="background:#6b7280">Source</a>
        </div>
      </div>
      <div class="card">
        <b>⬇️ Download (get.php)</b>
        <div class="note">Nhập <i>đường dẫn đầy đủ</i> của object để tải (proxy).</div>
        <div style="margin-top:8px">
          <a class="btn" href="get.php" target="_blank">Mở</a>
          <a class="btn" href="view_source.php?file=get.php" style="background:#6b7280">Source</a>
        </div>
      </div>
      <div class="card">
        <b>ℹ️ Head metadata (head.php)</b>
        <div class="note">Nhập đường dẫn object để xem ETag/Size/Content-Type…</div>
        <div style="margin-top:8px">
          <a class="btn" href="head.php" target="_blank">Mở</a>
          <a class="btn" href="view_source.php?file=head.php" style="background:#6b7280">Source</a>
        </div>
      </div>
      <div class="card">
        <b>🗑️ Delete (delete.php)</b>
        <div class="note">Xóa file hoặc xóa cả thư mục (theo prefix).</div>
        <div style="margin-top:8px">
          <a class="btn" href="delete.php" target="_blank">Mở</a>
          <a class="btn" href="view_source.php?file=delete.php" style="background:#6b7280">Source</a>
        </div>
      </div>
      <div class="card">
        <b>📂 View list (view.php)</b>
        <div class="note">Duyệt cây thư mục (prefix). Nhấp vào thư mục để đi sâu.</div>
        <div style="margin-top:8px">
          <a class="btn" href="view.php" target="_blank">Mở</a>
          <a class="btn" href="view_source.php?file=view.php" style="background:#6b7280">Source</a>
        </div>
      </div>
      <div class="card">
        <b>🧩 Core & Trang chính</b>
        <div class="note">Xem/tải mã nguồn core & UI.</div>
        <div style="margin-top:8px" class="srcs">
          <a class="btn" href="view_source.php?file=s3helper.php" style="background:#374151">s3helper.php</a>
          <a class="btn" href="view_source.php?file=index.php" style="background:#374151">index.php</a>
        </div>
      </div>
    </div>
  </div>

  <footer>docs.minio.webtui.vn • MinIO S3 Mini-Drive Demo • <?=date('Y')?></footer>
</div>
</body>
</html>