1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
| var myExt_urlBarListener = {
QueryInterface: function(aIID)
{
if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
aIID.equals(Components.interfaces.nsISupports))
return this;
throw Components.results.NS_NOINTERFACE;
},
onLocationChange: function(aProgress, aRequest, aURI)
{
if(window.content.document.location!='about:blank'){
myExtension.processNewURL(aURI);
}
},
onStateChange: function() {},
onProgressChange: function() {},
onStatusChange: function() {},
onSecurityChange: function() {},
onLinkIconAvailable: function() {}
};
var myExtension = {
oldURL: null,
init: function() {
// Scrutateur pour les chargements de pages Web
gBrowser.addProgressListener(myExt_urlBarListener,
Components.interfaces.nsIWebProgress.NOTIFY_STATE_DOCUMENT);
},
inspectDOM: function(usedURI){
var frames = window.content.document.getElementsByTagName("frame");
var nbDanger = 0;
var frameButton = document.getElementById("PishBar-Frame-Button")
// create a global history object in JS
var hist =
Components.classes["@mozilla.org/browser/global-history;2"].getService(Components.interfaces.nsIGlobalHistory2);
// create an IO Service in JS
var ioService = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
var i=0;
for(i=0; i<frames.length; i++){
var source=frames.item(i).getAttribute("src");
if(source.charAt(0)=='.'){
var URIpath = usedURI.spec.substr(0,usedURI.spec.lastIndexOf('/'));
var pageSource = source.substr(source.indexOf('/'));
source = URIpath+pageSource;
}
var bURI=ioService.newURI(source,null,null);
if((frames.item(i).baseURIObject.host != bURI.host)||(frames.item(i).contentDocument.getElementsByTagName("frame").length>0)){
nbDanger++;
}
}
//alert("id =" + frameButton.id +" value=" + frameButton.test);
if (nbDanger>0){
nbDanger--; // because the first frame that belongs to the good domain name is also counted
frameButton.style.listStyleImage="url(\"chrome://phishbar/skin/Frame/stop_16.png\")";
frameButton.style.fontWeight="bolder";
frameButton.style.color="red";
frameButton.label=nbDanger + " suspicous element(s)";
}
else{
frameButton.style.listStyleImage="url(\"chrome://phishbar/skin/Frame/22.png\")";
frameButton.style.fontWeight="normal";
frameButton.style.color="green";
frameButton.label="Structure is ok";
}
},
processNewURL: function(usedURI) {
if (usedURI.host!= this.oldURL){
// maintenant, nous savons que l'url est nouvelle...
this.oldURL = usedURI.host;
this.inspectDOM(usedURI);
}
},
};
window.addEventListener("DOMFrameContentLoaded", function() {myExtension.init()}, false); |
Partager