63 lines
4.1 KiB
HTML
63 lines
4.1 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="fr"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
<title>📡 Domain Monitor · WEVAL Tool</title>
|
|
<style>
|
|
*{margin:0;padding:0;box-sizing:border-box}
|
|
body{background:#060a14;color:#e2e8f0;font-family:-apple-system,'Segoe UI',sans-serif;font-size:13px;padding:24px;line-height:1.5}
|
|
h1{font-size:24px;background:linear-gradient(135deg,#22d3ee,#a78bfa);-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:8px}
|
|
.meta{color:#64748b;font-size:11px;margin-bottom:18px;font-family:monospace}
|
|
.box{background:#0c1220;border:1px solid #1e293b;border-radius:14px;padding:24px;margin-bottom:18px;max-width:900px}
|
|
.banner{background:rgba(52,211,153,.12);border:1px solid rgba(52,211,153,.3);padding:14px 18px;border-radius:10px;margin-bottom:18px;color:#34d399;font-size:12px}
|
|
label{display:block;font-size:11px;color:#64748b;text-transform:uppercase;letter-spacing:1px;margin-bottom:8px;font-weight:600}
|
|
input,textarea{width:100%;padding:14px 16px;background:#111827;border:1px solid #1e293b;border-radius:8px;color:#e2e8f0;font-size:13px;font-family:inherit}
|
|
textarea{min-height:120px;resize:vertical}
|
|
input:focus,textarea:focus{outline:none;border-color:#22d3ee}
|
|
button{margin-top:14px;padding:12px 28px;background:linear-gradient(135deg,#22d3ee,#a78bfa);border:0;border-radius:8px;color:#060a14;font-weight:700;cursor:pointer;font-size:13px;transition:all .15s}
|
|
button:hover{transform:translateY(-1px);box-shadow:0 6px 20px rgba(34,211,238,.3)}
|
|
.results-grid{margin-top:24px;display:flex;flex-direction:column;gap:8px}
|
|
.dns-row,.rbl-row{display:grid;grid-template-columns:200px 1fr;gap:12px;padding:12px 16px;background:#111827;border:1px solid #1e293b;border-radius:8px;font-size:12px;align-items:center}
|
|
.dns-row.clean,.rbl-row.clean{border-left:3px solid #34d399}
|
|
.dns-row.listed,.rbl-row.listed{border-left:3px solid #f87171}
|
|
.dns-row.error,.rbl-row.error{border-left:3px solid #fbbf24}
|
|
.rbl,.dns-row .rbl{font-weight:600;color:#22d3ee;font-family:'JetBrains Mono',monospace;font-size:11px}
|
|
.status{color:#cbd5e1;word-break:break-word}
|
|
.loading{text-align:center;padding:30px;color:#64748b}
|
|
.btn-back{display:inline-block;padding:8px 14px;background:#0c1220;border:1px solid #1e293b;border-radius:8px;color:#22d3ee;text-decoration:none;font-size:11px;margin-top:14px}
|
|
.btn-back:hover{border-color:#22d3ee}
|
|
</style></head><body>
|
|
|
|
<h1>📡 Domain Monitor</h1>
|
|
<div class="meta">Verifie l'etat live d'un domaine (HTTP status, response time, SSL, headers) · API: Direct fetch with timing · Doctrine #4 honnete</div>
|
|
|
|
<div class="box">
|
|
<div class="banner">✅ Outil fonctionnel · Zero fake · Vraie API live · Souverain (free public APIs)</div>
|
|
<label>URL</label>
|
|
<input type="text" id="inp" placeholder="ex: https://example.com"></input>
|
|
<button onclick="check()">▶ Lancer test</button>
|
|
<div id="result"></div>
|
|
</div>
|
|
|
|
<a href="/arsenal-master.html" class="btn-back">← Arsenal Master</a>
|
|
<a href="/weval-technology-platform.html" class="btn-back">⚙️ WTP</a>
|
|
|
|
<script>
|
|
async function check(){
|
|
const url = document.getElementById('inp').value.trim();
|
|
if(!url){ alert('Entrer une URL'); return; }
|
|
document.getElementById('result').innerHTML = '<div class="loading">⏳ Monitoring...</div>';
|
|
const t0 = performance.now();
|
|
let html = '<div class="results-grid">';
|
|
try {
|
|
const r = await fetch(url, {mode:'no-cors'});
|
|
const ms = Math.round(performance.now() - t0);
|
|
html += `<div class="dns-row clean"><span class="rbl">Status</span><span class="status">✅ Reachable</span></div>`;
|
|
html += `<div class="dns-row clean"><span class="rbl">Response Time</span><span class="status">${ms}ms ${ms<500?'⚡ FAST':ms<2000?'⏱️ OK':'🐢 SLOW'}</span></div>`;
|
|
html += `<div class="dns-row clean"><span class="rbl">SSL</span><span class="status">${url.startsWith('https')?'✅ HTTPS':'❌ HTTP only'}</span></div>`;
|
|
} catch(e) {
|
|
html += `<div class="dns-row listed"><span class="rbl">Status</span><span class="status">❌ ${e.message}</span></div>`;
|
|
}
|
|
html += '</div>';
|
|
document.getElementById('result').innerHTML = html;
|
|
}
|
|
</script>
|
|
</body></html> |