1
0
Fork 0
mirror of https://github.com/Oreolek/TrackMeNot-Chrome.git synced 2024-04-25 21:59:21 +03:00

Fix borken buttons, DHS list and other bugs

This commit is contained in:
Janos 2016-09-18 19:16:02 +02:00
parent 52ac38c9f0
commit ecfb808e47
8 changed files with 338 additions and 291 deletions

BIN
icon16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
icon32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View file

@ -2,6 +2,8 @@
"manifest_version": 2,
"name": "TrackMeNot",
"version": "0.8.3",
"icons": { "16": "icon16.png",
"48": "icon32.png"},
"description": "TMN portage on Chrome",
"browser_action": {
"default_icon": "tmn.png",
@ -20,7 +22,7 @@
}
],
"permissions": [
"tabs","https://*/*","webNavigation","storage"
"tabs","https://*/*","http://*/*","webNavigation","storage"
]
}

View file

@ -12,11 +12,14 @@ TRACKMENOT.Menus = function() {
function _cout (msg) { console.log(msg); }
function showHelp() {
window.open("http://www.cs.nyu.edu/trackmenot/faq.html")
}
return {
showHelp: function() {
window.open("http://www.cs.nyu.edu/trackmenot/faq.html")
},
toggleOnOff: function() {
options.enabled = !options.enabled
if( !options.enabled) tmn._stopTMN();
@ -28,8 +31,8 @@ TRACKMENOT.Menus = function() {
toggleTabFrame: function() {
options.useTab = !options.useTab
tmn.changeTabStatus(options.useTab);
tmn.saveOptions();
tmn._changeTabStatus(options.useTab);
tmn._saveOptions();
TRACKMENOT.Menus.onLoadMenu();
},
@ -58,8 +61,9 @@ TRACKMENOT.Menus = function() {
}();
document.addEventListener('DOMContentLoaded', function () {
$("#trackmenot-menu-useTab").click(TRACKMENOT.Menus.toggleTabFrame);
$("#trackmenot-menu-useTab").click(TRACKMENOT.Menus.toggleTabFrame);
$("#trackmenot-enabled").click(TRACKMENOT.Menus.toggleOnOff);
$("#trackmenot-menu-win").click(function() { window.open(chrome.extension.getURL('options.html'));});
$("#trackmenot-menu-help").click(TRACKMENOT.Menus.showHelp)
TRACKMENOT.Menus.onLoadMenu()
});

View file

@ -3,12 +3,16 @@ var tmn_options ={};
var tmn = chrome.extension.getBackgroundPage().TRACKMENOT.TMNSearch;
var options = null;
function loadHandlers() {
$("#apply-options").click( function() {
tmn_options = {"options":saveOptions()};
TMNSetOptionsMenu(tmn_options);
alert("Configuration saved");
chrome.runtime.sendMessage({'tmn':"TMNSaveOptions",'option':tmn_options.options});
alert("Configuration saved");
TMNSetOptionsMenu(tmn_options);
}
);
@ -16,15 +20,10 @@ function loadHandlers() {
$("#add-engine-table").show();
}
);
$("#show-log").click( function() {
chrome.runtime.sendMessage({'tmn':"TMNOptionsShowLog"});
}
);
$("#show-log").click( TMNShowLog );
$("#trackmenot-opt-showqueries").click( TMNShowQueries);
$("#trackmenot-opt-showqueries").click( function() {
chrome.runtime.sendMessage({'tmn':"TMNOptionsShowQueries"});
}
);
$("#validate-feed").click( function() {
var feeds = $("#trackmenot-seed").val();
@ -33,17 +32,23 @@ function loadHandlers() {
}
);
$("#clear-log").click( function() {
chrome.runtime.sendMessage({'tmn':"TMNOptionsClearLog"});
}
);
$("#clear-log").click( TMNClearLogs );
$("#search-engine-list").on('click', 'button.smallbutton', function(event) {
$("#search-engine-list").on('click', 'button.smallbutton', function(event) {
var del_engine = event.target.id.split("_").pop();
chrome.runtime.sendMessage({'tmn':"TMNDelEngine",'engine':del_engine});
});
});
$("#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() {
@ -95,10 +100,13 @@ function setFrequencyMenu(timeout){
function TMNClearLogs() {
tmn._clearLogs();
TMNShowLog();
}
function TMNShowLog(tmnlogs) {
var logs = tmnlogs.logs
function TMNShowLog() {
var logs = tmn._getLogs()
var htmlStr = '<table witdh=500 cellspacing=3 bgcolor=white frame=border>';
htmlStr += '<thead><tr align=left>';
htmlStr += '<th>Engine</th>';
@ -139,14 +147,64 @@ function TMNShowEngines(engines) {
$('#search-engine-list').html(htmlStr);
}
function TMNShowQueries(param) {
var queries = param.queries.split(',');
var htmlStr = '<table witdh=500 cellspacing=3 bgcolor=white frame=border>';
for (var i=0; i< 3000 && i<queries.length ; i++) {
htmlStr += '<tr style="color:Black">';
htmlStr += '<td>' +queries[i]+ '<td>'
htmlStr += '</tr>';
function TMNShowQueries() {
var sources = tmn._getAllQueries();
var htmlStr = '<a href="#dhs">DHS</a> | <a href="#rss"> RSS </a> | <a href="#popular"> Popular </a>|<a href="#extracted"> Extracted</a>'
htmlStr += '<div style="height:1000px;overflow:auto;"><table witdh=500 cellspacing=3 bgcolor=white frame=border>';
if ( sources.dhs ) {
htmlStr += '<tr style="color:Black" bgcolor=#D6E0E0 align=center>';
htmlStr += '<td > DHS Monitored <td>';
htmlStr += '<a name="dhs"></a>';
htmlStr += '</tr>';
for (var i=0; i<sources.dhs.length ; i++) {
htmlStr += '<tr style="color:Black" bgcolor=#F0F0F0 align=center>';
htmlStr += '<td>' +sources.dhs[i].category_name+ '<td>'
htmlStr += '</tr>';
for (var j=0; j< sources.dhs[i].words.length ; j++) {
htmlStr += '<tr style="color:Black">';
htmlStr += '<td>' +sources.dhs[i].words[j]+ '<td>'
htmlStr += '</tr>';
}
}
}
if ( sources.rss ) {
htmlStr += '<tr style="color:Black" bgcolor=#D6E0E0 align=center>';
htmlStr += '<td > RSS <td>';
htmlStr += '<a name="rss"></a>';
htmlStr += '</tr>';
for (var i=0; i<sources.rss.length ; i++) {
htmlStr += '<tr style="color:Black" bgcolor=#F0F0F0 align=center>';
htmlStr += '<td>' +sources.rss[i].name+ '<td>'
htmlStr += '</tr>';
for (var j=0; j< sources.rss[i].words.length ; j++) {
htmlStr += '<tr style="color:Black">';
htmlStr += '<td>' +sources.rss[i].words[j]+ '<td>'
htmlStr += '</tr>';
}
}
}
if ( sources.zeitgeist ) {
htmlStr += '<tr style="color:Black" bgcolor=#D6E0E0 align=center>';
htmlStr += '<td > Popular <td>'
htmlStr += '<a name="popular"></a>';
htmlStr += '</tr>';
for (var i=0; i< sources.zeitgeist.length ; i++) {
htmlStr += '<tr style="color:Black">';
htmlStr += '<td>' +sources.zeitgeist[i]+ '<td>'
htmlStr += '</tr>';
}
}
if ( sources.extracted ) {
htmlStr += '<tr style="color:Black" bgcolor=#D6E0E0 align=center>';
htmlStr += '<td > Extracted <td>';
htmlStr += '<a name="extracted"></a>';
htmlStr += '</tr>';
for (var i=0; i<sources.extracted.length ; i++) {
htmlStr += '<tr style="color:Black" bgcolor=#F0F0F0 align=center>';
htmlStr += '<td>' +sources.extracted[i]+ '<td>'
htmlStr += '</tr>';
}
}
htmlStr += '</table>';
$('#tmn_logs_container').html(htmlStr);
}
@ -180,17 +238,18 @@ function saveOptions() {
function handleRequest(request, sender, sendResponse) {
if (!request.options) return;
switch (request.options) {
case "TMNSetOptionsMenu":
TMNSetOptionsMenu(request.param);
sendResponse({})
break;
case "TMNSendLogs":
TMNShowLog(request.param.logs);
TMNShowLog(request.param);
sendResponse({})
break;
case "TMNSendQueries":
TMNShowQueries(request.param.queries);
TMNShowQueries(request.param);
sendResponse({})
break;
case "TMNSendEngines":
@ -204,6 +263,10 @@ function handleRequest(request, sender, sendResponse) {
}
document.addEventListener('DOMContentLoaded', function () {
TMNShowEngines(tmn._getTargetEngines());
TMNSetOptionsMenu();
@ -213,7 +276,7 @@ document.addEventListener('DOMContentLoaded', function () {
chrome.runtime.onMessage.addListener(handleRequest);
chrome.runtime.onMessage.addListener(function(){handleRequest()});
/*
self.port.on("TMNSetOptionsMenu",TMNSetOptionsMenu)
self.port.on("TMNSendLogs",TMNShowLog)

File diff suppressed because one or more lines are too long

View file

@ -136,7 +136,7 @@ TRACKMENOT.TMNInjected = function() {
}
function debug (msg) {
if (debug_script)
console.log("Debug: "+msg);
console.log("Debug: "+msg);
}
function getEngineById( id) {
@ -158,18 +158,15 @@ TRACKMENOT.TMNInjected = function() {
function pressEnter(elt) {
var timers = getTimingArray();
var evtDown = document.createEvent("KeyboardEvent");
evtDown.initKeyboardEvent( "keydown", true, true, document.defaultView, false, false, false, false, 13, 0 );
var evtDown = new KeyboardEvent("keydown", {"keyCode":13} );
window.setTimeout(function(){
elt.dispatchEvent(evtDown);
},timers[0])
var evtPress= document.createEvent("KeyboardEvent");
evtPress.initKeyboardEvent( "keypress", true, true, document.defaultView, false, false, false, false, 13, 0 );
var evtPress = new KeyboardEvent("keypress", {"keyCode":13} );
window.setTimeout(function(){
elt.dispatchEvent(evtPress);
},timers[1])
var evtUp = document.createEvent("KeyboardEvent");
evtUp.initKeyboardEvent( "keyup", true, true, document.defaultView, false, false, false, false, 13, 0 );
var evtUp = new KeyboardEvent("keyup", {"keyCode":13} );
window.setTimeout(function(){
elt.dispatchEvent(evtUp);
},timers[2])
@ -181,15 +178,13 @@ TRACKMENOT.TMNInjected = function() {
function downKey(chara, searchBox) {
var charCode = chara[chara.length-1].charCodeAt(0)
var evtDown = document.createEvent("KeyboardEvent");
evtDown.initKeyboardEvent( "keydown", true, true, document.defaultView, false, false, false, false, 0, charCode );
var evtDown = new KeyboardEvent("keydown", {"charCode":charCode} );
searchBox.dispatchEvent(evtDown)
}
function pressKey(chara, searchBox) {
var charCode = chara[chara.length-1].charCodeAt(0)
var evtPress = document.createEvent("KeyboardEvent");
evtPress.initKeyboardEvent( "keypress", true, true, document.defaultView, false, false, false, false, 0, charCode );
var evtPress = new KeyboardEvent("keypress", {"charCode":charCode} );
searchBox.dispatchEvent(evtPress)
}
@ -199,11 +194,11 @@ TRACKMENOT.TMNInjected = function() {
searchBox.dispatchEvent(ev);
}
function releaseKey(chara, searchBox) {
var charCode = chara[chara.length-1].charCodeAt(0)
var evtUp = document.createEvent("KeyboardEvent");
evtUp.initKeyboardEvent( "keyup", true, true, document.defaultView, false, false, false, false, 0, charCode );
searchBox.dispatchEvent(evtUp)
function releaseKey(chara, searchBox) {
var charCode = chara[chara.length - 1].charCodeAt(0);
var evtUp = new KeyboardEvent("keyup", {"charCode":charCode} );
//evtUp.initKeyEvent("keyup", true, true, null, false, false, false, false, 0, charCode);
searchBox.dispatchEvent(evtUp);
}
function simulateClick( engine ) {
@ -252,7 +247,6 @@ TRACKMENOT.TMNInjected = function() {
var button = getButton(document)
clickElt(button);
debug("send page loaded")
sendPageLoaded();
}
@ -484,60 +478,54 @@ TRACKMENOT.TMNInjected = function() {
}
}
function updateURLRegexp( eng, url) {
//function updateURLRegexp( eng, url) {
var pre = result[1];
var query = result[2];
var post = result[3];
var eng = result[4];
var asearch = pre+'|'+post;
if (!tmn_tab || worker.tab.index != tmn_tab.index ) {
debug("Worker find a match for url: "+ url + " on engine "+ eng +"!")
if (burstEnabled) enterBurst ( eng )
var engine = getEngineById(eng)
if ( engine && engine.urlmap != asearch ) {
engine.urlmap = asearch;
chrome.storage.set({engines :JSON.stringify(engines)}) ;
var logEntry = createLog('URLmap', eng, null,null,null, asearch)
log(logEntry);
debug("Updated url fr search engine "+ eng + ", new url is "+asearch);
}
}
var regex = regexMap[eng];
cout(" regex: "+regex+" ->\n "+url);
result = url.match(regex);
cout("updateURLRegexp")
if (!result) {
cout("Can't find a regexp matching searched url")
return false;
}
if (result.length !=4 ){
if (result.length ==6 && eng == "google" ) {
result.splice(2,2);
result.push(eng);
}
cout("REGEX_ERROR: "+url);
for (var i in result)
cout(" **** "+i+")"+result[i])
}
//var result = checkForSearchUrl(url);
//if (!result) {
//return;
//}
// -- EXTRACT DATA FROM THE URL
var pre = result[1];
var post = result[3];
var asearch = pre+'|'+post;
if(eng=="google" && !url.match("^(https?:\/\/[a-z]+\.google\.(co\\.|com\\.)?[a-z^\/]{2,3}\/(search){1}\?.*?[&\?]{1}q=)([^&]*)(.*)$") || url.indexOf("sclient=psy-ab")>0 || url.indexOf("#")>0 )
return true;
// -- NEW SEARCH URL: ADD TO USER_MAP
if (asearch ){
setCurrentURLMap(eng, asearch);
}
//var pre = result[1];
//var query = result[2];
//var post = result[3];
//var eng = result[4];
//var asearch = pre+'|'+post;
//var regex = regexMap[eng];
//cout(" regex: "+regex+" ->\n "+url);
//result = url.match(regex);
//cout("updateURLRegexp")
//if (!result) {
//cout("Can't find a regexp matching searched url")
//return false;
//}
return true;
}
//if (result.length !=4 ){
//if (result.length ==6 && eng == "google" ) {
//result.splice(2,2);
//result.push(eng);
//}
//cout("REGEX_ERROR: "+url);
//for (var i in result)
//cout(" **** "+i+")"+result[i])
//}
//// -- EXTRACT DATA FROM THE URL
//var pre = result[1];
//var post = result[3];
//var asearch = pre+'|'+post;
//if(eng=="google" && !url.match("^(https?:\/\/[a-z]+\.google\.(co\\.|com\\.)?[a-z^\/]{2,3}\/(search){1}\?.*?[&\?]{1}q=)([^&]*)(.*)$") || url.indexOf("sclient=psy-ab")>0 || url.indexOf("#")>0 )
//return true;
//// -- NEW SEARCH URL: ADD TO USER_MAP
//if (asearch ){
//setCurrentURLMap(eng, asearch);
//}
//return true;
//}
function checkForSearchUrl(url) {
@ -584,11 +572,13 @@ TRACKMENOT.TMNInjected = function() {
function sendPageLoaded() {
var req = {
tmn: "pageLoaded",
html: document.defaultView.document.body.innerHTML
}
chrome.runtime.sendMessage(req);
document.addEventListener('load', function () {
var req = {
"tmn": "pageLoaded",
"html": document.defaultView.document.body.innerHTML
}
chrome.runtime.sendMessage(req);
});
}
@ -598,7 +588,7 @@ TRACKMENOT.TMNInjected = function() {
function updateStatus(msg) {
var req = {
updateStatus: msg
"updateStatus": msg
}
chrome.runtime.sendMessage(req);
}
@ -613,9 +603,9 @@ TRACKMENOT.TMNInjected = function() {
function notifyUserSearch(eng, url) {
// Here we update the regecxpfpor the queried engine
updateURLRegexp(eng, url);
//updateURLRegexp(eng, url);
chrome.runtime.sendMessage({
userSearch: eng
"userSearch": eng
} );
}
@ -632,24 +622,26 @@ TRACKMENOT.TMNInjected = function() {
tmnCurrentURL= url;
debug("Current TMN loc: "+ tmnCurrentURL )
var message = {
url: tmnCurrentURL
"url": tmnCurrentURL
};
chrome.runtime.sendMessage( message);
sendPageLoaded();
}
function clickResult(request) {
cout("Clicking on engine : "+request.tmn_engine )
simulateClick(request.tmn_engine);
}
return {
clickResult : function(request) {
cout("Clicking on engine : "+request.tmn_engine )
simulateClick(request.tmn_engine);
},
handleRequest : function(request, sender, sendResponse) {
debug("Received: "+ request.tmnQuery + " on engine: "+ request.tmnEngine + " mode: " +request.tmnMode)
//debug("Received: "+ request.tmnQuery + " on engine: "+ request.tmnEngine + " mode: " +request.tmnMode)
if (request.tmnQuery) {
var tmn_query = request.tmnQuery;
engine = request.tmnEngine;
@ -663,22 +655,27 @@ TRACKMENOT.TMNInjected = function() {
setTMNCurrentURL(encodedurl);
}
}
if (request.tmn_engine) {
clickResult(request)
}
return; // snub them.
} ,
checkIsActiveTab : function() {
chrome.runtime.sendMessage({
tmn: "isActiveTab"
}, function(response) {
if (response.isActive){
cout('Message sent from active tab');
}, function(resp) {
if (!resp)
return
if (resp.isActive){
TRACKMENOT.TMNInjected.hasLoaded();
} else {
var host = window.location.host;
var eng = isSafeHost(host);
if ( eng ) {
cout('User search detected!!');
notifyUserSearch(eng, window.location.href);
}
}
@ -692,8 +689,16 @@ TRACKMENOT.TMNInjected = function() {
window.stop();
//history.go(-1);
}
// sendPageLoaded();
//sendPageLoaded();
getTMNCurrentURL();
window.addEventListener('load', function () {
var req = {
"tmn": "pageLoaded",
"html": document.defaultView.document.body.innerHTML,
"url" : document.location
}
chrome.runtime.sendMessage(req);
});
},
@ -702,5 +707,7 @@ TRACKMENOT.TMNInjected = function() {
TRACKMENOT.TMNInjected.checkIsActiveTab();
chrome.runtime.onMessage.addListener( TRACKMENOT.TMNInjected.handleRequest );
/*self.port.on("TMNTabRequest", TRACKMENOT.TMNInjected.handleRequest );
self.port.on("TMNClickResult", TRACKMENOT.TMNInjected.clickResult );*/
/*self.port.on("TMNTabRequest", TRACKMENOT.TMNInjected.handleRequest );
self.port.on("TMNClickResult", TRACKMENOT.TMNInjected.clickResult );*/

View file

@ -13,21 +13,6 @@
You should have received a copy of the GNU General Public License
along with Foobar. If not, see <http://www.gnu.org/licenses/>.
********************************************************************************/
/*var Request = require("request").Request;
var tabs = require('tabs');
var URL = require("url").URL;
var data = require("self").data;
var ss = require("simple-storage");
var widgets = require("widget");
var panels = require("panel");
var pageMod = require("page-mod");
var timer = require("timer");
var {Cc, Ci} = require("chrome");
var prefs = require("sdk/preferences/service");
var windows = require("windows").browserWindows;
var notifications = require("notifications");
var _ = require("l10n").get;
var sp = require("sdk/simple-prefs");*/
var _ = chrome.i18n.getMessage;
@ -42,6 +27,7 @@ TRACKMENOT.TMNSearch = function() {
var enabled = true;
var debug_ = true;
var load_full_pages = false;
var last_url = "";
var stop_when = "start"
var useIncrementals = true;
var incQueries = [];
@ -197,7 +183,7 @@ var engines = [
function updateEngineList() {
chrome.storage.set({engines : JSON.stringify(engines)}) ;
chrome.storage.local.set({engines : JSON.stringify(engines)}) ;
sendMessageToOptionScript("TMNSendEngines",engines);
sendOptionToTab();
}
@ -214,7 +200,7 @@ var engines = [
function sendMessageToPanelScript(title, message) {
hrome.runtime.sendMessage(title,message)
chrome.runtime.sendMessage(title,message)
}
function handleMessageFromPanelScript(title, handler) {
@ -223,22 +209,6 @@ var engines = [
function sendLogToOption() {
sendMessageToOptionScript("TMNSendLogs",{logs:tmnLogs})
}
function sendQueriesToOption() {
var allqueries = "";
for ( var arr of TMNQueries) {
if (arr && arr.length) {
for (var elt of arr)
if ( elt&& elt.words && elt.words.length) allqueries+= elt.words.join(',');
else allqueries+= elt+",";
}
}
sendMessageToOptionScript("TMNSendQueries",{queries:allqueries})
}
@ -340,7 +310,6 @@ var engines = [
}
function deleteTab() {
if (!useTabe ) return;
chrome.tabs.remove(tmn_tab_id);
tmn_tab_id = -1;
}
@ -350,12 +319,12 @@ var engines = [
if(debug) cout('Creating tab for TrackMeNot')
try {
chrome.tabs.create({
'selected': false,
'active': false,
'url': 'http://www.google.com'
},iniTab);
return 1;
} catch (ex) {
cerr('Can no create TMN tab:' , ex);
cerr('Can not create TMN tab:' , ex);
return null;
}
}
@ -499,10 +468,10 @@ var engines = [
if (tmn_tab_id == -1 || tab_id != tmn_tab_id ) {
debug("Worker find a match for url: "+ url + " on engine "+ eng +"!")
if (burstEnabled) enterBurst ( eng )
var engine = getEngineById(eng)
if ( engine && engine.urlmap != asearch ) {
engine.urlmap = asearch;
chrome.storage.set({engines :JSON.stringify(engines)}) ;
var updated_SE = getEngineById(eng)
if ( updated_SE && updated_SE.urlmap != asearch ) {
updated_SE.urlmap = asearch;
chrome.storage.local.set({engines :JSON.stringify(engines)}) ;
var logEntry = createLog('URLmap', eng, null,null,null, asearch)
log(logEntry);
debug("Updated url fr search engine "+ eng + ", new url is "+asearch);
@ -517,7 +486,7 @@ var engines = [
for (var i=0;i< engines.length; i++){
var eng = engines[i]
var regex = eng.regexmap;
debug(" regex: "+regex+" ->\n "+url);
//debug(" regex: "+regex+" ->\n "+url);
result = url.match(regex);
if (result) {
@ -577,9 +546,12 @@ var engines = [
function validateFeeds(param) {
TMNQueries.rss = [];
feedList= param.feeds;
cout("Validating the feeds: "+ feedList)
var feeds = feedList.split('|');
for (var i=0;i<feeds.length;i++)
for (var i=0;i<feeds.length;i++) {
cout(" Fetching " + feeds[i])
doRssFetch(feeds[i]);
}
saveOptions();
}
@ -711,7 +683,7 @@ var engines = [
var feedObject = {};
feedObject.name = feedTitles[0].firstChild.nodeValue;
feedObject.words = [];
cout('ADD RSS title : '+ feedTitles[0].firstChild.nodeValue);
//cout('ADD RSS title : '+ feedTitles[0].firstChild.nodeValue);
for (var i=1; i<feedTitles.length; i++){
if ( feedTitles[i].firstChild ) {
rssTitles = feedTitles[i].firstChild.nodeValue;
@ -720,7 +692,7 @@ var engines = [
var queryToAdd = filterKeyWords(rssTitles, feedUrl);
addQuery(queryToAdd,feedObject.words);
}
cout(feedObject.name + " : " + feedObject.words)
//cout(feedObject.name + " : " + feedObject.words)
TMNQueries.rss.push(feedObject);
return 1;
@ -730,56 +702,35 @@ var engines = [
function readDHSList() {
TMNQueries.dhs = [];
var i = 0;
var req = Request({
url: data.url("dhs_keywords.json"),
overrideMimeType: "application/json",
onComplete: function (response) {
if (response.status ==200 ) {
var keywords = response.json.keywords;
for (var cat of keywords) {
TMNQueries.dhs[i] = {};
TMNQueries.dhs[i].category_name = cat.category_name;
TMNQueries.dhs[i].words = [];
for (var word of cat.category_words)
TMNQueries.dhs[i].words.push(word.name)
i++;
}
return;
} else {
var logEntry = createLog('error', "Can not load DHS list");
log(logEntry);
}
}
});
req.get();
var req = new XMLHttpRequest();
req.overrideMimeType("application/json");
req.open('GET',chrome.extension.getURL("dhs_keywords.json"),true);
req.onreadystatechange = function () {
var response = JSON.parse(req.responseText);
var keywords = response.keywords;
for (var cat of keywords) {
TMNQueries.dhs[i] = {};
TMNQueries.dhs[i].category_name = cat.category_name;
TMNQueries.dhs[i].words = [];
for (var word of cat.category_words)
TMNQueries.dhs[i].words.push(word.name)
i++;
}
};
req.send(null);
}
function doRssFetch(feedUrl){
var req;
try {
req = new XMLHttpRequest();
}
catch (e) {
try {
req = new ActiveXObject('Msxml2.XMLHTTP');
}
catch (e) {
try {
req = new ActiveXObject('Microsoft.XMLHTTP');
}
catch (e) {
console.log('XMLHttpRequest not supported');
return;
}
}
}
try {
function doRssFetch(feedUrl){
try {
req = new XMLHttpRequest();
req.open('GET', feedUrl, true);
req.onreadystatechange = function(aEvt){
req.onreadystatechange = function(){
if (req.readyState == 4) {
if (req.status == 200)
if (req.status == 200) {
cout(req.responseText)
var adds = addRssTitles(req.responseXML, feedUrl);
}
}
};
req.send(null);
@ -897,6 +848,7 @@ var engines = [
function sendQuery(queryToSend) {
tmn_scheduledSearch = false;
cout("Engin: "+engine)
var url = getEngineById(engine).urlmap;
var isIncr = (queryToSend == null);
if (queryToSend == null){
@ -924,10 +876,7 @@ var engines = [
chrome.tabs.sendMessage( tmn_tab_id, TMNReq);
debug('Message sent to the tab');
} catch(ex) {
cout("Error : "+ex)
cout("Creating a new tab")
deleteTab();
window.setTimeout(function() {chrome.tabs.sendMessage( tmn_tab_id, TMNReq)},1000) ;
rescheduleOnError();
}
} else {
@ -939,20 +888,23 @@ var engines = [
if (xhr.readyState == 4) {
clearTimeout(tmn_errTimeout);
if (xhr.status >= 200 && xhr.status<400 ) {
var logEntry = {
type : 'query',
engine : engine,
mode : tmn_mode,
query : queryToSend,
id : tmn_id++
};
log(logEntry);
reschedule();
var html = xhr.responseText;
extractQueries(html);
} else {
rescheduleOnError();
var logEntry = JSON.stringify({
'type' : 'query',
"engine" : engine,
'mode' : tmn_mode,
'query' : queryToSend,
'id' : tmn_id++
});
log(logEntry);
}
}
}
updateOnSend(queryToSend);
xhr.send();
currentTMNURL = queryURL;
@ -1023,7 +975,7 @@ var engines = [
delay += delay*(Math.random()-.5);
}
}
if (isBursting()) engine = burstEngine;
if (isBursting()) engine = burstEngine;
else engine = chooseEngine(searchEngines.split(','));
debug('NextSearchScheduled on: '+engine);
tmn_errTimeout = window.setTimeout(rescheduleOnError, delay*3);
@ -1034,9 +986,9 @@ var engines = [
if (!burstEnabled) return;
cout("Entering burst mode for engine: "+burst_engine)
var logMessage = {
'type':'info',
'message':'User made a search, start burst',
'engine':burst_engine
type:'info',
message:'User made a search, start burst',
engine:burst_engine
} ;
log(logMessage);
burstEngine = burst_engine;
@ -1191,11 +1143,10 @@ var engines = [
}
function sendClickEvent() {
try {
worker_tab.port.emit("TMNClickResult",{"tmn_engine":getEngineById(prev_engine)});
}catch(ex){
cout(ex)
}
if ( prev_engine ) {
cout("About to click on " + prev_engine)
chrome.tabs.sendMessage(tmn_tab_id,{tmn_engine:getEngineById(prev_engine)});
}
}
function handleRequest(request, sender, sendResponse) {
@ -1213,16 +1164,17 @@ var engines = [
sendResponse({});
return;
}
if (request.userSearch) {
/*if (request.userSearch) {
cout("Detected User search")
enterBurst(request.userSearch);
sendResponse({});
return;
}
}*/
if ( request.getURLMap) {
var engine = request.getURLMap;
var urlMap = currentUrlMap[engine];
var tmp_engine = request.getURLMap;
var urlMap = currentUrlMap[tmp_engine];
sendResponse({
url: urlMap
"url": urlMap
})
return;
}
@ -1238,7 +1190,7 @@ var engines = [
"engine" : eng,
'newUrl' : asearch
};
TRACKMENOT.TMNSearch.log(logEntry);
log(logEntry);
sendResponse({});
return;
}
@ -1246,17 +1198,27 @@ var engines = [
switch (request.tmn) {
case "currentURL":
sendResponse({
url: currentTMNURL
"url": currentTMNURL
})
break;
case "useTab" :
sendResponse({
tmnUseTab: useTab
"tmnUseTab": useTab
});
break;
case "pageLoaded": //Remove timer and then reschedule;
case "pageLoaded": //Remove timer and then reschedule;
if (last_url == request.url) break;
else last_url = request.url
prev_engine = engine;
clearTimeout(tmn_errTimeout);
if (Math.random() < 1) {
sendClickEvent();
}
reschedule();
try {
var html = request.html;
extractQueries(html);
} catch (ex) {}
sendResponse({});
break;
case "tmnError": //Remove timer and then reschedule;
@ -1267,9 +1229,9 @@ var engines = [
case "isActiveTab":
var active = (!sender.tab || sender.tab.id==tmn_tab_id);
cout("active: "+ active)
sendResponse({
isActive: active
});
sendResponse(
{"isActive": active}
);
break;
case "TMNSaveOptions":
saveOptionFromTab(request.option);
@ -1278,18 +1240,6 @@ var engines = [
case "TMNResetOptions":
resetOptions();
sendResponse({});
break;
case "TMNOptionsShowLog":
sendLogToOption();
sendResponse({});
break;
case "TMNOptionsShowQueries":
sendQueriesToOption();
sendResponse({});
break;
case "TMNOptionsClearLog":
clearLog();
sendResponse({});
break;
case "TMNValideFeeds":
validateFeeds(request.param);
@ -1305,29 +1255,12 @@ var engines = [
sendResponse({});
break;
default:
sendResponse({}); // snub them.
// snub them.
}
/* debug( "Recieved message: "+ request.tmn)
switch (request.tmn) {
case "pageLoaded": //Remove timer and then reschedule;
prev_engine = engine;
timer.clearTimeout(tmn_errTimeout);
if (Math.random() < 0.3) {
var time = roll(1000, 5000)
timer.setTimeout(sendClickEvent , time);
}
reschedule();
var html = request.html;
extractQueries(html);
break;
default:
}*/
}
@ -1388,21 +1321,11 @@ return {
}
/* Firefox Block
if (enabled) {
widget.label = 'On'
widget.tooltip = 'On';
widget.port.emit("UpdateText", 'TMN: On')
createTab();
scheduleNextSearch(4000);
} else {
widget.label = 'Off'
widget.tooltip = 'Off'
widget.port.emit("UpdateText", 'TMN: Off')
}*/
chrome.windows.onRemoved.addListener(function() {
deleteTab();
if (useTabe) {
deleteTab();
}
if (!saveLogs)
chrome.storage.local.set({"logs_tmn" : ""});
});
@ -1415,6 +1338,21 @@ return {
return getOptions();
},
_getLogs : function() {
return tmnLogs;
},
_clearLogs : function() {
clearLog();
},
_getAllQueries : function() {
return TMNQueries;
//sendMessageToOptionScript("TMNSendQueries",{queries:allqueries})
},
_restartTMN:function() {
return restartTMN();
},
@ -1438,7 +1376,40 @@ return {
_saveOptions: function() {
return saveOptions();
},
_changeTabStatus: function(useT) {
return changeTabStatus(useT);
},
_hideTMNTab : function(tab_id) {
if (tab_id == tmn_tab_id ) {
cout('TMN tab has been selected by the user, hidding it');
chrome.tabs.remove( tmn_tab_id );
return;
}
},
_deleteTabWhenClosing : function(win_id) {
if (useTabe && tmn_win_id == win_id ) {
cout('TMN win has been closed by the user, close the tab');
chrome.tabs.remove( tmn_tab_id );
return;
}
},
_preserveTMNTab : function(tab_id) {
if (tab_id == tmn_tab_id && useTab ) {
tmn_tab_id = -1;
cout('TMN tab has been deleted by the user, reload it');
createTab();
return;
}
},
@ -1453,6 +1424,6 @@ chrome.runtime.onMessage.addListener(TRACKMENOT.TMNSearch._handleRequest);
//chrome.tabs.onSelectionChanged.addListener(TRACKMENOT.TMNSearch._hideTMNTab);
chrome.tabs.onRemoved.addListener(TRACKMENOT.TMNSearch._preserveTMNTab);
chrome.windows.onRemoved.addListener(TRACKMENOT.TMNSearch._deleteTabWhenClosing);
//chrome.windows.onRemoved.addListener(TRACKMENOT.TMNSearch._deleteTabWhenClosing);
TRACKMENOT.TMNSearch.startTMN();