Skip to content

Commit b8b5cd1

Browse files
committed
Translations for diagnostics, and resole checks
1 parent 005cb5e commit b8b5cd1

File tree

21 files changed

+2314
-1130
lines changed

21 files changed

+2314
-1130
lines changed

scripts/find-hardcoded-text.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,9 @@ function scanDirectory(dirPath: string): HardcodedText[] {
153153
continue;
154154
}
155155

156-
// Validate safeName to prevent path traversal and unsafe characters
157-
if (safeName.includes('..') || /[^a-zA-Z0-9._-]/.test(safeName)) {
156+
// Validate safeName to prevent path traversal
157+
// Allow SvelteKit file naming patterns: +page.svelte, [lang], (sections), etc.
158+
if (safeName.includes('..')) {
158159
console.error(`Unsafe file or directory name blocked: ${safeName}`);
159160
continue;
160161
}
Lines changed: 182 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,190 @@
11
{
2-
"title": "DMARC Record Checker",
3-
"description": "Check and validate DMARC (Domain-based Message Authentication) records",
2+
"title": "DMARC Policy Checker",
3+
"subtitle": "Analyze DMARC (Domain-based Message Authentication, Reporting & Conformance) policies. Check policy configuration, alignment settings, and identify potential security issues.",
4+
5+
"examples": {
6+
"title": "DMARC Examples",
7+
"items": {
8+
"google": {
9+
"domain": "google.com",
10+
"description": "Google DMARC policy",
11+
"tooltip": "Check DMARC policy for google.com (Google DMARC policy)"
12+
},
13+
"github": {
14+
"domain": "github.com",
15+
"description": "GitHub enterprise DMARC",
16+
"tooltip": "Check DMARC policy for github.com (GitHub enterprise DMARC)"
17+
},
18+
"microsoft": {
19+
"domain": "microsoft.com",
20+
"description": "Microsoft DMARC configuration",
21+
"tooltip": "Check DMARC policy for microsoft.com (Microsoft DMARC configuration)"
22+
},
23+
"paypal": {
24+
"domain": "paypal.com",
25+
"description": "PayPal strict DMARC policy",
26+
"tooltip": "Check DMARC policy for paypal.com (PayPal strict DMARC policy)"
27+
},
28+
"amazon": {
29+
"domain": "amazon.com",
30+
"description": "Amazon DMARC implementation",
31+
"tooltip": "Check DMARC policy for amazon.com (Amazon DMARC implementation)"
32+
},
33+
"salesforce": {
34+
"domain": "salesforce.com",
35+
"description": "Salesforce DMARC setup",
36+
"tooltip": "Check DMARC policy for salesforce.com (Salesforce DMARC setup)"
37+
}
38+
}
39+
},
440

541
"form": {
6-
"title": "DMARC Check",
7-
"domain": {
8-
"label": "Domain",
9-
"placeholder": "example.com"
10-
},
11-
"check": "Check DMARC",
12-
"checking": "Checking...",
13-
"error": "Please enter a domain"
42+
"title": "DMARC Policy Check",
43+
"domainLabel": "Domain Name",
44+
"domainTooltip": "Enter the domain to check DMARC policy for",
45+
"domainPlaceholder": "example.com",
46+
"checkButton": "Check DMARC Policy",
47+
"checking": "Checking DMARC..."
1448
},
1549

1650
"results": {
17-
"title": "DMARC Record Results",
18-
"found": "DMARC Record Found",
19-
"not_found": "DMARC Record Not Found",
20-
"policy": "Policy",
21-
"subdomain_policy": "Subdomain Policy",
22-
"percentage": "Percentage",
23-
"rua": "Aggregate Reports (RUA)",
24-
"ruf": "Forensic Reports (RUF)",
25-
"valid": "Valid",
26-
"invalid": "Invalid"
51+
"title": "DMARC Policy Analysis",
52+
"copy": "Copy Results",
53+
"copied": "Copied!",
54+
55+
"status": {
56+
"secure": "DMARC Configuration Secure",
57+
"issuesFound": "DMARC Issues Found",
58+
"needsImprovement": "DMARC Needs Improvement",
59+
"noCriticalIssues": "No critical issues detected",
60+
"issuesIdentified": "{count} issue{plural} identified"
61+
},
62+
63+
"recordSection": {
64+
"title": "DMARC Record",
65+
"location": "_dmarc.{domain}"
66+
},
67+
68+
"policyConfiguration": {
69+
"title": "Policy Configuration",
70+
"mainPolicy": "Main Policy",
71+
"subdomainPolicy": "Subdomain Policy",
72+
"coverage": "Coverage",
73+
"dkimAlignment": "DKIM Alignment",
74+
"spfAlignment": "SPF Alignment",
75+
"failureOptions": "Failure Options",
76+
77+
"policies": {
78+
"reject": "Reject non-compliant messages",
79+
"quarantine": "Quarantine suspicious messages",
80+
"none": "Monitor only, no action",
81+
"unknown": "Unknown policy"
82+
},
83+
84+
"alignment": {
85+
"strict": "Strict",
86+
"relaxed": "Relaxed",
87+
"strictDescription": "Exact domain match",
88+
"relaxedDescription": "Organizational domain match"
89+
},
90+
91+
"coverageDescription": "of messages affected",
92+
93+
"failureOptionsDescriptions": {
94+
"both": "DKIM and SPF failure",
95+
"any": "Any alignment failure",
96+
"dkim": "DKIM failure only",
97+
"spf": "SPF failure only",
98+
"custom": "Custom configuration"
99+
}
100+
},
101+
102+
"reporting": {
103+
"title": "Reporting Configuration",
104+
"aggregateReports": "Aggregate Reports (RUA)",
105+
"forensicReports": "Forensic Reports (RUF)",
106+
"notConfigured": "Not configured"
107+
},
108+
109+
"issues": {
110+
"title": "Issues & Recommendations",
111+
"messages": {
112+
"policyNone": "Policy is set to \"none\" - no action taken on DMARC failures",
113+
"relaxedAlignment": "Both DKIM and SPF alignment are relaxed - consider strict alignment",
114+
"noAggregateReporting": "No aggregate reporting address (rua) specified",
115+
"noForensicReporting": "No forensic reporting address (ruf) specified",
116+
"partialCoverage": "Only {percentage}% of messages are subject to DMARC policy"
117+
},
118+
"severityLevels": {
119+
"high": "HIGH",
120+
"medium": "MEDIUM",
121+
"low": "LOW"
122+
}
123+
}
124+
},
125+
126+
"noRecord": {
127+
"title": "No DMARC Record Found",
128+
"message": "Domain {domain} does not have a DMARC policy configured at {dmarcDomain}.",
129+
"helpText": "This means the domain is not protected by DMARC. Consider implementing a DMARC policy to prevent email spoofing."
130+
},
131+
132+
"error": {
133+
"title": "DMARC Check Failed",
134+
"lookupFailed": "DMARC check failed: {status}",
135+
"unknownError": "Unknown error occurred"
136+
},
137+
138+
"copy": {
139+
"header": "DMARC Check for {domain}",
140+
"generatedAt": "Generated at: {timestamp}",
141+
"recordLabel": "DMARC Record:",
142+
"parsedPolicyLabel": "Parsed Policy:",
143+
"mainPolicyLabel": "Main Policy:",
144+
"subdomainPolicyLabel": "Subdomain Policy:",
145+
"dkimAlignmentLabel": "DKIM Alignment:",
146+
"spfAlignmentLabel": "SPF Alignment:",
147+
"percentageLabel": "Percentage:",
148+
"aggregateReportsLabel": "Aggregate Reports:",
149+
"forensicReportsLabel": "Forensic Reports:",
150+
"failureOptionsLabel": "Failure Options:",
151+
"issuesFoundLabel": "Issues Found:",
152+
"noIssuesFound": "No issues found - DMARC configuration looks good!",
153+
"alignmentStrict": "strict",
154+
"alignmentRelaxed": "relaxed"
155+
},
156+
157+
"educational": {
158+
"title": "Understanding DMARC",
159+
160+
"policies": {
161+
"title": "DMARC Policies",
162+
"none": "Monitor mode - collect data but take no action on failures",
163+
"quarantine": "Mark suspicious messages, often sent to spam folder",
164+
"reject": "Reject non-compliant messages outright (strongest security)"
165+
},
166+
167+
"alignmentModes": {
168+
"title": "Alignment Modes",
169+
"relaxed": "Allows organizational domain matching (default)",
170+
"strict": "Requires exact domain matching (more secure)"
171+
},
172+
173+
"reportingTypes": {
174+
"title": "Reporting Types",
175+
"aggregate": "Daily summary reports of DMARC activity",
176+
"forensic": "Real-time failure reports with message samples"
177+
},
178+
179+
"bestPractices": {
180+
"title": "Best Practices",
181+
"items": {
182+
"startMonitoring": "Start with p=none to monitor before enforcement",
183+
"gradualEnforcement": "Gradually increase to p=quarantine then p=reject",
184+
"setupReporting": "Set up aggregate reporting to monitor DMARC activity",
185+
"strictAlignment": "Use strict alignment for enhanced security when possible",
186+
"subdomainPolicy": "Consider subdomain policy for comprehensive coverage"
187+
}
188+
}
27189
}
28190
}
Lines changed: 115 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,124 @@
11
{
2-
"title": "DNSSEC Validation Chain",
3-
"description": "Trace and validate the DNSSEC chain of trust for a domain",
2+
"title": "DNSSEC Validation Chain Checker",
3+
"subtitle": "Validate DNSSEC chain from root to domain, verify DS/DNSKEY matching and RRSIG signatures",
4+
5+
"examples": {
6+
"title": "Quick Examples",
7+
"items": {
8+
"govuk": {
9+
"domain": "gov.uk",
10+
"description": "UK Government (DNSSEC Enabled)",
11+
"tooltip": "Check DNSSEC for gov.uk"
12+
},
13+
"cloudflare": {
14+
"domain": "cloudflare.com",
15+
"description": "Cloudflare (DNSSEC Enabled)",
16+
"tooltip": "Check DNSSEC for cloudflare.com"
17+
},
18+
"failed": {
19+
"domain": "dnssec-failed.org",
20+
"description": "DNSSEC Failed Test",
21+
"tooltip": "Check DNSSEC for dnssec-failed.org"
22+
},
23+
"google": {
24+
"domain": "google.com",
25+
"description": "Google (DNSSEC Enabled)",
26+
"tooltip": "Check DNSSEC for google.com"
27+
},
28+
"isc": {
29+
"domain": "isc.org",
30+
"description": "ISC (DNSSEC Pioneer)",
31+
"tooltip": "Check DNSSEC for isc.org"
32+
},
33+
"ietf": {
34+
"domain": "ietf.org",
35+
"description": "IETF (DNSSEC Enabled)",
36+
"tooltip": "Check DNSSEC for ietf.org"
37+
}
38+
}
39+
},
440

541
"form": {
6-
"title": "DNSSEC Chain Validation",
7-
"domain": {
8-
"label": "Domain",
9-
"placeholder": "example.com"
10-
},
11-
"validate": "Validate DNSSEC Chain",
12-
"validating": "Validating...",
13-
"error": "Please enter a domain"
42+
"title": "Domain Name",
43+
"domainLabel": "Domain to Validate",
44+
"domainPlaceholder": "example.com",
45+
"validateButton": "Validate DNSSEC Chain",
46+
"validating": "Validating..."
47+
},
48+
49+
"loading": {
50+
"title": "Validating DNSSEC Chain",
51+
"message": "Querying DNS records from root to {domain}..."
52+
},
53+
54+
"error": {
55+
"title": "Validation Failed",
56+
"invalidDomain": "Please enter a valid domain name",
57+
"validationFailed": "DNSSEC validation failed",
58+
"unexpectedError": "An unexpected error occurred"
1459
},
1560

1661
"results": {
1762
"title": "DNSSEC Validation Results",
18-
"secure": "Secure",
19-
"insecure": "Insecure",
20-
"bogus": "Bogus",
21-
"chain_valid": "Chain Valid",
22-
"chain_broken": "Chain Broken",
23-
"ds_records": "DS Records",
24-
"dnskey_records": "DNSKEY Records",
25-
"rrsig_records": "RRSIG Records"
63+
"summary": {
64+
"valid": "DNSSEC Valid",
65+
"invalid": "DNSSEC Invalid",
66+
"domain": "Domain:",
67+
"chainLinks": "Chain Links:",
68+
"validated": "Validated:",
69+
"status": "Status:",
70+
"secure": "Secure",
71+
"brokenChain": "Broken Chain",
72+
"errors": "Validation Errors:"
73+
},
74+
"chain": {
75+
"title": "DNSSEC Chain",
76+
"level": "Level {level}",
77+
"ds": {
78+
"title": "DS Records",
79+
"tooltip": "Delegation Signer records link this zone to the parent zone",
80+
"keyTag": "Key Tag:",
81+
"keyTagTooltip": "Identifier for the DNSKEY this DS record refers to",
82+
"algorithm": "Algorithm:",
83+
"algorithmTooltip": "Cryptographic algorithm used for signing",
84+
"digestType": "Digest Type:",
85+
"digestTypeTooltip": "Hash algorithm used to create the digest",
86+
"hash": "Hash:",
87+
"hashTooltip": "Hash of the DNSKEY record"
88+
},
89+
"dnskey": {
90+
"title": "DNSKEY Records",
91+
"tooltip": "Public keys used to verify DNSSEC signatures",
92+
"keyTag": "Key Tag:",
93+
"keyTagTooltip": "Identifier for this DNSKEY",
94+
"flags": "Flags:",
95+
"flagsTooltip": "Key properties: 256=ZSK, 257=KSK",
96+
"algorithm": "Algorithm:",
97+
"algorithmTooltip": "Cryptographic algorithm used for signing",
98+
"matchedDS": "Matched DS",
99+
"matchedDSTooltip": "This DNSKEY matches a DS record in the parent zone",
100+
"ksk": "KSK",
101+
"kskTooltip": "Key Signing Key - signs other DNSKEYs",
102+
"zsk": "ZSK",
103+
"zskTooltip": "Zone Signing Key - signs zone data"
104+
},
105+
"rrsig": {
106+
"title": "RRSIG Records",
107+
"tooltip": "Digital signatures created with DNSKEY to authenticate DNS data",
108+
"typeCovered": "Type Covered:",
109+
"typeCoveredTooltip": "DNS record type this signature covers",
110+
"keyTag": "Key Tag:",
111+
"keyTagTooltip": "Identifies which DNSKEY created this signature",
112+
"signer": "Signer:",
113+
"signerTooltip": "Zone that created this signature",
114+
"valid": "Valid",
115+
"validTooltip": "Signature is valid and within time window",
116+
"invalid": "Invalid",
117+
"invalidTooltip": "Signature is expired or not yet valid"
118+
},
119+
"errors": {
120+
"title": "Errors"
121+
}
122+
}
26123
}
27124
}

0 commit comments

Comments
 (0)