aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatar Sampath Kumar Krishnan <sampathBlam@users.noreply.github.com>2020-04-24 22:20:54 +0530
committerLibravatar GitHub <noreply@github.com>2020-04-24 16:50:54 +0000
commit35cc75d177064c8154b9d56c549a6335963efe74 (patch)
tree1fe0a9b476e70bd1baf26dc2564dd5c39324922e /src
parentRelease 5.5.0-gm.2 (#625) (diff)
downloadferdium-app-35cc75d177064c8154b9d56c549a6335963efe74.tar.gz
ferdium-app-35cc75d177064c8154b9d56c549a6335963efe74.tar.zst
ferdium-app-35cc75d177064c8154b9d56c549a6335963efe74.zip
Add modifyRequestHeaders, enable properly setting headers for services
Co-Authored-By: Mahadevan Sreenivasan <mahadevan_sv@yahoo.com>
Diffstat (limited to 'src')
-rw-r--r--src/index.js18
-rw-r--r--src/models/Service.js15
2 files changed, 33 insertions, 0 deletions
diff --git a/src/index.js b/src/index.js
index e5f678759..027884826 100644
--- a/src/index.js
+++ b/src/index.js
@@ -3,6 +3,7 @@ import {
3 BrowserWindow, 3 BrowserWindow,
4 shell, 4 shell,
5 ipcMain, 5 ipcMain,
6 session,
6} from 'electron'; 7} from 'electron';
7import isDevMode from 'electron-is-dev'; 8import isDevMode from 'electron-is-dev';
8import fs from 'fs-extra'; 9import fs from 'fs-extra';
@@ -394,6 +395,23 @@ ipcMain.on('feature-basic-auth-credentials', (e, { user, password }) => {
394 authCallback = noop; 395 authCallback = noop;
395}); 396});
396 397
398
399ipcMain.on('modifyRequestHeaders', (e, { modifiedRequestHeaders, serviceId }) => {
400 debug('Received modifyRequestHeaders', modifiedRequestHeaders, serviceId);
401 modifiedRequestHeaders.forEach((headerFilterSet) => {
402 const { headers, requestFilters } = headerFilterSet;
403 session.fromPartition(`persist:service-${serviceId}`).webRequest.onBeforeSendHeaders(requestFilters, (details, callback) => {
404 for (const key in headers) {
405 if (Object.prototype.hasOwnProperty.call(headers, key)) {
406 const value = headers[key];
407 details.requestHeaders[key] = value;
408 }
409 }
410 callback({ requestHeaders: details.requestHeaders });
411 });
412 });
413});
414
397ipcMain.on('feature-basic-auth-cancel', () => { 415ipcMain.on('feature-basic-auth-cancel', () => {
398 debug('Cancel basic auth'); 416 debug('Cancel basic auth');
399 417
diff --git a/src/models/Service.js b/src/models/Service.js
index 2f2b4572d..5b3ad7bd8 100644
--- a/src/models/Service.js
+++ b/src/models/Service.js
@@ -1,4 +1,5 @@
1import { autorun, computed, observable } from 'mobx'; 1import { autorun, computed, observable } from 'mobx';
2import { ipcRenderer } from 'electron';
2import normalizeUrl from 'normalize-url'; 3import normalizeUrl from 'normalize-url';
3import path from 'path'; 4import path from 'path';
4 5
@@ -224,9 +225,23 @@ export default class Service {
224 return ua; 225 return ua;
225 } 226 }
226 227
228
227 initializeWebViewEvents({ handleIPCMessage, openWindow, stores }) { 229 initializeWebViewEvents({ handleIPCMessage, openWindow, stores }) {
228 const webContents = this.webview.getWebContents(); 230 const webContents = this.webview.getWebContents();
229 231
232 // If the recipe has implemented modifyRequestHeaders,
233 // Send those headers to ipcMain so that it can be set in session
234 if (typeof this.recipe.modifyRequestHeaders === 'function') {
235 const modifiedRequestHeaders = this.recipe.modifyRequestHeaders();
236 debug(this.name, 'modifiedRequestHeaders', modifiedRequestHeaders);
237 ipcRenderer.send('modifyRequestHeaders', {
238 modifiedRequestHeaders,
239 serviceId: this.id,
240 });
241 } else {
242 debug(this.name, 'modifyRequestHeaders is not defined in the recipe');
243 }
244
230 const handleUserAgent = (url, forwardingHack = false) => { 245 const handleUserAgent = (url, forwardingHack = false) => {
231 if (url.startsWith('https://accounts.google.com')) { 246 if (url.startsWith('https://accounts.google.com')) {
232 if (!this.chromelessUserAgent) { 247 if (!this.chromelessUserAgent) {