aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Timber <dxdt@dev.snart.me>2024-08-19 08:23:29 +0200
committerDavid Timber <dxdt@dev.snart.me>2024-08-19 08:23:29 +0200
commitc4714696af3a3021d99df407c8cb0f284fa5c52d (patch)
tree1ff74c742aaa995f6af3d85130be0e34c15ab48e
parentf350500627967412318c788dc516cc6f99c37b58 (diff)
Optimise mx-aaaa, update doc
-rw-r--r--mx-aaaa/README.md3
-rw-r--r--mx-aaaa/modules/mx-aaaa.js12
-rw-r--r--mx-aaaa/resolve-mx-aaaa.css4
-rw-r--r--mx-aaaa/resolve-mx-aaaa.html2
-rw-r--r--mx-aaaa/resolve-mx-aaaa.js59
5 files changed, 54 insertions, 26 deletions
diff --git a/mx-aaaa/README.md b/mx-aaaa/README.md
index 243875b..1868097 100644
--- a/mx-aaaa/README.md
+++ b/mx-aaaa/README.md
@@ -6,4 +6,5 @@ https://dxdxdt.github.io/mx-aaaa
![Screenshot of result cards](image.png)
-Made to track progress of major service providers' transition to IPv6.
+Made to track progress of major service providers' transition to IPv6. Try the
+list from https://gist.github.com/tbrianjones/5992856. 5% as of August 2024.
diff --git a/mx-aaaa/modules/mx-aaaa.js b/mx-aaaa/modules/mx-aaaa.js
index 807f691..ae26594 100644
--- a/mx-aaaa/modules/mx-aaaa.js
+++ b/mx-aaaa/modules/mx-aaaa.js
@@ -135,10 +135,13 @@ export class ResolveMXAAAA {
}
// Get all MX
+ let i = 0;
for (const domain of list) {
const q_mx = await resolver.resolve('MX', domain);
let has_a = 0, has_aaaa = 0;
+ this.onresolve('start', { domain: domain }, ret);
+
for (let mx of q_mx) {
// don't need the number part
const d = mx.search(/\s+/);
@@ -183,6 +186,15 @@ export class ResolveMXAAAA {
ret.counts.has_a += has_a;
ret.counts.has_aaaa += has_aaaa;
+ i += 1;
+
+ this.onresolve('end', {
+ domain: domain,
+ progress: {
+ cur: i,
+ cnt: list.length
+ }
+ }, ret);
}
return ret;
diff --git a/mx-aaaa/resolve-mx-aaaa.css b/mx-aaaa/resolve-mx-aaaa.css
index 43d7db2..47691c4 100644
--- a/mx-aaaa/resolve-mx-aaaa.css
+++ b/mx-aaaa/resolve-mx-aaaa.css
@@ -6,6 +6,10 @@ div.domainCard {
border-radius: 1ch;
}
+div.beigeDomainCard {
+ background-color: beige;
+}
+
div.redDomainCard {
background-color: red;
}
diff --git a/mx-aaaa/resolve-mx-aaaa.html b/mx-aaaa/resolve-mx-aaaa.html
index d9d3082..bd520e2 100644
--- a/mx-aaaa/resolve-mx-aaaa.html
+++ b/mx-aaaa/resolve-mx-aaaa.html
@@ -32,7 +32,7 @@
</table>
<div>
<h2>Output</h2>
- <pre id="output"></pre>
+ <pre id="output" contenteditable></pre>
</div>
</body>
diff --git a/mx-aaaa/resolve-mx-aaaa.js b/mx-aaaa/resolve-mx-aaaa.js
index 870626a..76dfd3b 100644
--- a/mx-aaaa/resolve-mx-aaaa.js
+++ b/mx-aaaa/resolve-mx-aaaa.js
@@ -6,6 +6,27 @@ const rt_output = document.getElementById('output');
const i_txtlist = document.getElementById('txtlist');
const rt_hlist = document.getElementById('hlist');
+let progressCounter = 0;
+let progress = {
+ cur: 0,
+ cnt: 0
+};
+
+function doProgressRender () {
+ const dots = '.'.repeat(progressCounter);
+ let progressStr;
+
+ if (progress.cnt > 0) {
+ const percent = (progress.cur / progress.cnt * 100).toFixed(2);
+ progressStr = `(${progress.cur}/${progress.cnt} ${percent})`;
+ }
+ else {
+ progressStr = '';
+ }
+ rt_status.innerText = `in progress ${progressStr} ${dots}`;
+ progressCounter = (progressCounter + 1) % 4;
+}
+
function onresolvereducer (what, obj, map) {
try {
const cnt_mx = map.mxmap[obj.domain].mx.length;
@@ -19,21 +40,21 @@ function onresolvereducer (what, obj, map) {
else if ((cnt_a > 0 && cnt_mx !== cnt_a) ||
(cnt_aaaa > 0 && cnt_mx !== cnt_aaaa))
{
- return ['redDomainCard', 'some mx missing'];
+ return 'redDomainCard';
}
else if (cnt_aaaa > 0) {
if (cnt_a > 0) {
- return ['greenDomainCard', 'dual stack'];
+ return 'greenDomainCard';
}
else {
- return ['magentaDomainCard', 'ipv6 only'];
+ return 'magentaDomainCard';
}
}
else if (cnt_a > 0) {
- return ['yellowDomainCard', 'ipv4 only'];
+ return 'yellowDomainCard';
}
else {
- return ['redDomainCard', 'no a or aaaa'];
+ return 'redDomainCard';
}
}
@@ -42,23 +63,21 @@ function onresolvereducer (what, obj, map) {
const statusLine = card.getElementsByClassName('domainStatus')[0];
statusLine.innerText = `mx: ${cnt_mx}, a: ${cnt_a}, aaaa: ${cnt_aaaa}`;
- switch (what) {
- case 'a':
- case 'aaaa':
+
+ if (what === 'end') {
const d = determineCard();
+
if (d) {
- card.classList = `domainCard ${d[0]}`;
- statusLine.innerText += ` (${d[1]})`;
+ card.classList = `domainCard ${d}`;
}
- break;
+ progress = obj.progress;
}
-
}
catch (e) {
console.error(e);
}
finally {
- rt_output.innerText += what + ': ' + JSON.stringify(obj) + '\n';
+ console.log(what + ': ' + JSON.stringify(obj) + '\n');
}
}
@@ -70,10 +89,10 @@ function initCards (list) {
const statusLine = document.createElement('span');
statusLine.className = 'domainStatus';
- statusLine.innerText = 'mx: 0, a: 0, aaaa: 0 (pending)';
+ statusLine.innerText = 'mx: 0, a: 0, aaaa: 0';
const card = document.createElement('div');
- card.classList = 'domainCard redDomainCard';
+ card.classList = 'domainCard beigeDomainCard';
card.id = `resolve-mx-card-${domain}`;
rt_cardHolder.appendChild(card);
@@ -83,16 +102,9 @@ function initCards (list) {
}
new Promise(async function () {
- let progressCounter = 0;
- function doProgressRender () {
- const dots = '.'.repeat(progressCounter);
-
- rt_status.innerText = 'in progress ' + dots;
- progressCounter = (progressCounter + 1) % 4;
- }
+ const progressRenderTimer = setInterval(doProgressRender, 500);
doProgressRender();
- const progressRenderTimer = setInterval(doProgressRender, 500);
try {
let txt = localStorage.getItem("domains");
@@ -116,7 +128,6 @@ new Promise(async function () {
const percent = (result.counts.has_aaaa / result.counts.mx * 100).toFixed(2);
rt_status.innerText = `SUCCESS: ${result.counts.has_aaaa} of ${result.counts.mx} service providers have AAAA (${percent}%)`;
- rt_output.innerText += '\n';
rt_output.innerText += JSON.stringify(result, null, '\t');
}
catch (e) {