You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

437 lines
17 KiB
JavaScript

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

\ \ \ ';\ \ \ ';';\ \ \ \ \ \ \ \ \ \ ';\ \ \ \ \ \ \ \ \ \ ';';';
window.addEventListener('DOMContentLoaded', function () {
var swapimg = document.getElementById('swapimg');
var swaplink = document.getElementById('swaplink');
var iidbimg = document.getElementById('iidbimg');
var iidblink = document.getElementById('iidblink');
var reloadlink = document.getElementById('reloadlink');
var reloadwaitimg = document.getElementById('reloadwaitimg');
iidbimg.setAttribute('title', i18n.title_more);
iidbimg.setAttribute('alt', i18n.title_more);
swapimg.setAttribute('title', i18n.title_srvmy);
swapimg.setAttribute('alt', i18n.title_srvmy);
var storage = widget.preferences;
var msgtype;
var rdns;
var rdnsmy;
var whoislink = document.getElementById('whoislink');
var whoisimg = document.getElementById('whoisimg');
var glink = document.getElementById('glink');
var gimg = document.getElementById('gimg');
var tracertlink = document.getElementById('tracertlink');
var tracertimg = document.getElementById('tracertimg');
var iidblinkSRV, iidblinkMY;
var geotablesrv = document.getElementById('geotablesrv');
var geotablemy = document.getElementById('geotablemy');
var geotablesrv_srv;
var geotablesrv_whois;
var geotablesrv_whoismy;
tracertimg.setAttribute('title', i18n.tracert);
tracertimg.setAttribute('alt', i18n.tracert);
whoisimg.setAttribute('title', i18n.popup_domain);
whoisimg.setAttribute('alt', i18n.popup_domain);
function translit(txt) {
var L = {
'А':'A','а':'a','Б':'B','б':'b','В':'V','в':'v','Г':'G','г':'g',
'Д':'D','д':'d','Е':'E','е':'e','Ё':'Yo','ё':'yo','Ж':'Zh','ж':'zh',
'З':'Z','з':'z','И':'I','и':'i','Й':'Y','й':'y','К':'K','к':'k',
'Л':'L','л':'l','М':'M','м':'m','Н':'N','н':'n','О':'O','о':'o',
'П':'P','п':'p','Р':'R','р':'r','С':'S','с':'s','Т':'T','т':'t',
'У':'U','у':'u','Ф':'F','ф':'f','Х':'Kh','х':'kh','Ц':'Ts','ц':'ts',
'Ч':'Ch','ч':'ch','Ш':'Sh','ш':'sh','Щ':'Sch','щ':'sch','Ъ':'"','ъ':'"',
'Ы':'Y','ы':'y','Ь':"'",'ь':"'",'Э':'E','э':'e','Ю':'Yu','ю':'yu',
'Я':'Ya','я':'ya'
},
r = '', k;
for (k in L) r += k;
r = new RegExp('[' + r + ']', 'g');
k = function(a){
return a in L ? L[a] : '';
};
return txt.replace(r, k);
}
function toTitleCase(str)
{
return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
}
function SetField(field, val, isxml, chngCase) {
chngCase = (typeof chngCase == 'undefined') ? false : chngCase;
if (val)
{
if (chngCase) val = toTitleCase(val);
val = DoTranslit(val, isxml);
document.getElementById(field + msgtype).innerHTML = val;
} else document.getElementById(field + msgtype).innerHTML = '-';
}
function DoTranslit(val, isxml) {
isxml = (typeof isxml == 'undefined') ? false : isxml;
if (isxml && (storage.gd4ip_translit == null || storage.gd4ip_translit == '1'))
val = translit(val);
return val;
}
function TruncString(str) {
var checker = document.getElementById('checker');
checker.innerHTML = str;
if (checker.offsetWidth > 255)
{
while (checker.offsetWidth > 255)
checker.innerHTML = checker.innerHTML.substring(0, checker.innerHTML.length - 1);
var out = checker.innerHTML + '...';
return out;
} else return str;
}
function SetRDNS(msgtype) {
var tmp;
if (msgtype == 1)
{
tmp = document.getElementById('geotablesrv').getElementsByTagName('tbody')[0];
if (tmp)
{
tmp.innerHTML = tmp.innerHTML.replace('[RDNStitle1]', rdns);
tmp.innerHTML = tmp.innerHTML.replace('[RDNS1]', TruncString(rdns));
}
}
if (msgtype == 2)
{
tmp = document.getElementById('geotablemy').getElementsByTagName('tbody')[0];
if (tmp)
{
tmp.innerHTML = tmp.innerHTML.replace('[RDNStitle2]', rdnsmy);
tmp.innerHTML = tmp.innerHTML.replace('[RDNS2]', TruncString(rdnsmy));
}
}
}
opera.extension.onmessage = function(e)
{
if (e.data.popup_whois) {
var whois = e.data.popup_whois;
geotablesrv_whois = '
 
' + i18n.popup_whois_dc + '+ whois.d + '">' + TruncString(whois.d) + '
' + i18n.popup_whois_asnum + '+ whois.a + '">' + whois.a + '
' + i18n.popup_whois_asname + '+ whois.n + '">' + TruncString(whois.n) + '
return;
}
if (e.data.popup_rdns) {
rdns = e.data.popup_rdns;
SetRDNS(1);
return;
}
if (e.data.popup_rdnsmy) {
rdnsmy = e.data.popup_rdnsmy;
SetRDNS(2);
return;
}
if (e.data.popup_whoismy) {
var whoismy = e.data.popup_whoismy;
geotablesrv_whoismy = '
 
' + i18n.popup_whois_dc + '+ whoismy.d + '">' + TruncString(whoismy.d) + '
' + i18n.popup_whois_asnum + '+ whoismy.a + '">' + whoismy.a + '
' + i18n.popup_whois_asname + '+ whoismy.n + '">' + TruncString(whoismy.n) + '
return;
}
if (e.data.popup_srv) {
var srv = e.data.popup_srv;
geotablesrv_srv = '
 
' + i18n.popup_srv + '+ srv + '">' + TruncString(srv) + '
return;
}
if (e.data.popup_fill) {
var geotable = geotablesrv;
geotable.innerHTML = '';
var chost = e.data.popup_fill.chost;
var cdata = e.data.popup_fill.cdata;
msgtype = 1;
} else
if (e.data.popup_fillmy) {
var geotable = geotablemy;
geotable.innerHTML = '';
var cdata = e.data.popup_fillmy;
msgtype = 2;
swapimg.setAttribute('src', 'icons/swapdata.png');
//clear listeners
var oldswaplink = swaplink;
swaplink = oldswaplink.cloneNode(true);
oldswaplink.parentNode.replaceChild(swaplink, oldswaplink);
swaplink.addEventListener('click', function () {
if (geotablesrv.style.display == 'table')
{
geotablesrv.style.display = 'none';
geotablemy.style.display = 'table';
iidblink.setAttribute('href', iidblinkMY);
}
else
{
geotablemy.style.display = 'none';
geotablesrv.style.display = 'table';
iidblink.setAttribute('href', iidblinkSRV);
}
}, false);
} else return;
if (cdata == null) cdata = '';
if (msgtype == 1)
{
if (storage.gd4ip_whois == 3)
{
whoislink.setAttribute('href', 'http://2ip.ru/whois/?ip=' + chost);
whoisimg.setAttribute('src', 'icons/whois3.png');
}
else if (storage.gd4ip_whois == 2)
{
whoislink.setAttribute('href', 'http://whois.domaintools.com/' + chost);
whoisimg.setAttribute('src', 'icons/whois2.png');
}
else
{
whoislink.setAttribute('href', 'http://who.is/whois/' + chost);
whoisimg.setAttribute('src', 'icons/whois1.png');
}
}
var xbody = document.createElement("tbody");
geotable.appendChild(xbody);
geotable = xbody;
if (cdata.toString().indexOf(') != -1)
{
geotable.innerHTML = '\
' + i18n.popup_host + '+ msgtype + '">
' + i18n.popup_ip + '+ msgtype + '">
' + i18n.popup_ipnum + '+ msgtype + '">
' + i18n.popup_rdns + '+ msgtype + '" title="[RDNStitle' + msgtype + ']">[RDNS' + msgtype + ']
' + i18n.popup_country + '+ msgtype + '">
' + i18n.popup_region + '+ msgtype + '">
' + i18n.popup_district + '+ msgtype + '">
' + i18n.popup_city + '+ msgtype + '">
' + i18n.popup_lat + '+ msgtype + '">
' + i18n.popup_long + '+ msgtype + '">
';
var xmldata = (new DOMParser()).parseFromString(cdata, 'text/xml');
var iptag = xmldata.getElementsByTagName('ip')[0];
SetRDNS(msgtype);
if (msgtype == 1)
{
if (geotablesrv_whois) geotable.innerHTML += geotablesrv_whois;
geotable.innerHTML += geotablesrv_srv;
iidblinkSRV = 'http://ipgeobase.ru/?address=' + iptag.getAttribute('value');
iidblink.setAttribute('href', iidblinkSRV);
SetField('host', TruncString(chost), i18n.transliterate);
}
if (msgtype == 2)
{
if (geotablesrv_whoismy) geotable.innerHTML += geotablesrv_whoismy;
geotable.innerHTML += '
 
 
iidblinkMY = 'http://ipgeobase.ru/?address=' + iptag.getAttribute('value');
SetField('host', i18n.title_popup, i18n.transliterate);
}
SetField('ipAddress', iptag.getAttribute('value'));
SetField('ipNum', iptag.getElementsByTagName('inetnum')[0].textContent);
var cc = iptag.getElementsByTagName('country')[0].textContent.toLowerCase();
if (cc == 'ru')
{
if (storage.gd4ip_translit == 1) var ccc = 'Russia'; else var ccc = 'Россия';
}
else if (cc == 'ua')
{
if (storage.gd4ip_translit == 1) var ccc = 'Ukraine'; else var ccc = 'Украина';
} else var ccc = cc;
SetField('countryName', ccc, i18n.transliterate, true);
SetField('regionName', iptag.getElementsByTagName('region')[0].textContent, i18n.transliterate, true);
SetField('districtName', iptag.getElementsByTagName('district')[0].textContent, i18n.transliterate, true);
SetField('cityName', iptag.getElementsByTagName('city')[0].textContent, i18n.transliterate, true);
var clat = iptag.getElementsByTagName('lat')[0].textContent;
var clong = iptag.getElementsByTagName('lng')[0].textContent;
SetField('latitude', clat);
SetField('longitude', clong);
if ((clat == '-' || clong == '-' || clat == '' || clong == '' || (clat == '0' && clong == '0')) && msgtype == 1)
{
gimg.setAttribute('src', 'icons/gmapno.png');
glink.setAttribute('target', '_self');
glink.setAttribute('href', '#');
tracertimg.setAttribute('src', 'icons/tracerouteno.png');
tracertlink.setAttribute('target', '_self');
tracertlink.setAttribute('href', '#');
}
else if (gimg.getAttribute('src') != 'icons/gmapno.png')
{
gimg.setAttribute('src', 'icons/gmap.png');
glink.setAttribute('target', '_blank');
tracertimg.setAttribute('src', 'icons/traceroute.png');
tracertlink.setAttribute('target', '_blank');
if (msgtype == 1)
{
glink.setAttribute('href', '/gapi/geocoding.html?' +
'lat1=' + iptag.getElementsByTagName('lat')[0].textContent +
'&long1=' + iptag.getElementsByTagName('lng')[0].textContent +
'&countryName1=' + DoTranslit(ccc, i18n.transliterate) +
'&ipAddress1=' + iptag.getAttribute('value') +
'&table1=' + geotable.innerHTML
);
tracertlink.setAttribute('href', '/gapi/geocoding.html?tracert=1&' +
'lat1=' + iptag.getElementsByTagName('lat')[0].textContent +
'&long1=' + iptag.getElementsByTagName('lng')[0].textContent +
'&countryName1=' + DoTranslit(ccc, i18n.transliterate) +
'&ipAddress1=' + iptag.getAttribute('value') +
'&hostName1=' + chost +
'&table1=' + geotable.innerHTML
);
}
if (msgtype == 2 && glink.getAttribute('href') != '#')
{
glink.setAttribute('href', glink.getAttribute('href') +
'&lat2=' + iptag.getElementsByTagName('lat')[0].textContent +
'&long2=' + iptag.getElementsByTagName('lng')[0].textContent +
'&countryName2=' + DoTranslit(ccc, i18n.transliterate) +
'&ipAddress2=' + iptag.getAttribute('value') +
'&table2=' + geotable.innerHTML
);
}
if (msgtype == 2 && tracertlink.getAttribute('href') != '#')
{
tracertlink.setAttribute('href', tracertlink.getAttribute('href') +
'&lat2=' + iptag.getElementsByTagName('lat')[0].textContent +
'&long2=' + iptag.getElementsByTagName('lng')[0].textContent +
'&countryName2=' + DoTranslit(ccc, i18n.transliterate) +
'&ipAddress2=' + iptag.getAttribute('value') +
'&table2=' + geotable.innerHTML
);
}
}
}
else
{
geotable.innerHTML = '\
' + i18n.popup_host + '+ msgtype + '">
' + i18n.popup_ip + '+ msgtype + '">
' + i18n.popup_rdns + '+ msgtype + '" title="[RDNStitle' + msgtype + ']">[RDNS' + msgtype + ']
' + i18n.popup_country + '+ msgtype + '">
' + i18n.popup_region + '+ msgtype + '">
' + i18n.popup_city + '+ msgtype + '">
' + i18n.popup_zip + '+ msgtype + '">
' + i18n.popup_lat + '+ msgtype + '">
' + i18n.popup_long + '+ msgtype + '">
' + i18n.popup_timezone + '+ msgtype + '">
';
SetRDNS(msgtype);
if (msgtype == 1)
{
if (geotablesrv_whois) geotable.innerHTML += geotablesrv_whois;
geotable.innerHTML += geotablesrv_srv;
iidblinkSRV = 'http://ipinfodb.com/ip_locator.php?ip=' + cdata.ipAddress;
iidblink.setAttribute('href', iidblinkSRV);
SetField('host', TruncString(chost));
}
if (msgtype == 2)
{
if (geotablesrv_whoismy) geotable.innerHTML += geotablesrv_whoismy;
geotable.innerHTML += '
 
 
iidblinkMY = 'http://ipinfodb.com/ip_locator.php?ip=' + cdata.ipAddress;
SetField('host', i18n.title_popup, i18n.transliterate);
}
SetField('ipAddress', cdata.ipAddress);
SetField('countryName', cdata.countryName, false, true);
SetField('regionName', cdata.regionName, false, true);
SetField('cityName', cdata.cityName, false, true);
SetField('zipCode', cdata.zipCode);
SetField('latitude', cdata.latitude);
SetField('longitude', cdata.longitude);
SetField('timeZone', cdata.timeZone);
if ((cdata.latitude == '-' || cdata.longitude == '-' || cdata.latitude == '' || cdata.longitude == '' || (cdata.latitude == '0' && cdata.longitude == '0')) && msgtype == 1)
{
gimg.setAttribute('src', 'icons/gmapno.png');
glink.setAttribute('target', '_self');
glink.setAttribute('href', '#');
tracertimg.setAttribute('src', 'icons/tracerouteno.png');
tracertlink.setAttribute('target', '_self');
tracertlink.setAttribute('href', '#');
}
else if (gimg.getAttribute('src') != 'icons/gmapno.png')
{
gimg.setAttribute('src', 'icons/gmap.png');
glink.setAttribute('target', '_blank');
tracertimg.setAttribute('src', 'icons/traceroute.png');
tracertlink.setAttribute('target', '_blank');
if (msgtype == 1)
{
glink.setAttribute('href', '/gapi/geocoding.html?' +
'lat1=' + cdata.latitude +
'&long1=' + cdata.longitude +
'&countryName1=' + DoTranslit(cdata.countryName) +
'&ipAddress1=' + cdata.ipAddress +
'&table1=' + geotable.innerHTML
);
tracertlink.setAttribute('href', '/gapi/geocoding.html?tracert=1&' +
'lat1=' + cdata.latitude +
'&long1=' + cdata.longitude +
'&countryName1=' + DoTranslit(cdata.countryName) +
'&ipAddress1=' + cdata.ipAddress +
'&hostName1=' + chost +
'&table1=' + geotable.innerHTML
);
}
if (msgtype == 2 && glink.getAttribute('href') != '#')
glink.setAttribute('href', glink.getAttribute('href') +
'&lat2=' + cdata.latitude +
'&long2=' + cdata.longitude +
'&countryName2=' + DoTranslit(cdata.countryName) +
'&ipAddress2=' + cdata.ipAddress +
'&table2=' + geotable.innerHTML
);
if (msgtype == 2 && tracertlink.getAttribute('href') != '#')
tracertlink.setAttribute('href', tracertlink.getAttribute('href') +
'&lat2=' + cdata.latitude +
'&long2=' + cdata.longitude +
'&countryName2=' + DoTranslit(cdata.countryName) +
'&ipAddress2=' + cdata.ipAddress +
'&table2=' + geotable.innerHTML
);
}
}
reloadwaitimg.setAttribute('style', 'display: none');
};
opera.extension.postMessage({gd4ip: 'fillpopup'});
reloadlink.addEventListener('click', function () {
reloadwaitimg.setAttribute('style', 'display: inline');
opera.extension.postMessage({gd4ip: 'fillpopup_nocache'});
}, false);
geotablesrv.innerHTML = '
' + i18n.popup_recv + '
geotablemy.innerHTML = '
' + i18n.popup_recv + '
}, false);