74 lines
2.0 KiB
JavaScript
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);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|