flash.moe/public/assets/2021whois.js

99 lines
3.1 KiB
JavaScript
Raw Normal View History

2022-09-27 01:58:32 +00:00
(function() {
var locked = false,
input = document.getElementById('lookup-input'),
submit = document.getElementById('lookup-submit'),
result = document.getElementById('lookup-result');
var lock = function() {
if(locked)
return false;
document.body.classList.add('whois-locked');
input.disabled = true;
locked = true;
return true;
}
var unlock = function() {
if(!locked)
return false;
document.body.classList.remove('whois-locked');
input.disabled = false;
locked = false;
return true;
}
var lookup = function(target) {
if(!lock())
return;
var xhr = new XMLHttpRequest;
xhr.addEventListener('load', function() {
var resp = JSON.parse(xhr.responseText);
if(resp.error) {
alert(resp.text);
} else {
var lastWhois = resp.result.responses[resp.result.responses.length - 1],
isIpAddr = false;
for(var i = 0; i < lastWhois.lines.length; ++i) {
var line = lastWhois.lines[i];
if(line.substring(0, 4) === 'inet') {
isIpAddr = true;
break;
}
}
var text = '';
if(isIpAddr) {
text += 'RESULTS FOUND: ' + resp.result.responses.length.toString() + "\r\n";
for(var i = 0; i < resp.result.responses.length; ++i) {
var response = resp.result.responses[i];
text += "\r\n-------------\r\n";
text += 'Lookup results for ' + resp.result.target + ' from ' + response.server + ":\r\n\r\n";
text += response.lines.join("\r\n").trim() + "\r\n";
}
} else {
for(var i = 0; i < resp.result.responses.length; ++i) {
var response = resp.result.responses[i];
text += resp.result.target + ' domain lookup result from ' + response.server + "\r\n\r\n";
text += response.lines.join("\r\n").trim() + "\r\n\r\n";
}
}
result.textContent = text;
}
unlock();
});
xhr.open('GET', '/whois/lookup?target=' + encodeURIComponent(target));
xhr.send();
}
var readHash = function() {
if(location.hash.length < 2) {
result.textContent = 'Enter a domain or IP address!';
return;
}
var target = decodeURIComponent(location.hash.substring(1));
if(input.value !== target)
input.value = target;
lookup(target);
};
window.addEventListener('hashchange', function(ev) {
readHash();
}, false);
submit.addEventListener('click', function(ev) {
ev.preventDefault();
location.hash = encodeURIComponent(input.value);
});
readHash();
})();