cloudflare
tcp/443 tcp/80 tcp/8443
Open service 2606:4700:3032::ac43:c960:8443 · service.ppoms.cloud
2026-01-08 08:49
HTTP/1.1 200 OK
Date: Thu, 08 Jan 2026 08:49:04 GMT
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Connection: close
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=F9V0dnV%2BnFUxWLHamQLczw08TgHzS3YSHpmH3hxqzr4tBUfKJ8mwVDqsF4Cau9Vf4UHItoc9a93eXkhDQEilYPdHScDPSo14y02pygNSvY3c7VGdU%2FTRns7wbqBdP3A%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=3,cfOrigin;dur=4
cf-cache-status: DYNAMIC
CF-RAY: 9baa7080f8aa19cf-YYZ
alt-svc: h3=":8443"; ma=86400
Page title: Admin Login
<!DOCTYPE html>
<html>
<head>
<title>Admin Login</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body { font-family: sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background: #f0f2f5; }
.card { background: white; padding: 2rem; border-radius: 12px; box-shadow: 0 8px 20px rgba(0,0,0,0.1); width: 100%; max-width: 320px; text-align: center; }
input { width: 100%; padding: 12px; margin: 8px 0; border: 1px solid #ddd; border-radius: 6px; box-sizing: border-box; }
button { width: 100%; padding: 12px; background: #1a73e8; color: white; border: none; border-radius: 6px; cursor: pointer; font-weight: bold; }
</style>
</head>
<body>
<div class="card"><h2>Admin Login</h2><input type="text" id="id" placeholder="ID"><input type="password" id="pw" placeholder="Password"><button onclick="login()">Login</button></div>
<script>
async function login() {
const res = await fetch('/api/login', { method: 'POST', body: JSON.stringify({ id: document.getElementById('id').value, pw: document.getElementById('pw').value }) });
if (res.ok) location.reload(); else alert('로그인 실패');
}
</script>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"fac143926e694e649e7c62bd372e46e3","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body>
</html>
Open service 172.67.201.96:443 · service.ppoms.cloud
2026-01-08 08:49
HTTP/1.1 200 OK
Date: Thu, 08 Jan 2026 08:49:04 GMT
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Connection: close
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=yeuh3p6BYzG70kbTQAIkwSPrWNR1WW%2BZd4pa7grYww9MntxZjo7ZOFfp%2F5mBBpDhdzqWD3zki1kJyeggPU0hv3yPJaL%2FIVttbpuKf2YAZvmUmTU%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=10,cfOrigin;dur=13
cf-cache-status: DYNAMIC
CF-RAY: 9baa7080f83936ce-YYZ
alt-svc: h3=":443"; ma=86400
Page title: Admin Login
<!DOCTYPE html>
<html>
<head>
<title>Admin Login</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body { font-family: sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background: #f0f2f5; }
.card { background: white; padding: 2rem; border-radius: 12px; box-shadow: 0 8px 20px rgba(0,0,0,0.1); width: 100%; max-width: 320px; text-align: center; }
input { width: 100%; padding: 12px; margin: 8px 0; border: 1px solid #ddd; border-radius: 6px; box-sizing: border-box; }
button { width: 100%; padding: 12px; background: #1a73e8; color: white; border: none; border-radius: 6px; cursor: pointer; font-weight: bold; }
</style>
</head>
<body>
<div class="card"><h2>Admin Login</h2><input type="text" id="id" placeholder="ID"><input type="password" id="pw" placeholder="Password"><button onclick="login()">Login</button></div>
<script>
async function login() {
const res = await fetch('/api/login', { method: 'POST', body: JSON.stringify({ id: document.getElementById('id').value, pw: document.getElementById('pw').value }) });
if (res.ok) location.reload(); else alert('로그인 실패');
}
</script>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"fac143926e694e649e7c62bd372e46e3","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body>
</html>
Open service 104.21.36.242:443 · service.ppoms.cloud
2026-01-08 08:49
HTTP/1.1 200 OK
Date: Thu, 08 Jan 2026 08:49:04 GMT
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Connection: close
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=80AGnJyAAUElvDeLrpzqFO0VqI%2B8rzljf0t%2BaR4veVrxQzYIUfnYUmVxRPHEAkXdsFKEtS8jb0djbJHTE1TBjyxkmn%2F5mS4acsjXx2ugQuUbOEM%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=11,cfOrigin;dur=12
cf-cache-status: DYNAMIC
CF-RAY: 9baa7080ff9cac51-YYZ
alt-svc: h3=":443"; ma=86400
Page title: Admin Login
<!DOCTYPE html>
<html>
<head>
<title>Admin Login</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body { font-family: sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background: #f0f2f5; }
.card { background: white; padding: 2rem; border-radius: 12px; box-shadow: 0 8px 20px rgba(0,0,0,0.1); width: 100%; max-width: 320px; text-align: center; }
input { width: 100%; padding: 12px; margin: 8px 0; border: 1px solid #ddd; border-radius: 6px; box-sizing: border-box; }
button { width: 100%; padding: 12px; background: #1a73e8; color: white; border: none; border-radius: 6px; cursor: pointer; font-weight: bold; }
</style>
</head>
<body>
<div class="card"><h2>Admin Login</h2><input type="text" id="id" placeholder="ID"><input type="password" id="pw" placeholder="Password"><button onclick="login()">Login</button></div>
<script>
async function login() {
const res = await fetch('/api/login', { method: 'POST', body: JSON.stringify({ id: document.getElementById('id').value, pw: document.getElementById('pw').value }) });
if (res.ok) location.reload(); else alert('로그인 실패');
}
</script>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"fac143926e694e649e7c62bd372e46e3","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body>
</html>
Open service 2606:4700:3034::6815:24f2:8443 · service.ppoms.cloud
2026-01-08 08:49
HTTP/1.1 200 OK
Date: Thu, 08 Jan 2026 08:49:04 GMT
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Connection: close
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=%2F895XYb6J82Z%2BJAoxC5Z%2F1%2F7CLr1jtqXFbXsd9bufm7aCjqQse%2BNk7YOGtLr3yU0do4V7Ww1%2BKR2ipLChtgnnxhC9qkj3QlRLZSeJPdc8%2BJDR%2FjctUzO4gLx0Mw3CY8%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9baa7080bdf79249-FRA
alt-svc: h3=":8443"; ma=86400
Page title: Admin Login
<!DOCTYPE html>
<html>
<head>
<title>Admin Login</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body { font-family: sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background: #f0f2f5; }
.card { background: white; padding: 2rem; border-radius: 12px; box-shadow: 0 8px 20px rgba(0,0,0,0.1); width: 100%; max-width: 320px; text-align: center; }
input { width: 100%; padding: 12px; margin: 8px 0; border: 1px solid #ddd; border-radius: 6px; box-sizing: border-box; }
button { width: 100%; padding: 12px; background: #1a73e8; color: white; border: none; border-radius: 6px; cursor: pointer; font-weight: bold; }
</style>
</head>
<body>
<div class="card"><h2>Admin Login</h2><input type="text" id="id" placeholder="ID"><input type="password" id="pw" placeholder="Password"><button onclick="login()">Login</button></div>
<script>
async function login() {
const res = await fetch('/api/login', { method: 'POST', body: JSON.stringify({ id: document.getElementById('id').value, pw: document.getElementById('pw').value }) });
if (res.ok) location.reload(); else alert('로그인 실패');
}
</script>
</body>
</html>
Open service 172.67.201.96:8443 · service.ppoms.cloud
2026-01-08 08:49
HTTP/1.1 200 OK
Date: Thu, 08 Jan 2026 08:49:04 GMT
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Connection: close
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=eWUF4MGFNSBcWOS6OU6OiAVBhd3rPWUhDBSMyND5CRLEtzrr%2B69qDTNkl8ihmw4ZlTAUEPf8%2F6SPtcspaY3Hud3i2%2FCGQbnuRxczKxvhRnISrtw%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9baa7080ca5fd39e-FRA
alt-svc: h3=":8443"; ma=86400
Page title: Admin Login
<!DOCTYPE html>
<html>
<head>
<title>Admin Login</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body { font-family: sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background: #f0f2f5; }
.card { background: white; padding: 2rem; border-radius: 12px; box-shadow: 0 8px 20px rgba(0,0,0,0.1); width: 100%; max-width: 320px; text-align: center; }
input { width: 100%; padding: 12px; margin: 8px 0; border: 1px solid #ddd; border-radius: 6px; box-sizing: border-box; }
button { width: 100%; padding: 12px; background: #1a73e8; color: white; border: none; border-radius: 6px; cursor: pointer; font-weight: bold; }
</style>
</head>
<body>
<div class="card"><h2>Admin Login</h2><input type="text" id="id" placeholder="ID"><input type="password" id="pw" placeholder="Password"><button onclick="login()">Login</button></div>
<script>
async function login() {
const res = await fetch('/api/login', { method: 'POST', body: JSON.stringify({ id: document.getElementById('id').value, pw: document.getElementById('pw').value }) });
if (res.ok) location.reload(); else alert('로그인 실패');
}
</script>
</body>
</html>
Open service 2606:4700:3034::6815:24f2:80 · service.ppoms.cloud
2026-01-08 08:49
HTTP/1.1 301 Moved Permanently
Date: Thu, 08 Jan 2026 08:49:04 GMT
Content-Length: 0
Connection: close
Location: https://service.ppoms.cloud/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=dCaLQ1dx2AbBjbEIzYmijeTbYrA5%2BTzBmTrgLbwzFh%2B9tk0%2BHaWNHwwUvZb1NrRrfIpFJfHzaFsXHQGB25Jj%2FkajkB6nexYPBOeXmnwwLCvemRsOnaxH4ZRgKSvmjds%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9baa7080aa87383b-FRA
alt-svc: h3=":443"; ma=86400
Open service 104.21.36.242:8443 · service.ppoms.cloud
2026-01-08 08:49
HTTP/1.1 200 OK
Date: Thu, 08 Jan 2026 08:49:04 GMT
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Connection: close
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=bCHoXp%2BZJcKSE7oAnMKIoPO%2BacrJQCHAsFgxhHaBzmmtBEHB280Ev7imgjmF%2FY1rbYxyLgYhNWotFY2DopRsukpCrrw%2FntCzgdgokRrSzCXaV2U%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9baa70809aba3809-FRA
alt-svc: h3=":8443"; ma=86400
Page title: Admin Login
<!DOCTYPE html>
<html>
<head>
<title>Admin Login</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body { font-family: sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background: #f0f2f5; }
.card { background: white; padding: 2rem; border-radius: 12px; box-shadow: 0 8px 20px rgba(0,0,0,0.1); width: 100%; max-width: 320px; text-align: center; }
input { width: 100%; padding: 12px; margin: 8px 0; border: 1px solid #ddd; border-radius: 6px; box-sizing: border-box; }
button { width: 100%; padding: 12px; background: #1a73e8; color: white; border: none; border-radius: 6px; cursor: pointer; font-weight: bold; }
</style>
</head>
<body>
<div class="card"><h2>Admin Login</h2><input type="text" id="id" placeholder="ID"><input type="password" id="pw" placeholder="Password"><button onclick="login()">Login</button></div>
<script>
async function login() {
const res = await fetch('/api/login', { method: 'POST', body: JSON.stringify({ id: document.getElementById('id').value, pw: document.getElementById('pw').value }) });
if (res.ok) location.reload(); else alert('로그인 실패');
}
</script>
</body>
</html>
Open service 104.21.36.242:80 · service.ppoms.cloud
2026-01-08 08:49
HTTP/1.1 301 Moved Permanently
Date: Thu, 08 Jan 2026 08:49:04 GMT
Content-Length: 0
Connection: close
Location: https://service.ppoms.cloud/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=vhL5yDGmr334o7Va1yake166Oir2AzE%2FyIAM1taBuxg6EHMJl6Hk8r8FaceCkpmn%2FQ64uTguJ55cp1d7GIUb%2BpL%2FQCxL9opRLxF2x4h8QSXnodU%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=18,cfOrigin;dur=9
cf-cache-status: DYNAMIC
CF-RAY: 9baa707febd8c463-EWR
alt-svc: h3=":443"; ma=86400
Open service 172.67.201.96:80 · service.ppoms.cloud
2026-01-08 08:49
HTTP/1.1 301 Moved Permanently
Date: Thu, 08 Jan 2026 08:49:04 GMT
Content-Length: 0
Connection: close
Location: https://service.ppoms.cloud/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=WDROYqqA%2FF8tgo7X3ETH%2F%2BiQtxxKOftEjGPgeB%2BEU1SHH%2B%2FLb3v84M5zT3MPCP%2Bcpm5an%2Bozdm52v5SqaOTNHo%2FJTIkN7%2FQbdjFpPPZWXzDrGuU%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=13,cfOrigin;dur=9
cf-cache-status: DYNAMIC
CF-RAY: 9baa707ffaf30edf-EWR
alt-svc: h3=":443"; ma=86400
Open service 2606:4700:3032::ac43:c960:80 · service.ppoms.cloud
2026-01-08 08:49
HTTP/1.1 301 Moved Permanently
Date: Thu, 08 Jan 2026 08:49:04 GMT
Content-Length: 0
Connection: close
Location: https://service.ppoms.cloud/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=As88OwrbElSafWwGNYaDJouWCS77wMcJTVqjW2cKggAAEe3NzuIJBRwWq6%2FBsvm9XemGUObw2rlG%2BRv%2FgGxMPPWSfr8P3nuavMDY5fMIMBXVbLgITcLMLocryCyD0rw%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=12,cfOrigin;dur=6
cf-cache-status: DYNAMIC
CF-RAY: 9baa707ff8201914-EWR
alt-svc: h3=":443"; ma=86400
Open service 2606:4700:3034::6815:24f2:443 · service.ppoms.cloud
2026-01-08 08:49
HTTP/1.1 200 OK
Date: Thu, 08 Jan 2026 08:49:04 GMT
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Connection: close
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=ByJospofQbzGZziKAss3%2BGVzniDLZmKPkwNWbBgDWXJhnQ%2FKwSDSbtckyG0yjQfB1KvxD3O9KtSnCQxQVqDCpOpZW8MhIM1oqp0fcyGs1DnkhO%2FM%2F7FkVCeeghGWSVI%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=6,cfOrigin;dur=10
cf-cache-status: DYNAMIC
CF-RAY: 9baa707ffd7aa4a0-EWR
alt-svc: h3=":443"; ma=86400
Page title: Admin Login
<!DOCTYPE html>
<html>
<head>
<title>Admin Login</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body { font-family: sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background: #f0f2f5; }
.card { background: white; padding: 2rem; border-radius: 12px; box-shadow: 0 8px 20px rgba(0,0,0,0.1); width: 100%; max-width: 320px; text-align: center; }
input { width: 100%; padding: 12px; margin: 8px 0; border: 1px solid #ddd; border-radius: 6px; box-sizing: border-box; }
button { width: 100%; padding: 12px; background: #1a73e8; color: white; border: none; border-radius: 6px; cursor: pointer; font-weight: bold; }
</style>
</head>
<body>
<div class="card"><h2>Admin Login</h2><input type="text" id="id" placeholder="ID"><input type="password" id="pw" placeholder="Password"><button onclick="login()">Login</button></div>
<script>
async function login() {
const res = await fetch('/api/login', { method: 'POST', body: JSON.stringify({ id: document.getElementById('id').value, pw: document.getElementById('pw').value }) });
if (res.ok) location.reload(); else alert('로그인 실패');
}
</script>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"fac143926e694e649e7c62bd372e46e3","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body>
</html>
Open service 2606:4700:3032::ac43:c960:443 · service.ppoms.cloud
2026-01-08 08:49
HTTP/1.1 200 OK
Date: Thu, 08 Jan 2026 08:49:03 GMT
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Connection: close
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=LEmuhiti9xN5n0A5q6xhiOjC09CXnv3Ial4KMBBWdePNWsDtMvT1KMDUhn1vKhrKqfYZRXeHR8cE%2FGVTwyWUX1Etu5B6Spz6ZFFSkiZgkDXE6FqYnM5yrfHROaJKTTw%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9baa707fca16d25d-FRA
alt-svc: h3=":443"; ma=86400
Page title: Admin Login
<!DOCTYPE html>
<html>
<head>
<title>Admin Login</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body { font-family: sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background: #f0f2f5; }
.card { background: white; padding: 2rem; border-radius: 12px; box-shadow: 0 8px 20px rgba(0,0,0,0.1); width: 100%; max-width: 320px; text-align: center; }
input { width: 100%; padding: 12px; margin: 8px 0; border: 1px solid #ddd; border-radius: 6px; box-sizing: border-box; }
button { width: 100%; padding: 12px; background: #1a73e8; color: white; border: none; border-radius: 6px; cursor: pointer; font-weight: bold; }
</style>
</head>
<body>
<div class="card"><h2>Admin Login</h2><input type="text" id="id" placeholder="ID"><input type="password" id="pw" placeholder="Password"><button onclick="login()">Login</button></div>
<script>
async function login() {
const res = await fetch('/api/login', { method: 'POST', body: JSON.stringify({ id: document.getElementById('id').value, pw: document.getElementById('pw').value }) });
if (res.ok) location.reload(); else alert('로그인 실패');
}
</script>
</body>
</html>