2014-10-23 16:17:19 -04:00

74 lines
2.0 KiB
JavaScript

//!javascript
Signal.connect("documentLoaded", function(wv, frame) {
autofillForm(frame.document);
});
function fillUsername(doc, name, username) {
var box = doc.querySelector('input[name="' + name + '"]');
if (!box) {
box = doc.querySelector("input[name*=user]");
}
if (!box) {
box = doc.querySelector("input[name*=email]");
}
if (!box) {
box = doc.querySelector("input[name*=account]");
}
if (!box) {
box = doc.querySelector("input[type=email]");
}
if (box) {
box.value = username;
}
}
function fillPassword(doc, name, password) {
var box = doc.querySelector('input[name="' + name + '"]');
if (!box) {
box = doc.querySelector("input[type=password]");
}
if (box) {
box.value = password;
}
}
function lastPassFind(url, callbacks) {
var cmd = "lpass find " + url;
system.spawn(cmd, {
onStdout: function(line) {
if (line.indexOf("Username: ") == 0) {
callbacks.onGetUsername(line.substr(10));
} else if (line.indexOf("Password: ") == 0) {
callbacks.onGetPassword(line.substr(10));
} else if (line.indexOf(': ') > -1) {
var name = line.substring(0, line.indexOf(': '));
callbacks.onGetFieldName(line, name);
}
},
});
}
function autofillForm(doc) {
var username, password;
lastPassFind(tabs.current.uri, {
onGetUsername: function (val) {
username = val;
fillUsername(doc, "", val);
},
onGetPassword: function (val) {
password = val;
fillPassword(doc, "", val);
},
onGetFieldName: function (line, name) {
if (username && line.indexOf(username) > -1) {
fillUsername(doc, name, username);
}
if (password && line.indexOf(password) > -1) {
fillPassword(doc, name, password);
}
}
});
}