- 운영 리버스 프록시 템플릿(RHEL conf.d, certbot 개별 발급 안내) - dev/prod 공용 /mobile-app QR 페이지(중앙 ITSM APK 저장소 읽기전용 재사용) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
63 lines
3.2 KiB
HTML
63 lines
3.2 KiB
HTML
<!doctype html>
|
|
<html lang="ko">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>GUARDiA Messenger 앱 다운로드 — ITMS</title>
|
|
<style>
|
|
:root { --bg:#0f1420; --card:#182031; --ink:#e8edf6; --sub:#9fb0c8; --accent:#11c3ff; --line:#26324a; }
|
|
* { box-sizing:border-box; }
|
|
body { margin:0; font-family:"Pretendard","Malgun Gothic",system-ui,sans-serif; background:var(--bg); color:var(--ink);
|
|
min-height:100vh; display:flex; align-items:center; justify-content:center; padding:24px; }
|
|
.card { background:var(--card); border:1px solid var(--line); border-radius:16px; max-width:420px; width:100%;
|
|
padding:32px 28px; text-align:center; box-shadow:0 8px 40px rgba(0,0,0,.35); }
|
|
h1 { font-size:20px; margin:0 0 4px; }
|
|
.app { font-size:15px; color:var(--accent); font-weight:600; margin-bottom:20px; }
|
|
.qr { background:#fff; border-radius:12px; padding:14px; display:inline-block; min-height:180px; min-width:180px; }
|
|
.qr img { width:180px; height:180px; display:block; }
|
|
.meta { margin:18px 0 8px; color:var(--sub); font-size:13px; line-height:1.7; }
|
|
.meta b { color:var(--ink); }
|
|
.btn { display:inline-block; margin-top:16px; padding:12px 22px; background:var(--accent); color:#04141c;
|
|
font-weight:700; text-decoration:none; border-radius:10px; font-size:15px; }
|
|
.note { margin-top:18px; font-size:11.5px; color:var(--sub); line-height:1.6; }
|
|
.err { color:#ff7a7a; font-size:13px; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="card">
|
|
<h1>모바일 앱 다운로드</h1>
|
|
<div class="app">GUARDiA Messenger</div>
|
|
<div class="qr" id="qrbox"><span class="err" style="color:#888">불러오는 중…</span></div>
|
|
<div class="meta" id="meta"></div>
|
|
<a class="btn" id="dl" href="#" style="display:none">APK 다운로드</a>
|
|
<div class="note">
|
|
Android 기기에서 QR을 스캔하거나 버튼으로 APK를 내려받아 설치하세요.<br>
|
|
본 페이지는 GUARDiA 중앙 앱 저장소(ITSM)의 최신 배포를 읽기 전용으로 표시합니다.
|
|
</div>
|
|
</div>
|
|
<script>
|
|
// 중앙 ITSM 공개 엔드포인트(인증 불필요·CORS 허용)에서 최신 APK 정보 조회
|
|
var CENTRAL = "https://itsm.zioinfo.co.kr/api/app/public-latest";
|
|
fetch(CENTRAL, { cache: "no-store" })
|
|
.then(function(r){ return r.json(); })
|
|
.then(function(d){
|
|
if (!d || !d.has_version) { throw new Error("no version"); }
|
|
var qrbox = document.getElementById("qrbox");
|
|
qrbox.innerHTML = "";
|
|
var img = new Image(); img.src = d.qr_url; img.alt = "APK QR";
|
|
img.onerror = function(){ qrbox.innerHTML = '<span class="err">QR 이미지를 불러올 수 없습니다</span>'; };
|
|
qrbox.appendChild(img);
|
|
document.getElementById("meta").innerHTML =
|
|
"<b>" + (d.app_name||"") + "</b> v" + (d.version||"") + "<br>" +
|
|
(d.platform||"") + " · " + (d.file_size_mb||"?") + " MB";
|
|
var dl = document.getElementById("dl");
|
|
dl.href = d.download_url; dl.style.display = "inline-block";
|
|
})
|
|
.catch(function(e){
|
|
document.getElementById("qrbox").innerHTML =
|
|
'<span class="err">앱 정보를 불러올 수 없습니다.<br>잠시 후 다시 시도하세요.</span>';
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|