-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
153 lines (150 loc) · 10.8 KB
/
index.html
File metadata and controls
153 lines (150 loc) · 10.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
<!doctype html>
<!--
Copyright 2026 ToppyMicroServices OU
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<html lang="ja" data-resolver-mode="auto">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; base-uri 'none'; object-src 'none'; frame-ancestors 'none'; form-action 'self'; script-src 'self' https://cdn.jsdelivr.net; script-src-attr 'none'; style-src 'self' https://fonts.googleapis.com; font-src https://fonts.gstatic.com; img-src 'self' https: data:; connect-src 'self' https:;">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Toppy DNS / Email Auth Quick Check</title>
<link rel="icon" href="favicon.ico">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap" rel="stylesheet">
<link rel="stylesheet" href="styles.css">
<script defer src="https://cdn.jsdelivr.net/npm/dompurify@3.0.8/dist/purify.min.js" integrity="sha256-0kaYYq3qitkkVZpP/6uKTJwfTpqFNM6OHDbsaYzw9Uw=" crossorigin="anonymous"></script>
<script defer src="i18n/ja.js"></script>
<script defer src="i18n/en.js"></script>
<script defer src="i18n/es.js"></script>
<script defer src="i18n/de.js"></script>
<script defer src="i18n/ko.js"></script>
<script defer src="i18n/vi.js"></script>
<script defer src="i18n/th.js"></script>
<script defer src="i18n/km.js"></script>
<script defer src="i18n/my.js"></script>
<script defer src="i18n/id.js"></script>
<script defer src="i18n/et.js"></script>
<script defer src="i18n/zh.js"></script>
<script defer src="i18n/ru.js"></script>
<script defer src="i18n/vi_extra.js"></script>
<script defer src="i18n/th_extra.js"></script>
<script defer src="i18n/km_extra.js"></script>
<script defer src="i18n/id_extra.js"></script>
<script defer src="i18n/et_extra.js"></script>
<script defer src="i18n/zh_extra.js"></script>
<script defer src="i18n/ru_extra.js"></script>
<script defer src="i18n/es_extra.js"></script>
<script defer src="i18n/de_extra.js"></script>
<script defer src="i18n/extra_tr_my.js"></script>
<script defer src="i18n/extra_tr_ko.js"></script>
<script defer src="app.js"></script>
</head>
<body>
<div class="shell">
<div class="brandbar" aria-label="ToppyMicroServices">
<img src="assets/favicon.ico" alt="ToppyMicroServices">
<span class="brand-name">ToppyMicroServices</span>
<div class="brand-actions">
<nav class="lang-switch" aria-label="Language">
<button type="button" class="lang-btn" data-lang-choice="ja" title="日本語" aria-label="日本語">JA</button>
<button type="button" class="lang-btn" data-lang-choice="en" title="English" aria-label="English">EN</button>
<button type="button" class="lang-btn" data-lang-choice="es" title="Español" aria-label="Español">ES</button>
<button type="button" class="lang-btn" data-lang-choice="de" title="Deutsch" aria-label="Deutsch">DE</button>
<button type="button" class="lang-btn" data-lang-choice="ko" title="한국어" aria-label="한국어">KO</button>
<button type="button" class="lang-btn" data-lang-choice="vi" title="Tiếng Việt" aria-label="Tiếng Việt">VI</button>
<button type="button" class="lang-btn" data-lang-choice="th" title="ไทย" aria-label="ไทย">TH</button>
<button type="button" class="lang-btn" data-lang-choice="km" title="ភាសាខ្មែរ" aria-label="ភាសាខ្មែរ">KM</button>
<button type="button" class="lang-btn" data-lang-choice="my" title="မြန်မာ" aria-label="မြန်မာ">MY</button>
<button type="button" class="lang-btn" data-lang-choice="id" title="Bahasa Indonesia" aria-label="Bahasa Indonesia">ID</button>
<button type="button" class="lang-btn" data-lang-choice="et" title="Eesti" aria-label="Eesti">ET</button>
<button type="button" class="lang-btn" data-lang-choice="zh" title="中文" aria-label="中文">ZH</button>
<button type="button" class="lang-btn" data-lang-choice="ru" title="Русский" aria-label="Русский">RU</button>
</nav>
<a class="brand-github" href="https://github.com/thinksyncs/toppy-dns-quickcheck" target="_blank" rel="noopener" aria-label="GitHub">
<svg class="brand-github-icon" viewBox="0 0 16 16" aria-hidden="true">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8Z" />
</svg>
</a>
</div>
</div>
<section class="hero">
<p class="pill" data-i18n="hero.pill">DNS Quick 診断(公開DNSのみ)</p>
<div class="flex flex-center-wrap">
<h1 data-i18n="hero.title">業務用メールのなりすまし対策を,公開DNS情報から簡易チェック</h1>
</div>
<p class="tagline" data-i18n="hero.tagline">公開DNSに設定されたSPF,DKIM, DMARC 情報をもとに,なりすまし対策の有無を推定評価します</p>
<p class="tiny muted mt-10" data-i18n="hero.free">完全無料(登録不要)</p>
<p class="tiny muted mt-4" data-i18n-html="hero.prs.html">PRs for typos are welcome on <a href="https://github.com/thinksyncs/toppy-dns-quickcheck" target="_blank" rel="noopener">GitHub</a>.</p>
<div class="flex mt-18 z-1">
<div class="card">
<h2 class="m-0-0-6" data-i18n="form.title">Quick 診断</h2>
<form id="quick-check-form">
<div>
<label for="domain" data-i18n="form.domain">ドメイン</label>
<input id="domain" name="domain" placeholder="example.com" required>
</div>
<label class="flex-label">
<input type="checkbox" id="consent" required checked class="w-auto"> <span data-i18n="form.consent">公開DNS(誰でも閲覧可能な範囲)の確認に同意する</span>
</label>
<label class="flex-label">
<input type="checkbox" id="subdomain-scan" class="w-auto"> <span data-i18n="form.subdomain">サブドメイン探索も実行する(任意)</span>
</label>
<label class="flex-label">
<input type="checkbox" id="dnsbl-check" class="w-auto"> <span data-i18n="form.dnsbl">DNSBLチェックも実行する(任意: 時間がかかります)</span>
</label>
<div class="resolver-controls">
<div>
<label for="resolver-select" data-i18n="form.resolver">Resolver (DoH)</label>
<select id="resolver-select">
<option value="cloudflare" data-i18n="form.resolver.cloudflare">Cloudflare</option>
<option value="quad9" data-i18n="form.resolver.quad9">Quad9</option>
<option value="google" data-i18n="form.resolver.google">Google</option>
<option value="custom" data-i18n="form.resolver.custom">Custom (URL)</option>
</select>
</div>
<div id="resolver-custom-wrap" class="hidden">
<label for="resolver-custom" data-i18n="form.resolver.customLabel">Custom DoH URL</label>
<input id="resolver-custom" data-i18n-placeholder="form.resolver.customPlaceholder" placeholder="https://example.com/dns-query">
<p class="tiny muted mt-6" data-i18n="form.resolver.customHint">自前のDoH(HTTPS)を指定できます</p>
</div>
</div>
<p class="tiny text-warn" id="resolver-error"></p>
<div class="grid">
<button type="submit" id="go-deep-btn" class="btn-gradient" data-i18n="form.deep">診断を実行</button>
</div>
<p class="tiny" data-i18n="form.note">※公開DNSのみを参照し,メール送受信やサーバーアクセスは行いません.</p>
<p class="tiny" data-i18n="form.privacy">※個人情報は収集しません.DNS照会は選択したDoHリゾルバ(既定: Cloudflare)に送信され,提供者側でログ/統計利用される可能性があります(各社ポリシー参照).</p>
<p class="tiny muted" data-i18n="form.privacyFirst">※プライバシー優先: Resolver(DoH)のCustomで自前のDoH URLを指定できます.</p>
<p class="tiny muted" id="resolver-note"></p>
<p class="tiny muted" data-i18n="form.disclaimer">※結果は目安で,最終判断にはメールヘッダ等の一次情報が必要になる場合があります.</p>
<p class="tiny muted" data-i18n="form.subdomainNote">※サブドメイン探索(小規模)は管理下ドメイン, または明示許可のある範囲でのみ使用してください.</p>
<div class="mt-10">
<p class="tiny muted">
<strong data-i18n="rua.link.label">RUA集約レポート(DMARC):</strong>
<a href="rua_service.html" data-i18n="rua.link.spec">RUAサービス(無料)の紹介</a>
</p>
<details class="tiny muted">
<summary data-i18n-html="rua.example.summary.html">DMARCに <code>rua=</code> を追加する例(DMARC4all)</summary>
<pre class="tiny" style="white-space: pre-wrap; margin-top: 6px;" data-i18n="rua.example.block">v=DMARC1のTXTに追加:
rua=mailto:example.com@dmarc4all.toppymicros.com</pre>
<p class="tiny muted" style="margin-top: 6px;" data-i18n-html="rua.example.note.html">※既存のDMARC設定(p= / sp= / adkim= / aspf= など)は維持したまま、<code>rua=</code> だけを追加(または更新)する。</p>
</details>
</div>
</form>
<div id="report" class="report" aria-live="polite"></div>
</div>
</div>
</section>
</div>
</body>
</html>