mirror of
https://github.com/keepassxreboot/keepassxc-browser.git
synced 2026-03-11 08:54:43 +00:00
Merge pull request #354 from keepassxreboot/reconnect_fix
Fix reconnecting the extension with older KeePassXC releases
This commit is contained in:
commit
7e058d4357
4 changed files with 24 additions and 18 deletions
|
|
@ -191,12 +191,12 @@ kpxcEvent.onGetConnectedDatabase = function(callback, tab) {
|
|||
};
|
||||
|
||||
kpxcEvent.onGetKeePassXCVersions = function(callback, tab) {
|
||||
if(keepass.currentKeePassXC.version == 0) {
|
||||
if (keepass.currentKeePassXC == '') {
|
||||
keepass.getDatabaseHash((res) => {
|
||||
callback({"current": keepass.currentKeePassXC.version, "latest": keepass.currentKeePassXC.version});
|
||||
callback({'current': keepass.currentKeePassXC, 'latest': keepass.latestKeePassXC.version});
|
||||
}, tab);
|
||||
} else {
|
||||
callback({"current": keepass.currentKeePassXC.version, "latest": keepass.currentKeePassXC.version});
|
||||
callback({'current': keepass.currentKeePassXC, 'latest': keepass.latestKeePassXC.version});
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
'use strict';
|
||||
|
||||
const keepass = {};
|
||||
|
||||
keepass.associated = {'value': false, 'hash': null};
|
||||
keepass.keyPair = {publicKey: null, secretKey: null};
|
||||
keepass.serverPublicKey = '';
|
||||
|
|
@ -10,8 +9,8 @@ keepass.isConnected = false;
|
|||
keepass.isDatabaseClosed = false;
|
||||
keepass.isKeePassXCAvailable = false;
|
||||
keepass.isEncryptionKeyUnrecognized = false;
|
||||
keepass.currentKeePassXC = {'version': 0, 'versionParsed': 0};
|
||||
keepass.requiredKeePassXC = 230;
|
||||
keepass.currentKeePassXC = '';
|
||||
keepass.requiredKeePassXC = '2.3.0';
|
||||
keepass.nativeHostName = 'org.keepassxc.keepassxc_browser';
|
||||
keepass.nativePort = null;
|
||||
keepass.keySize = 24;
|
||||
|
|
@ -80,7 +79,7 @@ const kpErrors = {
|
|||
};
|
||||
|
||||
browser.storage.local.get({
|
||||
'latestKeePassXC': {'version': 0, 'versionParsed': 0, 'lastChecked': null},
|
||||
'latestKeePassXC': {'version': '', 'lastChecked': null},
|
||||
'keyRing': {}}).then((item) => {
|
||||
keepass.latestKeePassXC = item.latestKeePassXC;
|
||||
keepass.keyRing = item.keyRing;
|
||||
|
|
@ -305,7 +304,7 @@ keepass.generatePassword = function(callback, tab, forceCallback) {
|
|||
return;
|
||||
}
|
||||
|
||||
if (keepass.currentKeePassXC.versionParsed < keepass.requiredKeePassXC) {
|
||||
if (!keepass.compareVersion(keepass.requiredKeePassXC, keepass.currentKeePassXC)) {
|
||||
callback([]);
|
||||
return;
|
||||
}
|
||||
|
|
@ -409,7 +408,9 @@ keepass.associate = function(callback, tab) {
|
|||
keepass.handleError(tab, kpErrors.ASSOCIATION_FAILED);
|
||||
}
|
||||
else {
|
||||
keepass.setCryptoKey(id, idKey); // Save the new identification public key as id key for the database
|
||||
// Use public key as identification key with older KeePassXC releases
|
||||
const savedKey = keepass.compareVersion('2.3.4', keepass.currentKeePassXC) ? idKey : key;
|
||||
keepass.setCryptoKey(id, savedKey); // Save the new identification public key as id key for the database
|
||||
keepass.associated.value = true;
|
||||
keepass.associated.hash = parsed.hash || 0;
|
||||
}
|
||||
|
|
@ -781,10 +782,7 @@ keepass.deleteKey = function(hash) {
|
|||
|
||||
keepass.setcurrentKeePassXCVersion = function(version) {
|
||||
if (version) {
|
||||
keepass.currentKeePassXC = {
|
||||
version: version,
|
||||
versionParsed: Number(version.replace(/\./g, ''))
|
||||
};
|
||||
keepass.currentKeePassXC = version;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -797,7 +795,7 @@ keepass.keePassXCUpdateAvailable = function() {
|
|||
}
|
||||
}
|
||||
|
||||
return (keepass.currentKeePassXC.versionParsed > 0 && keepass.currentKeePassXC.versionParsed < keepass.latestKeePassXC.versionParsed);
|
||||
return keepass.compareVersion(keepass.currentKeePassXC, keepass.latestKeePassXC.version);
|
||||
};
|
||||
|
||||
keepass.checkForNewKeePassXCVersion = function() {
|
||||
|
|
@ -810,7 +808,6 @@ keepass.checkForNewKeePassXCVersion = function() {
|
|||
if (json.tag_name) {
|
||||
version = json.tag_name;
|
||||
keepass.latestKeePassXC.version = version;
|
||||
keepass.latestKeePassXC.versionParsed = Number(version.replace(/\./g, ''));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1072,3 +1069,13 @@ keepass.updateDatabase = function() {
|
|||
});
|
||||
}, null);
|
||||
};
|
||||
|
||||
keepass.compareVersion = function(minimum, current) {
|
||||
if (!minimum || !current) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const min = minimum.split('.', 3).map(s => s.padStart(4, '0')).join('.');
|
||||
const cur = current.split('.', 3).map(s => s.padStart(4, '0')).join('.');
|
||||
return min <= cur;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -158,10 +158,10 @@ options.initGeneralSettings = function() {
|
|||
};
|
||||
|
||||
options.showKeePassXCVersions = function(response) {
|
||||
if (response.current <= 0) {
|
||||
if (response.current === '') {
|
||||
response.current = 'unknown';
|
||||
}
|
||||
if (response.latest <= 0) {
|
||||
if (response.latest === '') {
|
||||
response.latest = 'unknown';
|
||||
}
|
||||
$('#tab-general-settings .kphVersion:first em.yourVersion:first').text(response.current);
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ function status_response(r) {
|
|||
$('#configured-and-associated').hide();
|
||||
$('#configured-not-associated').hide();
|
||||
$('#lock-database-button').hide();
|
||||
$('#update-available').hide();
|
||||
|
||||
if (!r.keePassXCAvailable) {
|
||||
$('#error-message').html(r.error);
|
||||
|
|
|
|||
Loading…
Reference in a new issue