mirror of
https://github.com/keepassxreboot/keepassxc-browser.git
synced 2026-03-11 08:54:43 +00:00
Added timeout handling and modified the isFirefox() to a function
This commit is contained in:
parent
d7a8762f34
commit
ac4a57b36d
7 changed files with 49 additions and 31 deletions
|
|
@ -1,3 +1,7 @@
|
|||
0.3.1 (2017-09-29)
|
||||
=========================
|
||||
- Added timeout handling for postMessage(). Allows proxy application to be reloaded.
|
||||
|
||||
0.3.0 (2017-09-18)
|
||||
=========================
|
||||
- Added Mozilla's browser-polyfill for making WebExtension compatibility easier
|
||||
|
|
@ -117,13 +121,11 @@
|
|||
|
||||
0.1.1 (2017-04-28)
|
||||
=========================
|
||||
|
||||
- This version works with the KeePassXC fork
|
||||
- Upgraded JavaScripts to work asynchronously
|
||||
|
||||
0.1.0 (2017-04-12)
|
||||
=========================
|
||||
|
||||
- Replaced crypto libraries with tweetnacl-js
|
||||
- New application and popup icons
|
||||
- Upgraded bootstrap to version 3.3.7
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ if (browser.webRequest.onAuthRequired) {
|
|||
let reqType = 'blocking';
|
||||
let opts = { urls: ['<all_urls>'] };
|
||||
|
||||
if (!isFirefox) {
|
||||
if (!isFirefox()) {
|
||||
handleReq = httpAuth.handleRequestCallback;
|
||||
reqType = 'asyncBlocking';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ keepass.databaseHash = 'no-hash'; //no-hash = KeePassXC is too old and does not
|
|||
keepass.keyRing = (typeof(localStorage.keyRing) === 'undefined') ? {} : JSON.parse(localStorage.keyRing);
|
||||
keepass.keyId = 'keepassxc-browser-cryptokey-name';
|
||||
keepass.keyBody = 'keepassxc-browser-key';
|
||||
keepass.messageTimeout = 1000; // milliseconds
|
||||
|
||||
const kpActions = {
|
||||
SET_LOGIN: 'set-login',
|
||||
|
|
@ -106,7 +107,7 @@ keepass.updateCredentials = function(callback, tab, entryId, username, password,
|
|||
};
|
||||
console.log(request);
|
||||
|
||||
keepass.callbackOnId(keepass.nativePort.onMessage, kpAction, (response) => {
|
||||
keepass.callbackOnId(keepass.nativePort.onMessage, kpAction, tab, (response) => {
|
||||
if (response.message && response.nonce) {
|
||||
const res = keepass.decrypt(response.message, response.nonce);
|
||||
if (res) {
|
||||
|
|
@ -116,7 +117,7 @@ keepass.updateCredentials = function(callback, tab, entryId, username, password,
|
|||
}
|
||||
}
|
||||
else if (response.error && response.errorCode) {
|
||||
keepass.handleError(tab.id, response.error, response.errorCode);
|
||||
keepass.handleError(tab, response.error, response.errorCode);
|
||||
}
|
||||
else {
|
||||
browserAction.showDefault(null, tab);
|
||||
|
|
@ -126,7 +127,7 @@ keepass.updateCredentials = function(callback, tab, entryId, username, password,
|
|||
});
|
||||
};
|
||||
|
||||
keepass.retrieveCredentials = function (callback, tab, url, submiturl, forceCallback, triggerUnlock) {
|
||||
keepass.retrieveCredentials = function(callback, tab, url, submiturl, forceCallback, triggerUnlock) {
|
||||
page.debug('keepass.retrieveCredentials(callback, {1}, {2}, {3}, {4})', tab.id, url, submiturl, forceCallback);
|
||||
|
||||
keepass.testAssociation((response) => {
|
||||
|
|
@ -168,7 +169,7 @@ keepass.retrieveCredentials = function (callback, tab, url, submiturl, forceCall
|
|||
clientID: keepass.clientID
|
||||
};
|
||||
|
||||
keepass.callbackOnId(keepass.nativePort.onMessage, kpAction, (response) => {
|
||||
keepass.callbackOnId(keepass.nativePort.onMessage, kpAction, tab, (response) => {
|
||||
if (response.message && response.nonce) {
|
||||
const res = keepass.decrypt(response.message, response.nonce);
|
||||
if (res) {
|
||||
|
|
@ -192,7 +193,7 @@ keepass.retrieveCredentials = function (callback, tab, url, submiturl, forceCall
|
|||
}
|
||||
}
|
||||
else if (response.error && response.errorCode) {
|
||||
keepass.handleError(tab.id, response.error, response.errorCode);
|
||||
keepass.handleError(tab, response.error, response.errorCode);
|
||||
}
|
||||
else {
|
||||
browserAction.showDefault(null, tab);
|
||||
|
|
@ -203,20 +204,33 @@ keepass.retrieveCredentials = function (callback, tab, url, submiturl, forceCall
|
|||
};
|
||||
|
||||
// Redirects the callback to a listener (handleReply())
|
||||
keepass.callbackOnId = function (ev, id, callback) {
|
||||
let listener = ((port, id) => {
|
||||
keepass.callbackOnId = function(ev, action, tab, callback) {
|
||||
let listener = ((port, action) => {
|
||||
let handler = (msg) => {
|
||||
if (msg && msg.action === id) {
|
||||
if (msg && msg.action === action) {
|
||||
ev.removeListener(handler);
|
||||
clearTimeout(timeout);
|
||||
callback(msg);
|
||||
}
|
||||
};
|
||||
return handler;
|
||||
})(ev, id, callback);
|
||||
})(ev, action, tab, callback);
|
||||
ev.addListener(listener);
|
||||
|
||||
// Handle timeouts
|
||||
let timeout = setTimeout(() => {
|
||||
const errorMessage = {
|
||||
action: action,
|
||||
error: kpErrors.getError(5),
|
||||
errorCode: 5
|
||||
};
|
||||
keepass.isKeePassXCAvailable = false;
|
||||
callback(errorMessage);
|
||||
ev.removeListener(listener.handler);
|
||||
}, keepass.messageTimeout);
|
||||
};
|
||||
|
||||
keepass.generatePassword = function (callback, tab, forceCallback) {
|
||||
keepass.generatePassword = function(callback, tab, forceCallback) {
|
||||
if (!keepass.isConnected) {
|
||||
callback([]);
|
||||
return;
|
||||
|
|
@ -247,7 +261,7 @@ keepass.generatePassword = function (callback, tab, forceCallback) {
|
|||
clientID: keepass.clientID
|
||||
};
|
||||
|
||||
keepass.callbackOnId(keepass.nativePort.onMessage, kpAction, (response) => {
|
||||
keepass.callbackOnId(keepass.nativePort.onMessage, kpAction, tab, (response) => {
|
||||
if (response.message && response.nonce) {
|
||||
const res = keepass.decrypt(response.message, response.nonce);
|
||||
if (res) {
|
||||
|
|
@ -271,7 +285,7 @@ keepass.generatePassword = function (callback, tab, forceCallback) {
|
|||
}
|
||||
}
|
||||
else if (response.error && response.errorCode) {
|
||||
keepass.handleError(tab.id, response.error, response.errorCode);
|
||||
keepass.handleError(tab, response.error, response.errorCode);
|
||||
}
|
||||
});
|
||||
keepass.nativePort.postMessage(request);
|
||||
|
|
@ -308,7 +322,7 @@ keepass.associate = function(callback, tab) {
|
|||
clientID: keepass.clientID
|
||||
};
|
||||
|
||||
keepass.callbackOnId(keepass.nativePort.onMessage, kpAction, (response) => {
|
||||
keepass.callbackOnId(keepass.nativePort.onMessage, kpAction, tab, (response) => {
|
||||
if (response.message && response.nonce) {
|
||||
const res = keepass.decrypt(response.message, response.nonce);
|
||||
if (res) {
|
||||
|
|
@ -330,14 +344,14 @@ keepass.associate = function(callback, tab) {
|
|||
}
|
||||
}
|
||||
else if (response.error && response.errorCode) {
|
||||
keepass.handleError(tab.id, response.error, response.errorCode);
|
||||
keepass.handleError(tab, response.error, response.errorCode);
|
||||
}
|
||||
});
|
||||
keepass.nativePort.postMessage(request);
|
||||
}, tab);
|
||||
};
|
||||
|
||||
keepass.testAssociation = function (callback, tab, triggerUnlock) {
|
||||
keepass.testAssociation = function(callback, tab, triggerUnlock) {
|
||||
if (tab && page.tabs[tab.id]) {
|
||||
page.tabs[tab.id].errorMessage = null;
|
||||
}
|
||||
|
|
@ -391,7 +405,7 @@ keepass.testAssociation = function (callback, tab, triggerUnlock) {
|
|||
clientID: keepass.clientID
|
||||
};
|
||||
|
||||
keepass.callbackOnId(keepass.nativePort.onMessage, kpAction, (response) => {
|
||||
keepass.callbackOnId(keepass.nativePort.onMessage, kpAction, tab, (response) => {
|
||||
if (response.message && response.nonce) {
|
||||
const res = keepass.decrypt(response.message, response.nonce);
|
||||
if (res) {
|
||||
|
|
@ -419,7 +433,7 @@ keepass.testAssociation = function (callback, tab, triggerUnlock) {
|
|||
}
|
||||
}
|
||||
else if (response.error && response.errorCode) {
|
||||
keepass.handleError(tab.id, response.error, response.errorCode);
|
||||
keepass.handleError(tab, response.error, response.errorCode);
|
||||
}
|
||||
callback(keepass.isAssociated());
|
||||
});
|
||||
|
|
@ -427,7 +441,7 @@ keepass.testAssociation = function (callback, tab, triggerUnlock) {
|
|||
}, tab, triggerUnlock);
|
||||
};
|
||||
|
||||
keepass.getDatabaseHash = function (callback, tab, triggerUnlock) {
|
||||
keepass.getDatabaseHash = function(callback, tab, triggerUnlock) {
|
||||
if (!keepass.isConnected) {
|
||||
keepass.handleError(tab, kpErrors.TIMEOUT_OR_NOT_CONNECTED);
|
||||
callback([]);
|
||||
|
|
@ -459,7 +473,7 @@ keepass.getDatabaseHash = function (callback, tab, triggerUnlock) {
|
|||
clientID: keepass.clientID
|
||||
};
|
||||
|
||||
keepass.callbackOnId(keepass.nativePort.onMessage, kpAction, (response) => {
|
||||
keepass.callbackOnId(keepass.nativePort.onMessage, kpAction, tab, (response) => {
|
||||
if (response.message && response.nonce) {
|
||||
const res = keepass.decrypt(response.message, response.nonce);
|
||||
if (res) {
|
||||
|
|
@ -518,7 +532,7 @@ keepass.changePublicKeys = function(tab, callback) {
|
|||
clientID: keepass.clientID
|
||||
};
|
||||
|
||||
keepass.callbackOnId(keepass.nativePort.onMessage, kpAction, (response) => {
|
||||
keepass.callbackOnId(keepass.nativePort.onMessage, kpAction, tab, (response) => {
|
||||
keepass.setcurrentKeePassXCVersion(response.version);
|
||||
|
||||
if (!keepass.verifyKeyResponse(response, key, nonce)) {
|
||||
|
|
@ -664,7 +678,7 @@ keepass.connectToNative = function() {
|
|||
}
|
||||
};
|
||||
|
||||
keepass.onNativeMessage = function (response) {
|
||||
keepass.onNativeMessage = function(response) {
|
||||
//console.log('Received message: ' + JSON.stringify(response));
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
var isFirefox = false;
|
||||
if (!(/Chrome/.test(navigator.userAgent) && /Google/.test(navigator.vendor))) {
|
||||
isFirefox = true;
|
||||
}
|
||||
var isFirefox = function() {
|
||||
if (!(/Chrome/.test(navigator.userAgent) && /Google/.test(navigator.vendor))) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -316,7 +316,7 @@ cipPassword.createDialog = function() {
|
|||
};
|
||||
|
||||
cipPassword.createIcon = function(field) {
|
||||
const $className = (isFirefox ? 'key-moz' : 'key');
|
||||
const $className = (isFirefox() ? 'key-moz' : 'key');
|
||||
const $size = (field.outerHeight() > 28) ? 24 : 16;
|
||||
let $offset = Math.floor((field.outerHeight() - $size) / 3);
|
||||
$offset = ($offset < 0) ? 0 : $offset;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"manifest_version": 2,
|
||||
"name": "keepassxc-browser",
|
||||
"version": "0.3.0",
|
||||
"version": "0.3.1",
|
||||
"description": "KeePassXC integration for modern web browsers",
|
||||
"author": "Sami Vänttinen",
|
||||
"icons": {
|
||||
|
|
|
|||
|
|
@ -253,7 +253,7 @@ options.initSpecifiedCredentialFields = function() {
|
|||
|
||||
options.initAbout = function() {
|
||||
$('#tab-about em.versionCIP').text(browser.runtime.getManifest().version);
|
||||
if (isFirefox) {
|
||||
if (isFirefox()) {
|
||||
$('#chrome-only').remove();
|
||||
}
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in a new issue