From 680c224598fbfca8b0d034a3670491bbe3ae3f5b Mon Sep 17 00:00:00 2001 From: varjolintu Date: Mon, 27 Apr 2020 10:29:18 +0300 Subject: [PATCH] Expect permanent proxy --- keepassxc-browser/background/client.js | 20 +++++++++++++++++--- keepassxc-browser/background/init.js | 1 - keepassxc-browser/background/keepass.js | 16 ++++++---------- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/keepassxc-browser/background/client.js b/keepassxc-browser/background/client.js index bb7f194..ce74e38 100644 --- a/keepassxc-browser/background/client.js +++ b/keepassxc-browser/background/client.js @@ -3,6 +3,7 @@ const keepassClient = {}; keepassClient.keySize = 24; keepassClient.messageTimeout = 500; // Milliseconds +keepassClient.connectionTimeout = 5000; // Milliseconds keepassClient.nativeHostName = 'org.keepassxc.keepassxc_browser'; keepassClient.nativePort = null; @@ -322,8 +323,7 @@ keepassClient.nativeConnect = function() { return keepassClient.nativePort; }; -function onDisconnected() { - keepassClient.nativePort = null; +function disconnect() { keepass.isConnected = false; keepass.isDatabaseClosed = true; keepass.isKeePassXCAvailable = false; @@ -334,12 +334,26 @@ function onDisconnected() { page.clearAllLogins(); keepass.updatePopup('cross'); keepass.updateDatabaseHashToContent(); - logError(`Failed to connect: ${(browser.runtime.lastError === null ? 'Unknown error' : browser.runtime.lastError.message)}`); +} + +function onDisconnected() { + console.log('onDisconnected'); + keepass.nativePort = null; + disconnect(); + console.log('Failed to connect: ' + (browser.runtime.lastError === null ? 'Unknown error' : browser.runtime.lastError.message)); } keepassClient.onNativeMessage = function(response) { // Handle database lock/unlock status if (response.action === kpActions.DATABASE_LOCKED || response.action === kpActions.DATABASE_UNLOCKED) { keepass.updateDatabase(); + } else if (response.action === 'reconnected') { + setTimeout(function() { + keepass.reconnect(null, keepassClient.connectionTimeout); + }, 1000); + } else if (response.action === 'disconnected') { + if (keepass.isConnected) { + disconnect(); + } } }; diff --git a/keepassxc-browser/background/init.js b/keepassxc-browser/background/init.js index 6d84218..1b204d9 100644 --- a/keepassxc-browser/background/init.js +++ b/keepassxc-browser/background/init.js @@ -7,7 +7,6 @@ await page.initSitePreferences(); await page.initOpenedTabs(); await httpAuth.init(); - await keepass.reconnect(null, 5000); // 5 second timeout for the first connect await keepass.enableAutomaticReconnect(); await keepass.updateDatabase(); } catch (e) { diff --git a/keepassxc-browser/background/keepass.js b/keepassxc-browser/background/keepass.js index 9e70670..cc9eb68 100755 --- a/keepassxc-browser/background/keepass.js +++ b/keepassxc-browser/background/keepass.js @@ -729,18 +729,10 @@ keepass.setCryptoKey = function(id, key) { //-------------------------------------------------------------------------- keepass.enableAutomaticReconnect = function() { - // Disable for Windows if KeePassXC is older than 2.3.4 - if (!page.settings.autoReconnect - || (navigator.platform.toLowerCase().includes('win') - && keepass.currentKeePassXC - && !keepass.compareVersion('2.3.4', keepass.currentKeePassXC))) { - return; - } - if (keepass.reconnectLoop === null) { keepass.reconnectLoop = setInterval(async () => { if (!keepass.isKeePassXCAvailable) { - keepass.reconnect(); + keepassClient.connectToNative(); } }, 1000); } @@ -752,14 +744,18 @@ keepass.disableAutomaticReconnect = function() { }; keepass.reconnect = async function(tab, connectionTimeout) { - keepassClient.connectToNative(); + console.log('reconnect()'); + keepass.isConnected = true; keepass.generateNewKeyPair(); + const keyChangeResult = await keepass.changePublicKeys(tab, true, connectionTimeout).catch((e) => { + console.log('Error changing keys'); return false; }); // Change public keys timeout if (!keyChangeResult) { + console.log('Key change timeout'); return false; }