diff options
author | varjolintu <sami.vanttinen@protonmail.com> | 2020-04-27 10:29:18 +0300 |
---|---|---|
committer | varjolintu <sami.vanttinen@protonmail.com> | 2020-12-16 17:39:17 +0300 |
commit | 05696e6692c792e6e670eead025d6c88e1a9bdec (patch) | |
tree | 74fbdb49504442e4a16300b8404639b6f5ab1e1c | |
parent | 9ea7a26677ce1208a8867b223dc7e2d32f32ad4c (diff) |
Proxy reconnectproxy_reconnect_new
-rw-r--r-- | keepassxc-browser/background/init.js | 6 | ||||
-rwxr-xr-x | keepassxc-browser/background/keepass.js | 26 |
2 files changed, 25 insertions, 7 deletions
diff --git a/keepassxc-browser/background/init.js b/keepassxc-browser/background/init.js index 0e7840e..c5320ef 100644 --- a/keepassxc-browser/background/init.js +++ b/keepassxc-browser/background/init.js @@ -7,9 +7,9 @@ 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(); + keepass.connectToNative(); + //await keepass.reconnect(null, 5000); // 5 second timeout for the first connect + //await keepass.enableAutomaticReconnect(); } catch (e) { console.log('init.js failed'); } diff --git a/keepassxc-browser/background/keepass.js b/keepassxc-browser/background/keepass.js index a234e31..656e616 100755 --- a/keepassxc-browser/background/keepass.js +++ b/keepassxc-browser/background/keepass.js @@ -20,6 +20,7 @@ keepass.databaseHash = ''; keepass.previousDatabaseHash = ''; keepass.keyId = 'keepassxc-browser-cryptokey-name'; keepass.keyBody = 'keepassxc-browser-key'; +keepass.connectionTimeout = 5000; // Milliseconds keepass.messageTimeout = 500; // Milliseconds keepass.nonce = nacl.util.encodeBase64(nacl.randomBytes(keepass.keySize)); keepass.reconnectLoop = null; @@ -1007,16 +1008,23 @@ keepass.connectToNative = function() { }; keepass.onNativeMessage = function(response) { - //console.log('Received message: ' + JSON.stringify(response)); + console.log('Received message: ' + JSON.stringify(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, keepass.connectionTimeout); + }, 1000); + } else if (response.action === 'disconnected') { + if (keepass.isConnected) { + disconnect(); + } } }; -function onDisconnected() { - keepass.nativePort = null; +function disconnect() { keepass.isConnected = false; keepass.isDatabaseClosed = true; keepass.isKeePassXCAvailable = false; @@ -1026,6 +1034,12 @@ function onDisconnected() { page.clearCredentials(page.currentTabId, true); keepass.updatePopup('cross'); keepass.updateDatabaseHashToContent(); +} + +function onDisconnected() { + console.log('onDisconnected'); + keepass.nativePort = null; + disconnect(); console.log('Failed to connect: ' + (browser.runtime.lastError === null ? 'Unknown error' : browser.runtime.lastError.message)); } @@ -1210,14 +1224,18 @@ keepass.disableAutomaticReconnect = function() { }; keepass.reconnect = async function(tab, connectionTimeout) { - keepass.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; } |