let tmn_options ={};
let getting_tmn = browser.runtime.getBackgroundPage();
let tmn;
getting_tmn.then(function(page) {
tmn = page.TRACKMENOT.TMNSearch;
});
let options = null;
function loadHandlers() {
$("#apply-options").click( function() {
tmn_options = {
"options": saveOptions()
};
browser.runtime.sendMessage({
'tmn':"TMNSaveOptions",
'option':tmn_options.options
});
TMNSetOptionsMenu(tmn_options.options);
// saving effect
$("img").fadeTo(100, 0.3, function() {
$(this).fadeTo(500, 1.0);
});
});
$("#reset-options").click( function() {
browser.runtime.sendMessage({
'tmn':"TMNResetOptions"
});
window.location.reload();
});
$("#show-add").click( function() {
$("#add-engine-table").show();
}
);
$("#show-log").click( TMNShowLog );
$("#trackmenot-opt-showqueries").click( TMNShowQueries);
$("#validate-feed").click( function() {
let feeds = $("#trackmenot-seed").val();
let param = {"feeds": feeds};
browser.runtime.sendMessage({'tmn':"TMNValideFeeds",'param':param});
}
);
$("#clear-log").click( TMNClearLogs );
$("#search-engine-list").on('click', 'button.smallbutton', function(event) {
let del_engine = event.target.id.split("_").pop();
browser.runtime.sendMessage({
'tmn':"TMNDelEngine",
'engine':del_engine
});
setTimeout(function() {
window.location.reload();
}, 500);
});
$("#help-faq").click( function() {
window.open('http://cs.nyu.edu/trackmenot/faq.html#options');
});
$("#main-site").click( function() {
window.open('http://cs.nyu.edu/trackmenot');
});
$("#add-engine").click( function() {
let engine = {};
engine.name = $("#newengine-name").val();
engine.urlmap = $("#newengine-map").val();
if(engine.urlmap.indexOf('trackmenot') <0 ) {
alert("Did not find 'trackmenot' in the URL");
return;
}
browser.runtime.sendMessage({
'tmn':"TMNAddEngine",
'engine': engine
});
setTimeout(function() {
window.location.reload();
}, 500);
});
}
// Update controls based on saved options
function TMNSetOptionsMenu( options ) {
let default_options = tmn._getOptions();
options = $.extend({}, default_options, options);
let feedList = options.feedList;
let kw_black_list = options.kw_black_list;
$("#add-engine-table").hide();
$("#trackmenot-opt-enabled").prop('checked', options.enabled);
$("#trackmenot-opt-useTab").prop('checked',options.useTab);
$("#trackmenot-opt-burstMode").prop('checked',options.burstMode);
$("#trackmenot-opt-save-logs").prop('checked',options.saveLogs);
$("#trackmenot-opt-disable-logs").prop('checked',options.disableLogs);
$("#trackmenot-opt-userss").prop('checked',options.useRss);
$("#trackmenot-use-userlist").prop('checked',options.useUserList);
$("#trackmenot-seed").val(feedList);
$("#trackmenot-blacklist").val(kw_black_list);
$("#trackmenot-use-blacklist").prop('checked', options.use_black_list);
$("#trackmenot-use-dhslist").prop('checked', options.use_dhs_list);
let engines = options.searchEngines.split(',');
for( let i=0; i < engines.length;i++)
$("#"+engines[i]).prop('checked',true);
setFrequencyMenu(options.timeout);
}
function setFrequencyMenu(timeout){
let menu = $("#trackmenot-opt-timeout");
$('#trackmenot-opt-timeout option[value=' +timeout+ ']').prop('selected', true);
}
function TMNClearLogs() {
tmn._clearLogs();
TMNShowLog();
}
function TMNShowLog() {
let logs = tmn._getLogs();
let htmlStr = '
';
htmlStr += '';
htmlStr += 'Engine | ';
htmlStr += 'Mode | ';
htmlStr += 'URL | ';
htmlStr += 'Query/Message | ';
htmlStr += 'Date | ';
htmlStr += '
';
for (let i=0; i< 3000 && i';
if (logs[i].type == 'query') htmlStr += 'style="color:Black">';
if (logs[i].type == 'URLmap') htmlStr += 'style="color:Brown">';
if (logs[i].type == 'click') htmlStr += 'style="color:Blue">';
if (logs[i].type == 'info') htmlStr += 'style="color:Green">';
htmlStr += logs[i].engine ? '' + logs[i].engine+ ' | ' : ' | ';
htmlStr += logs[i].mode ? '' + logs[i].mode+ ' | ' : ' | ';
htmlStr += logs[i].newUrl ? '' + logs[i].newUrl.substring(0,50) + ' | ' : ' | ';
htmlStr += logs[i].query ? '' + logs[i].query+ ' | ' : ' | ';
htmlStr += logs[i].date ? '' + logs[i].date+ ' | ' : ' | ';
htmlStr += '';
}
htmlStr += '
';
$('#tmn_logs_container').html(htmlStr);
}
function TMNShowEngines(engines) {
if (!engines) {
return;
}
let htmlStr = "';
$('#search-engine-list').html(htmlStr);
}
function TMNShowQueries() {
let sources = tmn._getAllQueries();
let htmlStr = 'Userlist | DHS | RSS | Popular | Extracted';
htmlStr += '';
let default_options = tmn._getOptions();
if ( sources.userlist ) {
htmlStr += '';
htmlStr += ' User list | ';
htmlStr += '';
htmlStr += ' |
';
for (let i=0; i';
htmlStr += '' +sources.userlist[i]+' | ';
htmlStr += '';
}
}
if ( sources.dhs ) {
htmlStr += ' | ';
htmlStr += ' DHS Monitored | ';
htmlStr += '';
htmlStr += ' |
';
for (let i=0; i';
htmlStr += '' +sources.dhs[i].category_name+ ' | ';
htmlStr += '';
for (let j=0; j< sources.dhs[i].words.length ; j++) {
htmlStr += ' | ';
htmlStr += '' +sources.dhs[i].words[j]+ ' | ';
htmlStr += ' |
';
}
}
}
if ( default_options.useRss && sources.rss ) {
htmlStr += '';
htmlStr += ' RSS | ';
htmlStr += '';
htmlStr += ' |
';
for (let i=0; i < sources.rss.length ; i++) {
htmlStr += '';
htmlStr += '' +sources.rss[i].name+ ' | ';
htmlStr += ' |
';
for (let j=0; j< sources.rss[i].words.length ; j++) {
htmlStr += '';
htmlStr += '' +sources.rss[i].words[j]+ ' | ';
htmlStr += ' |
';
}
}
}
if ( sources.zeitgeist ) {
htmlStr += '';
htmlStr += ' Popular | ';
htmlStr += '';
htmlStr += ' |
';
for (let i=0; i< sources.zeitgeist.length ; i++) {
htmlStr += '';
htmlStr += '' +sources.zeitgeist[i]+ ' | ';
htmlStr += ' |
';
}
}
if ( sources.extracted ) {
htmlStr += '';
htmlStr += ' Extracted | ';
htmlStr += '';
htmlStr += ' |
';
for (let i=0; i';
htmlStr += '' +sources.extracted[i]+ ' | ';
htmlStr += '';
}
}
htmlStr += ' |
';
$('#tmn_logs_container').html(htmlStr);
}
// ES6 function to remove duplicates.
function remove_duplicates_es6(arr) {
let s = new Set(arr);
let it = s.values();
return Array.from(it);
}
// Make an options object and return it. Does not actually save anything.
function saveOptions() {
let options = {};
options.enabled = $("#trackmenot-opt-enabled").is(':checked');
options.useTab = $("#trackmenot-opt-useTab").is(':checked');
options.burstMode = $("#trackmenot-opt-burstMode").is(':checked');
options.disableLogs = $("#trackmenot-opt-disable-logs").is(':checked');
options.useRss = $("#trackmenot-opt-userss").is(':checked');
options.useUserList = $("#trackmenot-use-userlist").is(':checked');
options.saveLogs = $("#trackmenot-opt-save-logs").is(':checked');
options.timeout = $("#trackmenot-opt-timeout").val();
let file = $('#trackmenot-userlist').get(0).files[0];
if (file) {
let reader = new FileReader();
let userlist = "";
reader.onload = function(e) {
userlist = reader.result;
let words = userlist.split("\n");
words = remove_duplicates_es6(words);
words = words.filter(function(elem, pos) {
return (elem !== "");
});
browser.runtime.sendMessage({
'tmn':"TMNSaveUserlist",
'option':words,
});
};
reader.readAsText(file);
}
setFrequencyMenu(options.timeout);
let engines = '';
let list = $("#search-engine-list:checked");
$("#search-engine-list :checked").each(
function(){
engines += ($(this).val())+",";
}
);
if (engines.length>0)
engines = engines.substring(0,engines.length-1);
options.searchEngines = engines;
options.feedList = $("#trackmenot-seed").val();
options.use_black_list = $("#trackmenot-use-blacklist").is(':checked');
options.use_dhs_list = $("#trackmenot-use-dhslist").is(':checked');
options.kw_black_list = $("#trackmenot-blacklist").val();
return options;
}
function handleRequest(request, sender, sendResponse) {
if (!request.options) return;
switch (request.options) {
case "TMNSetOptionsMenu":
TMNSetOptionsMenu(request.param);
sendResponse({});
break;
case "TMNSendLogs":
TMNShowLog(request.param);
sendResponse({});
break;
case "TMNSendQueries":
TMNShowQueries(request.param);
sendResponse({});
break;
case "TMNSendEngines":
TMNShowEngines(request.param);
sendResponse({});
break;
default:
sendResponse({}); // snub them.
}
}
document.addEventListener('DOMContentLoaded', function () {
if (tmn) {
TMNShowEngines(tmn._getTargetEngines());
} else {
TMNShowEngines();
}
TMNSetOptionsMenu();
loadHandlers();
});
browser.runtime.onMessage.addListener(function(){
handleRequest();
});