Add footer, canonical URLs, fix record parsing

This commit is contained in:
Reimar 2026-02-08 21:07:11 +01:00
parent 0d41b2b813
commit a3efa02875
Signed by: Reimar
GPG Key ID: 93549FA07F0AE268
12 changed files with 98 additions and 18 deletions

View File

@ -17,10 +17,20 @@ export class DkimRecord extends TagListRecord {
.required() .required()
.pos(1), .pos(1),
new EnumTag("k", ["rsa", "ed25519"])
.label("Key type")
.desc("")
.options(["RSA", "Ed25519"])
.default("rsa")
.pos(1),
new FlagsTag("t", ["y", "s"]) new FlagsTag("t", ["y", "s"])
.label("Flags") .label("Flags")
.desc("Optional extra options that can be enabled") .options(["Test mode", "Strict mode (Recommended)"])
.options(["Test mode", "Require identical domain in i= and d= tags of DKIM signature (Recommended)"]) .optionDesc([
"Indicates the server is currently testing DKIM support",
"Require identical domain in i= and d= tags of DKIM signature (Recommended unless using subdomains)",
])
.default("") .default("")
.pos(1), .pos(1),
@ -38,11 +48,6 @@ export class DkimRecord extends TagListRecord {
.default("") .default("")
.pos(1), .pos(1),
new EnumTag("k", ["rsa"])
.disabled()
.default("rsa")
.pos(1),
new EnumTag("s", ["*", "email"]) new EnumTag("s", ["*", "email"])
.disabled() .disabled()
.default("*") .default("*")

View File

@ -50,7 +50,7 @@ export class SpfRecord {
.label("Include") .label("Include")
.desc("Check the SPF record of another domain. If it passes, return with the selected result") .desc("Check the SPF record of another domain. If it passes, return with the selected result")
.multiple() .multiple()
.pos(1), .pos(2),
new DomainMechanism("exists") new DomainMechanism("exists")
.label("Exists") .label("Exists")

View File

@ -11,11 +11,19 @@ export class FlagsTag extends Tag {
return this; return this;
} }
optionDesc(descriptions) {
this.flagDescriptions = descriptions;
return this;
}
getInputHtml() { getInputHtml() {
return ` return `
<div style="display: flex; flex-direction: column; gap: 0.5rem">` + <div style="display: flex; flex-direction: column; gap: 0.5rem">` +
this.flags.map((flag, i) => ` this.flags.map((flag, i) => `
<label><input id="${this.id + "-" + flag}" type="checkbox"> ${this.flagLabels[i]}</label> <label>
<input id="${this.id + "-" + flag}" type="checkbox"> ${this.flagLabels[i]}<br>
<span class="checkbox-desc">${this.flagDescriptions[i]}</span>
</label>
`).join("") + `).join("") +
"</div>"; "</div>";
} }

View File

@ -3,12 +3,12 @@ import { DmarcRecord } from "../records/DmarcRecord.js";
import { SpfRecord } from "../records/SpfRecord.js"; import { SpfRecord } from "../records/SpfRecord.js";
const records = { const records = {
"/dkim-creator": DkimRecord, "dkim-creator": DkimRecord,
"/dmarc-creator": DmarcRecord, "dmarc-creator": DmarcRecord,
"/spf-creator": SpfRecord, "spf-creator": SpfRecord,
}; };
const Record = records[location.pathname]; const Record = records[location.pathname.split("/")[1]];
const inputs = []; const inputs = [];

View File

@ -2,11 +2,11 @@ import { DmarcRecord } from "../records/DmarcRecord.js";
import { SpfRecord } from "../records/SpfRecord.js"; import { SpfRecord } from "../records/SpfRecord.js";
const records = { const records = {
"/dmarc-validator": DmarcRecord, "dmarc-validator": DmarcRecord,
"/spf-validator": SpfRecord, "spf-validator": SpfRecord,
}; };
const Record = records[location.pathname]; const Record = records[location.pathname.split("/")[1]];
document.getElementById("record").oninput = event => validate(event.target.value); document.getElementById("record").oninput = event => validate(event.target.value);

View File

@ -27,6 +27,16 @@ body {
padding: 1rem; padding: 1rem;
} }
footer {
font-size: 0.8rem;
text-align: center;
margin-bottom: 1rem;
}
footer a {
color: black;
}
h1, h2 { h1, h2 {
text-align: center; text-align: center;
} }
@ -67,7 +77,7 @@ main {
background-color: white; background-color: white;
border: 1px solid #BDBDBD; border: 1px solid #BDBDBD;
padding: 1rem 2rem; padding: 1rem 2rem;
margin: 2rem auto; margin: 1rem auto;
color: #424242; color: #424242;
font-size: 0.8rem; font-size: 0.8rem;
} }
@ -166,6 +176,11 @@ summary:hover {
color: black; color: black;
} }
.checkbox-desc {
color: #9E9E9E;
margin-left: 2em;
}
.field-container { .field-container {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -191,3 +206,25 @@ summary:hover {
.text-button:hover { .text-button:hover {
color: black; color: black;
} }
.tool-button {
display: inline-block;
margin: 0.25rem 1rem 0.25rem 0;
background-color: #F9F9F9;
padding: 0.75rem 1.5rem;
border: 1px solid #BDBDBD;
color: black;
text-decoration: none;
box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1);
font-weight: bold;
width: 170px;
text-align: center;
position: relative;
bottom: 0;
transition: box-shadow, bottom 200ms;
}
.tool-button:hover {
bottom: 3px;
box-shadow: 0 5px 5px rgba(0, 0, 0, 0.1);
}

View File

@ -4,6 +4,7 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DKIM Record Creator - Generate DKIM DNS Records</title> <title>DKIM Record Creator - Generate DKIM DNS Records</title>
<link rel="canonical" href="https://email-dns.tools/dkim-creator/">
<link rel="stylesheet" href="/assets/styles/main.css"> <link rel="stylesheet" href="/assets/styles/main.css">
<script type="module" src="/assets/scripts/ui/creator.js"></script> <script type="module" src="/assets/scripts/ui/creator.js"></script>
</head> </head>
@ -53,5 +54,9 @@
<a href="/spf-creator">SPF Creator Tool</a> <a href="/spf-creator">SPF Creator Tool</a>
</center> </center>
</main> </main>
<footer>
<a href="/">Home</a>
</footer>
</body> </body>
</html> </html>

View File

@ -4,6 +4,7 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DMARC Record Creator - Generate DMARC DNS Records</title> <title>DMARC Record Creator - Generate DMARC DNS Records</title>
<link rel="canonical" href="https://email-dns.tools/dmarc-creator/">
<link rel="stylesheet" href="/assets/styles/main.css"> <link rel="stylesheet" href="/assets/styles/main.css">
<script type="module" src="/assets/scripts/ui/creator.js"></script> <script type="module" src="/assets/scripts/ui/creator.js"></script>
</head> </head>
@ -41,9 +42,13 @@
<center> <center>
<h3>More tools:</h3> <h3>More tools:</h3>
<a href="/dmarc-validator">DMARC Validator Tool</a> &bull; <a href="/dmarc-validator">DMARC Validator Tool</a> &bull;
<a href="/DKIM-creator">DKIM Creator Tool</a> &bull; <a href="/dkim-creator">DKIM Creator Tool</a> &bull;
<a href="/spf-creator">SPF Creator Tool</a> <a href="/spf-creator">SPF Creator Tool</a>
</center> </center>
</main> </main>
<footer>
<a href="/">Home</a>
</footer>
</body> </body>
</html> </html>

View File

@ -4,6 +4,7 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DMARC Record Validator - Validate DMARC DNS Records</title> <title>DMARC Record Validator - Validate DMARC DNS Records</title>
<link rel="canonical" href="https://email-dns.tools/dmarc-validator/">
<link rel="stylesheet" href="/assets/styles/main.css"> <link rel="stylesheet" href="/assets/styles/main.css">
<script type="module" src="/assets/scripts/ui/validator.js"></script> <script type="module" src="/assets/scripts/ui/validator.js"></script>
</head> </head>
@ -78,5 +79,9 @@
<a href="/spf-validator">SPF Validator Tool</a> <a href="/spf-validator">SPF Validator Tool</a>
</center> </center>
</main> </main>
<footer>
<a href="/">Home</a>
</footer>
</body> </body>
</html> </html>

View File

@ -4,6 +4,7 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SPF Record Creator - Generate SPF DNS Records</title> <title>SPF Record Creator - Generate SPF DNS Records</title>
<link rel="canonical" href="https://email-dns.tools/spf-creator/">
<link rel="stylesheet" href="/assets/styles/main.css"> <link rel="stylesheet" href="/assets/styles/main.css">
<script type="module" src="/assets/scripts/ui/creator.js"></script> <script type="module" src="/assets/scripts/ui/creator.js"></script>
</head> </head>
@ -63,5 +64,9 @@
<a href="/dmarc-creator">DMARC Creator Tool</a> <a href="/dmarc-creator">DMARC Creator Tool</a>
</center> </center>
</main> </main>
<footer>
<a href="/">Home</a>
</footer>
</body> </body>
</html> </html>

View File

@ -4,6 +4,7 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SPF Macro Guide - Explanation of all SPF macros with examples</title> <title>SPF Macro Guide - Explanation of all SPF macros with examples</title>
<link rel="canonical" href="https://email-dns.tools/spf-macro-guide/">
<link rel="stylesheet" href="/assets/styles/main.css"> <link rel="stylesheet" href="/assets/styles/main.css">
<script type="module" src="/assets/scripts/ui/validator.js"></script> <script type="module" src="/assets/scripts/ui/validator.js"></script>
</head> </head>
@ -149,5 +150,9 @@
<a href="/spf-creator">SPF Creator Tool</a> <a href="/spf-creator">SPF Creator Tool</a>
</center> </center>
</main> </main>
<footer>
<a href="/">Home</a>
</footer>
</body> </body>
</html> </html>

View File

@ -4,6 +4,7 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SPF Record Validator - Validate SPF DNS Records</title> <title>SPF Record Validator - Validate SPF DNS Records</title>
<link rel="canonical" href="https://email-dns.tools/spf-validator/">
<link rel="stylesheet" href="/assets/styles/main.css"> <link rel="stylesheet" href="/assets/styles/main.css">
<script type="module" src="/assets/scripts/ui/validator.js"></script> <script type="module" src="/assets/scripts/ui/validator.js"></script>
</head> </head>
@ -69,5 +70,9 @@
<a href="/dmarc-validator">DMARC Validator Tool</a> <a href="/dmarc-validator">DMARC Validator Tool</a>
</center> </center>
</main> </main>
<footer>
<a href="/">Home</a>
</footer>
</body> </body>
</html> </html>