*stop() function dnswatch_search() { // get domain var domain = document.getElementById('dnswatch-search').value.toLowerCase(); // test if domain is invalid if (!is_valid_domain(domain)) { document.getElementById('results').innerHTML = '
'; feather.replace(); document.getElementById('invaliddomain').style.visibility = 'visible'; document.getElementById('invaliddomain').style.display = 'block'; return; } document.getElementById('invaliddomain').style.visibility = 'hidden'; document.getElementById('invaliddomain').style.display = 'none'; // activate spinner document.getElementById('loadani').style.visibility = 'visible'; document.getElementById('loadani').style.display = 'block'; // send api request var request = new XMLHttpRequest(); request.open('POST', 'https://dns-watch.org/search', true); request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); request.onload = function() { if (request.status >= 200 && request.status < 400) { var response = JSON.parse(this.response); //console.log(response); // TODO: CLEAN UP THIS MESS OF TABLE GENERATION CODE if (response['type'] == 'success') { // success var table = '\n'; //// reference dns // status table += '\n'; table += '\n'; // provider table += '\n' // name and address table += `\n`; // reference info table += '\n'; // help button table += '\n'; table += '\n' if (response['data']['reference']['found']) { // only if reference confirms table += '\n'; // spacer //// search rows response['data']['search'].forEach(i => { //console.log(i); table += '\n'; // status table += `\n'; // provider icon table += '\n'; // name and address table += `\n`; // status info if (i['cause'] !== null) { if (i['cause'] == 'cuii') { table += '\n'; table += '\n' } } table += '\n'; }); } table += '
\n'; table += `\n`; table += '\n'; table += `\n`; table += '${ response["data"]["reference"]["name"] }${ response["data"]["reference"]["address"] }reference\n'; table += '\n'; table += '
\n`; table += `\n`; table += '\n'; table += `\n`; table += '${ i["name"] }${ i["address"] }blocked by cuii\n'; table += '\n'; table += '
'; } else { // no success if (response['error'] == 'malformed_domain') { // invalid domain - should not happen, but just in case i guess var table = '
'; document.getElementById('results').innerHTML = '
'; feather.replace(); document.getElementById('invaliddomain').style.visibility = 'visible'; document.getElementById('invaliddomain').style.display = 'block'; } else { var table = '\n'; table += '\n'; // status table += '\n'; // provider icon table += '\n'; // name and address table += `\n`; table += '\n'; table += '\n'; table += '\n'; table += '
\n'; table += '\n'; table += '\n'; table += '\n'; table += 'ERROR: ${ response["error"] }
'; } } document.getElementById('results').innerHTML = table; feather.replace(); } // deactivate spinner document.getElementById('loadani').style.visibility = 'hidden'; document.getElementById('loadani').style.display = 'none'; } request.send(`domain=${ window.btoa(domain) }`); } function is_valid_domain(str) { let regex = /^([a-z0-9\-]{1,64}\.){1,16}[a-z0-9]{2,}$/; return regex.test(str); } // add event triggers document.addEventListener('DOMContentLoaded', () => { document.getElementById('dnswatch-search-submit').addEventListener('click', (event) => { dnswatch_search(); }); document.getElementById('dnswatch-search').addEventListener('keyup', (event) => { if (event.keyCode === 13) { event.preventDefault(); dnswatch_search(); } }); });