🚸 add domain validity checker #3
@ -8,6 +8,8 @@ echo "<title>dnswatch</title>
|
|||||||
<link rel=\"stylesheet\" href=\"index.css\">
|
<link rel=\"stylesheet\" href=\"index.css\">
|
||||||
<link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Inter:wght@200;300;400;700&display=swap\">
|
<link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Inter:wght@200;300;400;700&display=swap\">
|
||||||
<link rel=\"shortcut icon\" type=\"image/png\" href=\"favicon.png\">
|
<link rel=\"shortcut icon\" type=\"image/png\" href=\"favicon.png\">
|
||||||
|
<meta content=\"text/html;charset=utf-8\" http-equiv=\"Content-Type\">
|
||||||
|
<meta content=\"utf-8\" http-equiv=\"encoding\">
|
||||||
<script src=\"index.js\"></script>
|
<script src=\"index.js\"></script>
|
||||||
<script src=\"https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js\"></script>" | cat - html/index.html > temp
|
<script src=\"https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js\"></script>" | cat - html/index.html > temp
|
||||||
mv temp html/index.html
|
mv temp html/index.html
|
||||||
|
@ -45,6 +45,9 @@ input, button {
|
|||||||
font-size: 4rem;
|
font-size: 4rem;
|
||||||
font-weight: 200;
|
font-weight: 200;
|
||||||
}
|
}
|
||||||
|
#title h1 span {
|
||||||
|
color: #4c5666;
|
||||||
|
}
|
||||||
|
|
||||||
#search {
|
#search {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@ -119,6 +122,15 @@ input, button {
|
|||||||
color: #61afef;
|
color: #61afef;
|
||||||
margin-left: 0.5rem;
|
margin-left: 0.5rem;
|
||||||
}
|
}
|
||||||
|
#search #invaliddomain {
|
||||||
|
color: #e06c75;
|
||||||
|
display: none;
|
||||||
|
margin-top: 1rem;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
#search #invaliddomain .feather {
|
||||||
|
vertical-align: -0.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
#results table {
|
#results table {
|
||||||
margin-left: 25vw;
|
margin-left: 25vw;
|
||||||
|
@ -1 +1 @@
|
|||||||
{"version":3,"sourceRoot":"","sources":["../raw/index.sass"],"names":[],"mappings":"AASA;EACC;;;AAED;EACC,kBAZS;EAaT,OAXS;EAYT,aATS;EAUT;EACA;EACA;;;AAED;EACC,aAfS;;;AAiBV;EACC;EACA;EACA;;AACA;EACC,kBA3BQ;EA4BR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;;AAEH;EACC;EACA;EACA;;AACA;EACC;EACA;;;AAEF;EACC;;AAEC;EACC;EACA;;AACD;EACC;EACA;EACA;EACA,OAxDO;EAyDP;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACF;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;;AACA;EACC;EACA,OA/EK;;AAgFP;EACC;EACA;EACA;EACA;;AACA;EACC;EACA;;AAEJ;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AACD;EACC,OA5GO;EA6GP;;;AAGF;EACC;EACA;EACA;;AACA;EACC;;AACA;EACC;;AACA;EACC,OAvHK;;AAwHN;EACC,OAxHK;;AAyHN;EACC,OA7HK;;AA8HP;EACC;EACA;;AACD;EACC;EACA;;AACD;EACC;;AACA;EACC,OApIK;;AAqIN;EACC,OAzIK;;AA0IP;EACC;EACA;;AACA;EACC,kBA/IK;EAgJL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACD;EACC;EACA;EACA;;;AAEN;EACC;IACC;;EACD;IACC","file":"index.css"}
|
{"version":3,"sourceRoot":"","sources":["../raw/index.sass"],"names":[],"mappings":"AASA;EACC;;;AAED;EACC,kBAZS;EAaT,OAXS;EAYT,aATS;EAUT;EACA;EACA;;;AAED;EACC,aAfS;;;AAiBV;EACC;EACA;EACA;;AACA;EACC,kBA3BQ;EA4BR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;;AAEH;EACC;EACA;EACA;;AACA;EACC;EACA;;AACA;EACC;;;AAEH;EACC;;AAEC;EACC;EACA;;AACD;EACC;EACA;EACA;EACA,OA1DO;EA2DP;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACF;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;;AACA;EACC;EACA,OAjFK;;AAkFP;EACC;EACA;EACA;EACA;;AACA;EACC;EACA;;AAEJ;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AACD;EACC,OA9GO;EA+GP;;AAEF;EACC,OA/GQ;EAgHR;EACA;EACA;;AACA;EACC;;;AAGF;EACC;EACA;EACA;;AACA;EACC;;AACA;EACC;;AACA;EACC,OAjIK;;AAkIN;EACC,OAlIK;;AAmIN;EACC,OAvIK;;AAwIP;EACC;EACA;;AACD;EACC;EACA;;AACD;EACC;;AACA;EACC,OA9IK;;AA+IN;EACC,OAnJK;;AAoJP;EACC;EACA;;AACA;EACC,kBAzJK;EA0JL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACD;EACC;EACA;EACA;;;AAEN;EACC;IACC;;EACD;IACC","file":"index.css"}
|
@ -2,6 +2,8 @@
|
|||||||
<link rel="stylesheet" href="index.css">
|
<link rel="stylesheet" href="index.css">
|
||||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@200;300;400;700&display=swap">
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@200;300;400;700&display=swap">
|
||||||
<link rel="shortcut icon" type="image/png" href="favicon.png">
|
<link rel="shortcut icon" type="image/png" href="favicon.png">
|
||||||
|
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
|
||||||
|
<meta content="utf-8" http-equiv="encoding">
|
||||||
<script src="index.js"></script>
|
<script src="index.js"></script>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
|
||||||
<div id="header"><button><i data-feather="globe"></i></button><button><i data-feather="sun"></i></button></div><div id="title"><h1>dnswatch</h1></div><div id="search"><div id="searchbar"><div class="buttonspacer"></div><input id="dnswatch-search" type="text" placeholder="Search..."/><button id="dnswatch-search-submit"><i data-feather="search"></i></button><button id="help"><i data-feather="help-circle"></i></button></div><small>Try "gnu.org", "wikipedia.com", "s.to" or your own website!</small><div id="loadani"><div id="spinner"></div><span>loading...</span></div></div><div id="results"></div><script src="feather.js"></script>
|
<div id="header"><button><i data-feather="globe"></i></button><button><i data-feather="sun"></i></button></div><div id="title"><h1>dns-watch<span>.org</span></h1></div><div id="search"><div id="searchbar"><div class="buttonspacer"></div><input id="dnswatch-search" type="text" placeholder="Search..." autofocus="autofocus"/><button id="dnswatch-search-submit"><i data-feather="search"></i></button><button id="help"><i data-feather="help-circle"></i></button></div><small>Try "gnu.org", "wikipedia.com", "s.to" or your own website!</small><div id="loadani"><div id="spinner"></div><span>loading...</span></div><div id="invaliddomain"><i data-feather="x"></i><span>invalid domain.</span></div></div><div id="results"></div><script src="feather.js"></script>
|
||||||
|
@ -1,11 +1,23 @@
|
|||||||
function dnswatch_search() {
|
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 = '<table></table>';
|
||||||
|
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
|
// activate spinner
|
||||||
document.getElementById('loadani').style.visibility = 'visible';
|
document.getElementById('loadani').style.visibility = 'visible';
|
||||||
document.getElementById('loadani').style.display = 'block';
|
document.getElementById('loadani').style.display = 'block';
|
||||||
|
|
||||||
// get domain
|
|
||||||
var domain = document.getElementById('dnswatch-search').value.toLowerCase();
|
|
||||||
|
|
||||||
// send api request
|
// send api request
|
||||||
var request = new XMLHttpRequest();
|
var request = new XMLHttpRequest();
|
||||||
request.open('POST', 'https://dns-watch.org/search', true);
|
request.open('POST', 'https://dns-watch.org/search', true);
|
||||||
@ -16,6 +28,8 @@ function dnswatch_search() {
|
|||||||
var response = JSON.parse(this.response);
|
var response = JSON.parse(this.response);
|
||||||
console.log(response);
|
console.log(response);
|
||||||
|
|
||||||
|
// TODO: CLEAN UP THIS MESS OF TABLE GENERATION CODE
|
||||||
|
|
||||||
if (response['type'] == 'success') { // success
|
if (response['type'] == 'success') { // success
|
||||||
|
|
||||||
var table = '<table>\n';
|
var table = '<table>\n';
|
||||||
@ -71,6 +85,13 @@ function dnswatch_search() {
|
|||||||
|
|
||||||
} else { // no success
|
} else { // no success
|
||||||
|
|
||||||
|
if (response['error'] == 'malformed_domain') { // invalid domain - should not happen, but just in case i guess
|
||||||
|
var table = '<table></table>';
|
||||||
|
document.getElementById('results').innerHTML = '<table></table>';
|
||||||
|
feather.replace();
|
||||||
|
document.getElementById('invaliddomain').style.visibility = 'visible';
|
||||||
|
document.getElementById('invaliddomain').style.display = 'block';
|
||||||
|
} else {
|
||||||
var table = '<table>\n';
|
var table = '<table>\n';
|
||||||
table += '<tr>\n';
|
table += '<tr>\n';
|
||||||
// status
|
// status
|
||||||
@ -87,6 +108,7 @@ function dnswatch_search() {
|
|||||||
table += '<td class="help"></td>\n';
|
table += '<td class="help"></td>\n';
|
||||||
table += '</tr>\n';
|
table += '</tr>\n';
|
||||||
table += '</table>';
|
table += '</table>';
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,6 +126,13 @@ function dnswatch_search() {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function is_valid_domain(str) {
|
||||||
|
let regex = /^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$/;
|
||||||
|
return regex.test(str);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// add event triggers
|
// add event triggers
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
document.getElementById('dnswatch-search-submit').addEventListener('click', (event) => {
|
document.getElementById('dnswatch-search-submit').addEventListener('click', (event) => {
|
||||||
|
@ -46,6 +46,9 @@ input, button {
|
|||||||
font-size: 4rem;
|
font-size: 4rem;
|
||||||
font-weight: 200;
|
font-weight: 200;
|
||||||
}
|
}
|
||||||
|
#title h1 span {
|
||||||
|
color: #4c5666;
|
||||||
|
}
|
||||||
|
|
||||||
#search {
|
#search {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@ -120,6 +123,15 @@ input, button {
|
|||||||
color: #61afef;
|
color: #61afef;
|
||||||
margin-left: 0.5rem;
|
margin-left: 0.5rem;
|
||||||
}
|
}
|
||||||
|
#search #invaliddomain {
|
||||||
|
color: #e06c75;
|
||||||
|
display: none;
|
||||||
|
margin-top: 1rem;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
#search #invaliddomain .feather {
|
||||||
|
vertical-align: -0.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
#results table {
|
#results table {
|
||||||
margin-left: 25vw;
|
margin-left: 25vw;
|
||||||
|
@ -1 +1 @@
|
|||||||
{"version":3,"sourceRoot":"","sources":["../raw/index.sass"],"names":[],"mappings":"AASA;EACC;;;AAED;EACC,kBAZS;EAaT,OAXS;EAYT,aATS;EAUT;EACA;EACA;;;AAED;EACC,aAfS;;;AAiBV;EACC;EACA;EACA;;AACA;EACC,kBA3BQ;EA4BR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;;AAEH;EACC;EACA;EACA;;AACA;EACC;EACA;;;AAEF;EACC;;AAEC;EACC;EACA;;AACD;EACC;EACA;EACA;EACA,OAxDO;EAyDP;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACF;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;;AACA;EACC;EACA,OA/EK;;AAgFP;EACC;EACA;EACA;EACA;;AACA;EACC;EACA;;AAEJ;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AACD;EACC,OA5GO;EA6GP;;;AAGF;EACC;EACA;EACA;;AACA;EACC;;AACA;EACC;;AACA;EACC,OAvHK;;AAwHN;EACC,OAxHK;;AAyHN;EACC,OA7HK;;AA8HP;EACC;EACA;;AACD;EACC;EACA;;AACD;EACC;;AACA;EACC,OApIK;;AAqIN;EACC,OAzIK;;AA0IP;EACC;EACA;;AACA;EACC,kBA/IK;EAgJL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACD;EACC;EACA;EACA;;;AAEN;EACC;IACC;;EACD;IACC","file":"index.css"}
|
{"version":3,"sourceRoot":"","sources":["../raw/index.sass"],"names":[],"mappings":"AASA;EACC;;;AAED;EACC,kBAZS;EAaT,OAXS;EAYT,aATS;EAUT;EACA;EACA;;;AAED;EACC,aAfS;;;AAiBV;EACC;EACA;EACA;;AACA;EACC,kBA3BQ;EA4BR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;;AAEH;EACC;EACA;EACA;;AACA;EACC;EACA;;AACA;EACC;;;AAEH;EACC;;AAEC;EACC;EACA;;AACD;EACC;EACA;EACA;EACA,OA1DO;EA2DP;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACF;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;;AACA;EACC;EACA,OAjFK;;AAkFP;EACC;EACA;EACA;EACA;;AACA;EACC;EACA;;AAEJ;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AACD;EACC,OA9GO;EA+GP;;AAEF;EACC,OA/GQ;EAgHR;EACA;EACA;;AACA;EACC;;;AAGF;EACC;EACA;EACA;;AACA;EACC;;AACA;EACC;;AACA;EACC,OAjIK;;AAkIN;EACC,OAlIK;;AAmIN;EACC,OAvIK;;AAwIP;EACC;EACA;;AACD;EACC;EACA;;AACD;EACC;;AACA;EACC,OA9IK;;AA+IN;EACC,OAnJK;;AAoJP;EACC;EACA;;AACA;EACC,kBAzJK;EA0JL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACD;EACC;EACA;EACA;;;AAEN;EACC;IACC;;EACD;IACC","file":"index.css"}
|
@ -1,12 +1,24 @@
|
|||||||
*stop()
|
*stop()
|
||||||
function dnswatch_search() {
|
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 = '<table></table>';
|
||||||
|
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
|
// activate spinner
|
||||||
document.getElementById('loadani').style.visibility = 'visible';
|
document.getElementById('loadani').style.visibility = 'visible';
|
||||||
document.getElementById('loadani').style.display = 'block';
|
document.getElementById('loadani').style.display = 'block';
|
||||||
|
|
||||||
// get domain
|
|
||||||
var domain = document.getElementById('dnswatch-search').value.toLowerCase();
|
|
||||||
|
|
||||||
// send api request
|
// send api request
|
||||||
var request = new XMLHttpRequest();
|
var request = new XMLHttpRequest();
|
||||||
request.open('POST', 'https://dns-watch.org/search', true);
|
request.open('POST', 'https://dns-watch.org/search', true);
|
||||||
@ -17,6 +29,8 @@ function dnswatch_search() {
|
|||||||
var response = JSON.parse(this.response);
|
var response = JSON.parse(this.response);
|
||||||
console.log(response);
|
console.log(response);
|
||||||
|
|
||||||
|
// TODO: CLEAN UP THIS MESS OF TABLE GENERATION CODE
|
||||||
|
|
||||||
if (response['type'] == 'success') { // success
|
if (response['type'] == 'success') { // success
|
||||||
|
|
||||||
var table = '<table>\n';
|
var table = '<table>\n';
|
||||||
@ -72,6 +86,13 @@ function dnswatch_search() {
|
|||||||
|
|
||||||
} else { // no success
|
} else { // no success
|
||||||
|
|
||||||
|
if (response['error'] == 'malformed_domain') { // invalid domain - should not happen, but just in case i guess
|
||||||
|
var table = '<table></table>';
|
||||||
|
document.getElementById('results').innerHTML = '<table></table>';
|
||||||
|
feather.replace();
|
||||||
|
document.getElementById('invaliddomain').style.visibility = 'visible';
|
||||||
|
document.getElementById('invaliddomain').style.display = 'block';
|
||||||
|
} else {
|
||||||
var table = '<table>\n';
|
var table = '<table>\n';
|
||||||
table += '<tr>\n';
|
table += '<tr>\n';
|
||||||
// status
|
// status
|
||||||
@ -88,6 +109,7 @@ function dnswatch_search() {
|
|||||||
table += '<td class="help"></td>\n';
|
table += '<td class="help"></td>\n';
|
||||||
table += '</tr>\n';
|
table += '</tr>\n';
|
||||||
table += '</table>';
|
table += '</table>';
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -105,6 +127,13 @@ function dnswatch_search() {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function is_valid_domain(str) {
|
||||||
|
let regex = /^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$/;
|
||||||
|
return regex.test(str);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// add event triggers
|
// add event triggers
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
document.getElementById('dnswatch-search-submit').addEventListener('click', (event) => {
|
document.getElementById('dnswatch-search-submit').addEventListener('click', (event) => {
|
||||||
|
@ -5,4 +5,4 @@
|
|||||||
*js("///index.js")
|
*js("///index.js")
|
||||||
*js("https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js")
|
*js("https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js")
|
||||||
*postjs("///feather.js")
|
*postjs("///feather.js")
|
||||||
<div id="header"><button><i data-feather="globe"></i></button><button><i data-feather="sun"></i></button></div><div id="title"><h1>dnswatch</h1></div><div id="search"><div id="searchbar"><div class="buttonspacer"></div><input id="dnswatch-search" type="text" placeholder="Search..."/><button id="dnswatch-search-submit"><i data-feather="search"></i></button><button id="help"><i data-feather="help-circle"></i></button></div><small>Try "gnu.org", "wikipedia.com", "s.to" or your own website!</small><div id="loadani"><div id="spinner"></div><span>loading...</span></div></div><div id="results"></div>
|
<div id="header"><button><i data-feather="globe"></i></button><button><i data-feather="sun"></i></button></div><div id="title"><h1>dns-watch<span>.org</span></h1></div><div id="search"><div id="searchbar"><div class="buttonspacer"></div><input id="dnswatch-search" type="text" placeholder="Search..." autofocus="autofocus"/><button id="dnswatch-search-submit"><i data-feather="search"></i></button><button id="help"><i data-feather="help-circle"></i></button></div><small>Try "gnu.org", "wikipedia.com", "s.to" or your own website!</small><div id="loadani"><div id="spinner"></div><span>loading...</span></div><div id="invaliddomain"><i data-feather="x"></i><span>invalid domain.</span></div></div><div id="results"></div>
|
@ -1,11 +1,23 @@
|
|||||||
function dnswatch_search() {
|
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 = '<table></table>';
|
||||||
|
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
|
// activate spinner
|
||||||
document.getElementById('loadani').style.visibility = 'visible';
|
document.getElementById('loadani').style.visibility = 'visible';
|
||||||
document.getElementById('loadani').style.display = 'block';
|
document.getElementById('loadani').style.display = 'block';
|
||||||
|
|
||||||
// get domain
|
|
||||||
var domain = document.getElementById('dnswatch-search').value.toLowerCase();
|
|
||||||
|
|
||||||
// send api request
|
// send api request
|
||||||
var request = new XMLHttpRequest();
|
var request = new XMLHttpRequest();
|
||||||
request.open('POST', 'https://dns-watch.org/search', true);
|
request.open('POST', 'https://dns-watch.org/search', true);
|
||||||
@ -16,6 +28,8 @@ function dnswatch_search() {
|
|||||||
var response = JSON.parse(this.response);
|
var response = JSON.parse(this.response);
|
||||||
console.log(response);
|
console.log(response);
|
||||||
|
|
||||||
|
// TODO: CLEAN UP THIS MESS OF TABLE GENERATION CODE
|
||||||
|
|
||||||
if (response['type'] == 'success') { // success
|
if (response['type'] == 'success') { // success
|
||||||
|
|
||||||
var table = '<table>\n';
|
var table = '<table>\n';
|
||||||
@ -71,6 +85,13 @@ function dnswatch_search() {
|
|||||||
|
|
||||||
} else { // no success
|
} else { // no success
|
||||||
|
|
||||||
|
if (response['error'] == 'malformed_domain') { // invalid domain - should not happen, but just in case i guess
|
||||||
|
var table = '<table></table>';
|
||||||
|
document.getElementById('results').innerHTML = '<table></table>';
|
||||||
|
feather.replace();
|
||||||
|
document.getElementById('invaliddomain').style.visibility = 'visible';
|
||||||
|
document.getElementById('invaliddomain').style.display = 'block';
|
||||||
|
} else {
|
||||||
var table = '<table>\n';
|
var table = '<table>\n';
|
||||||
table += '<tr>\n';
|
table += '<tr>\n';
|
||||||
// status
|
// status
|
||||||
@ -87,6 +108,7 @@ function dnswatch_search() {
|
|||||||
table += '<td class="help"></td>\n';
|
table += '<td class="help"></td>\n';
|
||||||
table += '</tr>\n';
|
table += '</tr>\n';
|
||||||
table += '</table>';
|
table += '</table>';
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,6 +126,13 @@ function dnswatch_search() {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function is_valid_domain(str) {
|
||||||
|
let regex = /^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$/;
|
||||||
|
return regex.test(str);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// add event triggers
|
// add event triggers
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
document.getElementById('dnswatch-search-submit').addEventListener('click', (event) => {
|
document.getElementById('dnswatch-search-submit').addEventListener('click', (event) => {
|
||||||
|
@ -3,17 +3,20 @@
|
|||||||
button: i( data-feather='sun' )
|
button: i( data-feather='sun' )
|
||||||
|
|
||||||
#title
|
#title
|
||||||
h1 dnswatch
|
h1 dns-watch<span>.org</span>
|
||||||
|
|
||||||
#search
|
#search
|
||||||
#searchbar
|
#searchbar
|
||||||
.buttonspacer
|
.buttonspacer
|
||||||
input#dnswatch-search( type='text' placeholder='Search...' )
|
input#dnswatch-search( type='text' placeholder='Search...' autofocus )
|
||||||
button#dnswatch-search-submit: i( data-feather='search' )
|
button#dnswatch-search-submit: i( data-feather='search' )
|
||||||
button#help: i( data-feather='help-circle' )
|
button#help: i( data-feather='help-circle' )
|
||||||
small Try "gnu.org", "wikipedia.com", "s.to" or your own website!
|
small Try "gnu.org", "wikipedia.com", "s.to" or your own website!
|
||||||
#loadani
|
#loadani
|
||||||
#spinner
|
#spinner
|
||||||
span loading...
|
span loading...
|
||||||
|
#invaliddomain
|
||||||
|
i( data-feather='x' )
|
||||||
|
span invalid domain.
|
||||||
|
|
||||||
#results
|
#results
|
||||||
|
@ -46,6 +46,8 @@ input, button
|
|||||||
h1
|
h1
|
||||||
font-size: 4rem
|
font-size: 4rem
|
||||||
font-weight: 200
|
font-weight: 200
|
||||||
|
span
|
||||||
|
color: darken($c-fg, 50%)
|
||||||
|
|
||||||
#search
|
#search
|
||||||
text-align: center
|
text-align: center
|
||||||
@ -111,6 +113,14 @@ input, button
|
|||||||
color: $c-blue
|
color: $c-blue
|
||||||
margin-left: .5rem
|
margin-left: .5rem
|
||||||
|
|
||||||
|
#invaliddomain
|
||||||
|
color: $c-red
|
||||||
|
display: none
|
||||||
|
margin-top: 1rem
|
||||||
|
visibility: hidden
|
||||||
|
.feather
|
||||||
|
vertical-align: -.3rem
|
||||||
|
|
||||||
#results
|
#results
|
||||||
table
|
table
|
||||||
margin-left: 25vw
|
margin-left: 25vw
|
||||||
|
Reference in New Issue
Block a user