From e2126a60ad287e76a24c44242b80699e49e8fb0e Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Wed, 2 Oct 2019 21:38:26 +0200 Subject: fix(Service Proxies): Fix proxy setting rehydration --- src/index.js | 17 +---------------- src/models/Service.js | 41 ++++++++++++++++++++++++++++++++++------- src/stores/ServicesStore.js | 1 + 3 files changed, 36 insertions(+), 23 deletions(-) diff --git a/src/index.js b/src/index.js index d9d51fd5b..7de7a5e1c 100644 --- a/src/index.js +++ b/src/index.js @@ -331,22 +331,7 @@ app.on('login', (event, webContents, request, authInfo, callback) => { debug('browser login event', authInfo); event.preventDefault(); - if (authInfo.isProxy && authInfo.scheme === 'basic') { - debug('Sending service echo ping'); - webContents.send('get-service-id'); - - ipcMain.once('service-id', (e, id) => { - debug('Received service id', id); - - const ps = proxySettings.get(id); - if (ps) { - debug('Sending proxy auth callback for service', id); - callback(ps.user, ps.password); - } else { - debug('No proxy auth config found for', id); - } - }); - } else if (authInfo.scheme === 'basic') { + if (!authInfo.isProxy && authInfo.scheme === 'basic') { debug('basic auth handler', authInfo); basicAuthHandler(mainWindow, authInfo); } diff --git a/src/models/Service.js b/src/models/Service.js index 023103048..e45c39564 100644 --- a/src/models/Service.js +++ b/src/models/Service.js @@ -188,19 +188,24 @@ export default class Service { return userAgent; } - initializeWebViewEvents({ handleIPCMessage, openWindow }) { + initializeWebViewEvents({ handleIPCMessage, openWindow, stores }) { + const webContents = this.webview.getWebContents(); + this.webview.addEventListener('ipc-message', e => handleIPCMessage({ serviceId: this.id, channel: e.channel, args: e.args, })); - this.webview.addEventListener('new-window', (event, url, frameName, options) => openWindow({ - event, - url, - frameName, - options, - })); + this.webview.addEventListener('new-window', (event, url, frameName, options) => { + console.log('open window', event, url, frameName, options); + openWindow({ + event, + url, + frameName, + options, + }); + }); this.webview.addEventListener('did-start-loading', (event) => { debug('Did start load', this.name, event); @@ -234,6 +239,28 @@ export default class Service { debug('Service crashed', this.name); this.hasCrashed = true; }); + + webContents.on('login', (event, request, authInfo, callback) => { + // const authCallback = callback; + debug('browser login event', authInfo); + event.preventDefault(); + + if (authInfo.isProxy && authInfo.scheme === 'basic') { + debug('Sending service echo ping'); + webContents.send('get-service-id'); + + debug('Received service id', this.id); + + const ps = stores.settings.proxy[this.id]; + + if (ps) { + debug('Sending proxy auth callback for service', this.id); + callback(ps.user, ps.password); + } else { + debug('No proxy auth config found for', this.id); + } + } + }); } initializeWebViewListener() { diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js index d1fd2be3d..08befe4eb 100644 --- a/src/stores/ServicesStore.js +++ b/src/stores/ServicesStore.js @@ -345,6 +345,7 @@ export default class ServicesStore extends Store { service.initializeWebViewEvents({ handleIPCMessage: this.actions.service.handleIPCMessage, openWindow: this.actions.service.openWindow, + stores: this.stores, }); service.initializeWebViewListener(); } -- cgit v1.2.3-54-g00ecf