Files
bytegeist-toolbox/public/index.html
T
2026-07-23 05:53:14 -04:00

420 lines
9.8 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!-- Makes the layout work correctly on phones and tablets. -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ByteGeist Toolbox</title>
<!-- Load the site stylesheet. -->
<link rel="stylesheet" href="styles.css">
</head>
<body>
<main class="page-shell">
<header class="site-header">
<p class="eyebrow">BYTEGEIST TOOLBOX</p>
<h1>Practical Website and Network Tools</h1>
<p class="description">
Check a website's current status, inspect its public DNS records,
review its SSL certificate, or analyze its HTTP response headers.
</p>
</header>
<nav class="tool-tabs" aria-label="Tool selection">
<button
id="status-tab"
class="tool-tab active"
type="button"
data-tool="status-tool"
>
Website Status
</button>
<button
id="dns-tab"
class="tool-tab"
type="button"
data-tool="dns-tool"
>
DNS Lookup
</button>
<button
id="ssl-tab"
class="tool-tab"
type="button"
data-tool="ssl-tool"
>
SSL Certificate
</button>
<button
id="headers-tab"
class="tool-tab"
type="button"
data-tool="headers-tool"
>
HTTP Headers
</button>
</nav>
<!-- Website Status Checker -->
<section id="status-tool" class="tool-panel">
<header class="tool-header">
<h2>Website Status Checker</h2>
<p class="tool-description">
Check whether a public website is responding right now and view its
status code, response time, redirects, and final destination.
</p>
</header>
<form id="uptime-form" class="tool-form">
<label for="url-input">Website URL</label>
<div class="input-row">
<input
id="url-input"
name="url"
type="url"
placeholder="https://example.com"
autocomplete="url"
required
>
<button id="check-button" type="submit">
Check Website
</button>
</div>
</form>
<p
id="status-message"
class="status-message"
aria-live="polite"
></p>
<section id="result-panel" class="result-panel" hidden>
<div class="result-heading">
<h3>Current Status</h3>
<span
id="online-badge"
class="status-badge"
></span>
</div>
<dl class="result-grid">
<div>
<dt>Status code</dt>
<dd id="status-code">-</dd>
</div>
<div>
<dt>Response time</dt>
<dd id="response-time">-</dd>
</div>
<div>
<dt>Redirects</dt>
<dd id="redirect-count">-</dd>
</div>
<div>
<dt>Checked at</dt>
<dd id="checked-at">-</dd>
</div>
</dl>
<div class="final-url-block">
<span>Final URL</span>
<a
id="final-url"
href="#"
target="_blank"
rel="noopener noreferrer"
></a>
</div>
</section>
</section>
<!-- DNS Lookup -->
<section id="dns-tool" class="tool-panel" hidden>
<header class="tool-header">
<h2>DNS Lookup</h2>
<p class="tool-description">
Look up public A, AAAA, CNAME, MX, TXT, and NS records for a domain.
</p>
</header>
<form id="dns-form" class="tool-form">
<label for="hostname-input">Hostname or website URL</label>
<div class="input-row">
<input
id="hostname-input"
name="hostname"
type="text"
placeholder="example.com"
autocomplete="off"
required
>
<button id="dns-button" type="submit">
Look Up DNS
</button>
</div>
</form>
<p
id="dns-message"
class="status-message"
aria-live="polite"
></p>
<section id="dns-result-panel" class="result-panel" hidden>
<div class="result-heading">
<h3>DNS Records</h3>
<span
id="dns-hostname"
class="hostname-badge"
></span>
</div>
<div
id="dns-records"
class="dns-records"
></div>
<p
id="dns-checked-at"
class="dns-checked-at"
></p>
</section>
</section>
<!-- SSL Certificate Checker -->
<section id="ssl-tool" class="tool-panel" hidden>
<header class="tool-header">
<h2>SSL Certificate Checker</h2>
<p class="tool-description">
Inspect the public TLS certificate for a website and view its issuer,
expiration date, authorization status, protocol, cipher, and fingerprint.
</p>
</header>
<form id="ssl-form" class="tool-form">
<label for="ssl-hostname-input">Hostname or website URL</label>
<div class="input-row">
<input
id="ssl-hostname-input"
name="hostname"
type="text"
placeholder="example.com"
autocomplete="off"
required
>
<button id="ssl-button" type="submit">
Check Certificate
</button>
</div>
</form>
<p
id="ssl-message"
class="status-message"
aria-live="polite"
></p>
<section id="ssl-result-panel" class="result-panel" hidden>
<div class="result-heading">
<h3>Certificate Details</h3>
<span
id="ssl-status-badge"
class="status-badge"
></span>
</div>
<dl class="result-grid">
<div>
<dt>Hostname</dt>
<dd id="ssl-hostname">-</dd>
</div>
<div>
<dt>Days remaining</dt>
<dd id="ssl-days-remaining">-</dd>
</div>
<div>
<dt>Valid from</dt>
<dd id="ssl-valid-from">-</dd>
</div>
<div>
<dt>Expires</dt>
<dd id="ssl-valid-to">-</dd>
</div>
<div>
<dt>TLS protocol</dt>
<dd id="ssl-protocol">-</dd>
</div>
<div>
<dt>Cipher</dt>
<dd id="ssl-cipher">-</dd>
</div>
<div>
<dt>Resolved address</dt>
<dd id="ssl-address">-</dd>
</div>
<div>
<dt>Checked at</dt>
<dd id="ssl-checked-at">-</dd>
</div>
</dl>
<div class="certificate-detail-block">
<span>Subject</span>
<p id="ssl-subject">-</p>
</div>
<div class="certificate-detail-block">
<span>Issuer</span>
<p id="ssl-issuer">-</p>
</div>
<div class="certificate-detail-block">
<span>SHA-256 fingerprint</span>
<code id="ssl-fingerprint">-</code>
</div>
<div
id="ssl-authorization-error-block"
class="certificate-detail-block certificate-error"
hidden
>
<span>Authorization error</span>
<p id="ssl-authorization-error">-</p>
</div>
</section>
</section>
<!-- HTTP Headers Checker -->
<section id="headers-tool" class="tool-panel" hidden>
<header class="tool-header">
<h2>HTTP Headers Checker</h2>
<p class="tool-description">
Inspect a website's response headers and see which common security
headers are present or missing.
</p>
</header>
<form id="headers-form" class="tool-form">
<label for="headers-url-input">Website URL</label>
<div class="input-row">
<input
id="headers-url-input"
name="url"
type="url"
placeholder="https://example.com"
autocomplete="url"
required
>
<button id="headers-button" type="submit">
Check Headers
</button>
</div>
</form>
<p
id="headers-message"
class="status-message"
aria-live="polite"
></p>
<section id="headers-result-panel" class="result-panel" hidden>
<div class="result-heading">
<h3>Header Results</h3>
<span
id="headers-score-badge"
class="hostname-badge"
></span>
</div>
<dl class="result-grid">
<div>
<dt>Status</dt>
<dd id="headers-status">-</dd>
</div>
<div>
<dt>Redirects</dt>
<dd id="headers-redirects">-</dd>
</div>
<div>
<dt>Security headers</dt>
<dd id="headers-score">-</dd>
</div>
<div>
<dt>Checked at</dt>
<dd id="headers-checked-at">-</dd>
</div>
</dl>
<div class="final-url-block">
<span>Final URL</span>
<a
id="headers-final-url"
href="#"
target="_blank"
rel="noopener noreferrer"
></a>
</div>
<section class="headers-section">
<h4>Security Header Review</h4>
<div
id="security-header-results"
class="security-header-results"
></div>
</section>
<section class="headers-section">
<h4>All Response Headers</h4>
<div
id="all-header-results"
class="all-header-results"
></div>
</section>
</section>
</section>
</main>
<!-- Load browser JavaScript after the page elements exist. -->
<script src="app.js"></script>
</body>
</html>