-
-
Save anonymous/146668 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
This file has been modified from Onur Yalazi's original distribution | |
by Brandon Goldsworthy and Alejandro Carrazzoni. This version only works with | |
Ubiquity 0.5 or newer. For Ubiquity 0.1.x go to | |
http://www.yalazi.org/ubiquity/commands/bugmenot.js | |
Changes: | |
Added a preview. The preview shows all of bugmenot's results, | |
though execute will still only insert the highest rated one. | |
Use current window location as default url for both preview and execute | |
Add error callback to jQuery call to bugmenot's page. | |
If not in editable field, opens bugmenot in new tab | |
Adapted to work in Parser 2. | |
Onur's original attribution info is left in-tact below. | |
You can get his original file there. | |
*/ | |
CmdUtils.CreateCommand({ | |
names: ["bugmenot", "find logins"], | |
homepage: "http://www.yalazi.org/ubiquity", | |
author: { name: "Onur YALAZI", email: "yalazi@gen3.com.tr"}, | |
license: "MPL", | |
description: "modified by Brandon Goldsworthy and Alejandro Carrazzoni. Get password for current page or entry from bugmenot.com", | |
help: "If you're in an editable text area, inserts username and password", | |
_decodeIt: function(data,key) { | |
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; | |
var o11 = "";var o21 = ""; var o31 = ""; | |
var h11 = "";var h21 = ""; var h31 = "";var h41 = ""; | |
var bits1 = ""; var i1 = 0; var enc1 = ""; | |
do { | |
h11 = b64.indexOf(data.charAt(i1++)); | |
h21 = b64.indexOf(data.charAt(i1++)); | |
h31 = b64.indexOf(data.charAt(i1++)); | |
h41 = b64.indexOf(data.charAt(i1++)); | |
bits1 = h11 << 18 | h21 << 12 | h31 << 6 | h41; | |
o11 = bits1 >> 16 & 255; | |
o21 = bits1 >> 8 & 255; | |
o31 = bits1 & 255; | |
if (h31 == 64) { | |
enc1 += String.fromCharCode(o11); | |
} else if (h41 == 64) { | |
enc1 += String.fromCharCode(o11, o21); | |
} else { | |
enc1 += String.fromCharCode(o11, o21, o31); | |
} | |
} while (i1 < data.length); | |
strInput = enc1; | |
strOutput = ""; | |
intOffset = (key + 112) / 12; | |
for (i1 = 4; i1 < strInput.length; i1++) { | |
thisLetter = strInput.charAt(i1); | |
thisCharCode = strInput.charCodeAt(i1); | |
newCharCode = thisCharCode - intOffset; | |
strOutput += String.fromCharCode(newCharCode); | |
} | |
return strOutput; | |
}, | |
_inField: function(){ | |
//gleaned from CmdUtils.setSelection | |
return context.focusedWindow.document.designMode == "on" || | |
(context.focusedElement && context.focusedElement.selectionStart >= 0); | |
}, | |
_getPassword: function(args, parent, pblock) { | |
var baseUrl = "http://www.bugmenot.com/view/" + args.modifier.text; | |
if (!pblock && !this._inField()){ | |
Utils.openUrlInBrowser(baseUrl); | |
}else{ | |
jQuery.ajax({ | |
url:baseUrl, | |
error:function(){ | |
if (pblock){ | |
pblock.innerHTML += "Passwords not found.<br />"; | |
}else{ | |
displayMessage("Passwords not found."); | |
CmdUtils.setSelection("Passwords not found."); | |
} | |
}, | |
success:function( passwords ) { | |
key = parseInt(passwords.match(/key.=.([0-9]*)/)[1]); | |
var result = ""; | |
arrayToWork = passwords.split("<div class=\"account\""); | |
if (arrayToWork.length && arrayToWork.length > 1) { | |
o_password = ""; | |
o_username = ""; | |
o_rate = 0; | |
for (i=0;i<arrayToWork.length; i++) { | |
if (pair = arrayToWork[i].match(/d\('(.*)'\)/g)) { | |
rate = parseInt(arrayToWork[i].match(/[0-9]{1,3}%/)); | |
username = pair[0].match(/'(.*)'/)[1]; | |
username = parent._decodeIt( username, key ); | |
password = pair[1].match(/'(.*)'/)[1]; | |
password = parent._decodeIt( password, key); | |
if (pblock){ | |
pblock.innerHTML += rate + "% " + username + ":" + password + "<br />"; | |
} | |
if (rate > o_rate) { | |
o_password = password; | |
o_username = username; | |
o_rate = rate; | |
} | |
} | |
} | |
if (o_rate > 0) { | |
result = o_username + ':' + o_password; | |
} else { | |
result = 'Passwords not found.'; | |
if (pblock){ | |
pblock.innerHTML += "Passwords not found.<br />"; | |
} | |
} | |
} else { | |
result = 'Passwords not found.'; | |
if (pblock){ | |
pblock.innerHTML += "Passwords not found.<br />"; | |
} | |
} | |
if (!pblock){ | |
displayMessage(result); | |
CmdUtils.setSelection(result); | |
} | |
} | |
}); | |
} | |
}, | |
arguments: [{role: "modifier", nountype: noun_arb_text, label: "url"}], | |
preview: function( pblock, args ) { | |
pblock.innerHTML = ""; | |
if (args.modifier.text.length < 1){ | |
args.modifier.text = String(Application.activeWindow.activeTab.document.location); | |
} | |
pblock.innerHTML = "Passwords for: " + args.modifier.text + "<br />"; | |
this._getPassword(args, this, pblock); | |
}, | |
execute: function( args ) { | |
if (args.modifier.text.length < 1){ | |
args.modifier.text = String(Application.activeWindow.activeTab.document.location); | |
} | |
this._getPassword(args, this, false); | |
} | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment