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/models/Service.js | 41 ++++++++++++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 7 deletions(-) (limited to 'src/models/Service.js') 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() { -- cgit v1.2.3-70-g09d2