diff options
author | Stefan Malzner <stefan@adlk.io> | 2019-10-02 21:38:26 +0200 |
---|---|---|
committer | Stefan Malzner <stefan@adlk.io> | 2019-10-02 21:38:26 +0200 |
commit | e2126a60ad287e76a24c44242b80699e49e8fb0e (patch) | |
tree | e58b8d367ff7f218ba1a3bd2ae59e52e16ac778c | |
parent | Revert "feat(App): Update to electron 6.0.11" (diff) | |
download | ferdium-app-e2126a60ad287e76a24c44242b80699e49e8fb0e.tar.gz ferdium-app-e2126a60ad287e76a24c44242b80699e49e8fb0e.tar.zst ferdium-app-e2126a60ad287e76a24c44242b80699e49e8fb0e.zip |
fix(Service Proxies): Fix proxy setting rehydration
-rw-r--r-- | src/index.js | 17 | ||||
-rw-r--r-- | src/models/Service.js | 41 | ||||
-rw-r--r-- | 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) => { | |||
331 | debug('browser login event', authInfo); | 331 | debug('browser login event', authInfo); |
332 | event.preventDefault(); | 332 | event.preventDefault(); |
333 | 333 | ||
334 | if (authInfo.isProxy && authInfo.scheme === 'basic') { | 334 | if (!authInfo.isProxy && authInfo.scheme === 'basic') { |
335 | debug('Sending service echo ping'); | ||
336 | webContents.send('get-service-id'); | ||
337 | |||
338 | ipcMain.once('service-id', (e, id) => { | ||
339 | debug('Received service id', id); | ||
340 | |||
341 | const ps = proxySettings.get(id); | ||
342 | if (ps) { | ||
343 | debug('Sending proxy auth callback for service', id); | ||
344 | callback(ps.user, ps.password); | ||
345 | } else { | ||
346 | debug('No proxy auth config found for', id); | ||
347 | } | ||
348 | }); | ||
349 | } else if (authInfo.scheme === 'basic') { | ||
350 | debug('basic auth handler', authInfo); | 335 | debug('basic auth handler', authInfo); |
351 | basicAuthHandler(mainWindow, authInfo); | 336 | basicAuthHandler(mainWindow, authInfo); |
352 | } | 337 | } |
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 { | |||
188 | return userAgent; | 188 | return userAgent; |
189 | } | 189 | } |
190 | 190 | ||
191 | initializeWebViewEvents({ handleIPCMessage, openWindow }) { | 191 | initializeWebViewEvents({ handleIPCMessage, openWindow, stores }) { |
192 | const webContents = this.webview.getWebContents(); | ||
193 | |||
192 | this.webview.addEventListener('ipc-message', e => handleIPCMessage({ | 194 | this.webview.addEventListener('ipc-message', e => handleIPCMessage({ |
193 | serviceId: this.id, | 195 | serviceId: this.id, |
194 | channel: e.channel, | 196 | channel: e.channel, |
195 | args: e.args, | 197 | args: e.args, |
196 | })); | 198 | })); |
197 | 199 | ||
198 | this.webview.addEventListener('new-window', (event, url, frameName, options) => openWindow({ | 200 | this.webview.addEventListener('new-window', (event, url, frameName, options) => { |
199 | event, | 201 | console.log('open window', event, url, frameName, options); |
200 | url, | 202 | openWindow({ |
201 | frameName, | 203 | event, |
202 | options, | 204 | url, |
203 | })); | 205 | frameName, |
206 | options, | ||
207 | }); | ||
208 | }); | ||
204 | 209 | ||
205 | this.webview.addEventListener('did-start-loading', (event) => { | 210 | this.webview.addEventListener('did-start-loading', (event) => { |
206 | debug('Did start load', this.name, event); | 211 | debug('Did start load', this.name, event); |
@@ -234,6 +239,28 @@ export default class Service { | |||
234 | debug('Service crashed', this.name); | 239 | debug('Service crashed', this.name); |
235 | this.hasCrashed = true; | 240 | this.hasCrashed = true; |
236 | }); | 241 | }); |
242 | |||
243 | webContents.on('login', (event, request, authInfo, callback) => { | ||
244 | // const authCallback = callback; | ||
245 | debug('browser login event', authInfo); | ||
246 | event.preventDefault(); | ||
247 | |||
248 | if (authInfo.isProxy && authInfo.scheme === 'basic') { | ||
249 | debug('Sending service echo ping'); | ||
250 | webContents.send('get-service-id'); | ||
251 | |||
252 | debug('Received service id', this.id); | ||
253 | |||
254 | const ps = stores.settings.proxy[this.id]; | ||
255 | |||
256 | if (ps) { | ||
257 | debug('Sending proxy auth callback for service', this.id); | ||
258 | callback(ps.user, ps.password); | ||
259 | } else { | ||
260 | debug('No proxy auth config found for', this.id); | ||
261 | } | ||
262 | } | ||
263 | }); | ||
237 | } | 264 | } |
238 | 265 | ||
239 | initializeWebViewListener() { | 266 | 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 { | |||
345 | service.initializeWebViewEvents({ | 345 | service.initializeWebViewEvents({ |
346 | handleIPCMessage: this.actions.service.handleIPCMessage, | 346 | handleIPCMessage: this.actions.service.handleIPCMessage, |
347 | openWindow: this.actions.service.openWindow, | 347 | openWindow: this.actions.service.openWindow, |
348 | stores: this.stores, | ||
348 | }); | 349 | }); |
349 | service.initializeWebViewListener(); | 350 | service.initializeWebViewListener(); |
350 | } | 351 | } |