1
0
mirror of https://github.com/MailHops/mailhops-plugin.git synced 2025-05-17 06:40:08 -07:00
mailhops-plugin/chrome/content/preferences.js
2016-08-24 19:26:26 -06:00

289 lines
11 KiB
JavaScript

if (!pref) {
var pref = Components.classes["@mozilla.org/preferences-service;1"].getService ( Components.interfaces.nsIPrefBranch ) ;
}
var mailHopPreferences = {
api_url: '', //mailhops api url
api_ssl: '', //ssl?
api_key: '', //api key
fkey: '', //forecast.io api key
country_filter: [],
loadPreferences: function(){
this.api_url = document.getElementById("mailhop.api_url").value;
this.api_ssl = document.getElementById("mailhop.api_ssl").value;
this.api_key = document.getElementById("mailhop.api_key").value;
this.fkey = document.getElementById("mailhop.fkey").value;
document.getElementById("mailhop.api_ssl").value = "true";
document.getElementById("mailhop.lang").value = pref.getCharPref("mail.mailHops.lang",'en');
document.getElementById("mailhop.map_provider").value = pref.getCharPref("mail.mailHops.map_provider",'OpenStreetMap.Mapnik');
if(pref.getCharPref("mail.mailHops.unit",'mi')=='mi')
document.getElementById("mailhop.unit").selectedIndex = 0;
else
document.getElementById("mailhop.unit").selectedIndex = 1;
//Display Box Options
if(pref.getCharPref("mail.mailHops.show_meta",'true')=='true')
document.getElementById("mailhop.show_meta").checked = true;
else
document.getElementById("mailhop.show_meta").checked = false;
if(pref.getCharPref("mail.mailHops.show_lists",'true')=='true')
document.getElementById("mailhop.show_lists").checked = true;
else
document.getElementById("mailhop.show_lists").checked = false;
if(pref.getCharPref("mail.mailHops.show_auth",'true')=='true')
document.getElementById("mailhop.show_auth").checked = true;
else
document.getElementById("mailhop.show_auth").checked = false;
//Details Options
if(pref.getCharPref("mail.mailHops.show_host",'true')=='true')
document.getElementById("mailhop.show_host").checked = true;
else
document.getElementById("mailhop.show_host").checked = false;
if(pref.getCharPref("mail.mailHops.show_secure",'true')=='true')
document.getElementById("mailhop.show_secure").checked = true;
else
document.getElementById("mailhop.show_secure").checked = false;
//Auth Options
if(pref.getCharPref("mail.mailHops.show_spf",'true')=='true')
document.getElementById("mailhop.show_spf").checked = true;
else
document.getElementById("mailhop.show_spf").checked = false;
if(pref.getCharPref("mail.mailHops.show_dkim",'true')=='true')
document.getElementById("mailhop.show_dkim").checked = true;
else
document.getElementById("mailhop.show_dkim").checked = false;
if(pref.getCharPref("mail.mailHops.show_mailer",'true')=='true')
document.getElementById("mailhop.show_mailer").checked = true;
else
document.getElementById("mailhop.show_mailer").checked = false;
if(pref.getCharPref("mail.mailHops.show_dnsbl",'true')=='true')
document.getElementById("mailhop.show_dnsbl").checked = true;
else
document.getElementById("mailhop.show_dnsbl").checked = false;
if(pref.getCharPref("mail.mailHops.debug",'true')=='true')
document.getElementById("mailhop.debug").checked = true;
else
document.getElementById("mailhop.debug").checked = false;
// API info
this.api_key = pref.getCharPref("mail.mailHops.api_key",'');
this.api_url = pref.getCharPref("mail.mailHops.api_url",'https://api.mailhops.com');
if(this.api_url.indexOf('https')===0)
this.api_ssl = "true";
else
this.api_ssl = "false";
this.api_url = this.api_url.replace('http://','').replace('https://','');
this.fkey = pref.getCharPref("mail.mailHops.fkey",'');
// Country Filter and tagging
this.country_filter = JSON.parse(pref.getCharPref("mail.mailHops.country_filter",null) || []);
if(this.country_filter.length){
for(c in this.country_filter){
document.getElementById("country_"+this.country_filter[c]).checked=true;
}
}
if(pref.getCharPref("mail.mailHops.country_tag",'false')=='false')
document.getElementById("mailhop.country_tag").checked = false;
else
document.getElementById("mailhop.country_tag").checked = true;
saveAPIKey();
ResetLocation(document.getElementById("mailhop.refresh_location"));
},
savePreferences: function() {
pref.setCharPref("mail.mailHops.lang", document.getElementById("mailhop.lang").selectedItem.value);
pref.setCharPref("mail.mailHops.map_provider", document.getElementById("mailhop.map_provider").selectedItem.value);
pref.setCharPref("mail.mailHops.unit", document.getElementById("mailhop.unit").selectedItem.value);
pref.setCharPref("mail.mailHops.show_meta", String(document.getElementById("mailhop.show_meta").checked));
pref.setCharPref("mail.mailHops.show_host", String(document.getElementById("mailhop.show_host").checked));
pref.setCharPref("mail.mailHops.show_secure", String(document.getElementById("mailhop.show_secure").checked));
pref.setCharPref("mail.mailHops.show_spf", String(document.getElementById("mailhop.show_spf").checked));
pref.setCharPref("mail.mailHops.show_dkim", String(document.getElementById("mailhop.show_dkim").checked));
pref.setCharPref("mail.mailHops.show_mailer", String(document.getElementById("mailhop.show_mailer").checked));
pref.setCharPref("mail.mailHops.show_dnsbl", String(document.getElementById("mailhop.show_dnsbl").checked));
pref.setCharPref("mail.mailHops.show_lists", String(document.getElementById("mailhop.show_lists").checked));
pref.setCharPref("mail.mailHops.show_auth", String(document.getElementById("mailhop.show_auth").checked));
pref.setCharPref("mail.mailHops.debug", String(document.getElementById("mailhop.debug").checked));
//API vars
pref.setCharPref("mail.mailHops.api_key", this.api_key);
this.api_url = this.api_url.replace('http://','').replace('https://','');
if(this.api_ssl=="true")
pref.setCharPref("mail.mailHops.api_url", 'https://'+this.api_url);
else
pref.setCharPref("mail.mailHops.api_url", 'http://'+this.api_url);
pref.setCharPref("mail.mailHops.fkey", String(this.fkey));
// Country Filter and tagging
this.country_filter = [];
for(c in mailHopsUtils.countries){
if(document.getElementById("country_"+mailHopsUtils.countries[c]).checked)
this.country_filter.push(document.getElementById("country_"+mailHopsUtils.countries[c]).getAttribute('value'));
}
pref.setCharPref("mail.mailHops.country_filter", String(JSON.stringify(this.country_filter)));
pref.setCharPref("mail.mailHops.country_tag", String(document.getElementById("mailhop.country_tag").checked));
return true;
},
countryListSelectAll: function(all){
for(c in mailHopsUtils.countries){
document.getElementById("country_"+mailHopsUtils.countries[c]).checked=all;
}
}
};
function saveAPIKey() {
if(!!mailHopPreferences.api_key && mailHopPreferences.api_key != ''){
var xmlhttp = new XMLHttpRequest();
var nativeJSON = Components.classes["@mozilla.org/dom/json;1"].createInstance(Components.interfaces.nsIJSON);
var apiBase = mailHopPreferences.api_url,
accountURL = '/v2/accounts/?app='+mailHops.options.version+'&api_key='+mailHopPreferences.api_key;
if(mailHopPreferences.api_ssl=="true")
apiBase='https://'+apiBase;
else
apiBase='http://'+apiBase;
xmlhttp.open("GET", apiBase+accountURL,true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && !!xmlhttp.responseText) {
try{
var data = JSON.parse(xmlhttp.responseText);
if(!!data && data.meta.code==200){
document.getElementById("key_details").innerHTML = JSON.stringify(data.account).replace(/\,/g,'\n');
} else if(!!data.meta.message){
document.getElementById("key_details").innerHTML = data.meta.message;
} else {
document.getElementById("key_details").innerHTML = 'Invalid API Key';
}
}
catch (ex){
document.getElementById("key_details").innerHTML = 'Connection Failed to\n '+apiBase+'!';
}
} else {
document.getElementById("key_details").innerHTML = 'Connection Failed to\n '+apiBase+'!';
}
};
xmlhttp.send(null);
} else {
document.getElementById("key_details").innerHTML = 'Enter a valid API key above.';
}
}
function TestConnection(e){
var xmlhttp = new XMLHttpRequest();
var nativeJSON = Components.classes["@mozilla.org/dom/json;1"].createInstance(Components.interfaces.nsIJSON);
var apiBase = mailHopPreferences.api_url || 'https://api.mailhops.com',
lookupURL = '/v1/lookup/?app='+mailHops.options.version+'&healthcheck';
if(mailHopPreferences.api_ssl=="true")
apiBase='https://'+apiBase;
else
apiBase='http://'+apiBase;
if(mailHopPreferences.api_key != '')
lookupURL = '/v2/lookup/?app='+mailHops.options.version+'&healthcheck&api_key='+mailHopPreferences.api_key;
xmlhttp.open("GET", apiBase+lookupURL,true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
try{
var data = JSON.parse(xmlhttp.responseText);
if(!!data && data.meta.code==200){
e.style.backgroundImage='';
alert('Connection Succeeded to\n '+apiBase+'!');
} else {
//display the error
e.style.backgroundImage='';
alert('Connection Failed to\n '+apiBase+'!');
}
}
catch (ex){
e.style.backgroundImage='';
alert('Connection Failed to\n '+apiBase+'!');
}
}
};
xmlhttp.send(null);
}
function ResetLocation(e){
//clear the location
document.getElementById("mailhop.client_location").value='Getting your location...';
document.getElementById("mailhop.client_location_ip").value = '';
document.getElementById("mailhop.client_location_host").value = '';
document.getElementById("mailhop.client_location_whois").value = '';
var MH_APIURL = mailHopPreferences.api_ssl=="true"?'https://'+mailHopPreferences.api_url:'http://'+mailHopPreferences.api_url;
mailHops.setClientLocation(function(response){
if(response){
var location = '';
if(response.route[0].city)
location+=response.route[0].city;
if(response.route[0].state)
location+=', '+response.route[0].state;
if(response.route[0].countryName)
location+=' ( '+response.route[0].countryName+' )';
else if(response.route[0].countryCode)
location+=' ( '+response.route[0].countryCode+' )';
//set location
document.getElementById("mailhop.client_location").value=location;
//set ip
document.getElementById("mailhop.client_location_ip").value='IP: '+response.route[0].ip;
//set host
if(response.route[0].host)
document.getElementById("mailhop.client_location_host").value='Host: '+response.route[0].host;
document.getElementById("mailhop.client_location_whois").value = 'whois';
document.getElementById("mailhop.client_location_whois").setAttribute('href', 'https://www.mailhops.com/whois/'+response.route[0].ip);
//set country flag
if(response.route[0].countryCode)
document.getElementById("mailhop.client_location").style.backgroundImage='url(chrome://mailhops/content/images/flags/'+response.route[0].countryCode.toLowerCase()+'.png)';
} else {
document.getElementById("mailhop.client_location").value='Failed connecting...';
}
},MH_APIURL);
}
function ResetConnection(){
mailHopPreferences.api_ssl=="true";
mailHopPreferences.api_ssl.selectedIndex = 0;
mailHopPreferences.api_url='api.mailhops.com';
}