Skip to content

Commit fc88763

Browse files
committed
chore: clean-up headers override, allow to filter out headers
1 parent bc5fd2c commit fc88763

File tree

1 file changed

+25
-25
lines changed

1 file changed

+25
-25
lines changed

packages/compass-web/scripts/electron-proxy.js

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -368,17 +368,17 @@ const prepareSocket = function (socket, head) {
368368

369369
/**
370370
* @param {http.IncomingMessage} res
371-
* @param {Record<string, string>} headerOverride
371+
* @param {Record<string, string | false>} headerOverride
372372
*/
373-
const createHeader = function (res, headerOverride = {}) {
373+
const createHeaderStringFromResponse = function (res, headerOverride = {}) {
374374
let header = `HTTP/${res.httpVersion} ${res.statusCode} ${res.statusMessage}\r\n`;
375375
for (let i = 0; i < res.rawHeaders.length; i += 2) {
376-
const k = res.rawHeaders[i];
377-
let v = res.rawHeaders[i + 1];
378-
const override = headerOverride[k.toLowerCase()];
379-
if (override) {
380-
v = override;
381-
delete headerOverride[k.toLowerCase()];
376+
const k = res.rawHeaders[i].toLowerCase();
377+
const override = headerOverride[k];
378+
const v = override ?? res.rawHeaders[i + 1];
379+
delete headerOverride[k];
380+
if (!v) {
381+
continue;
382382
}
383383
header += `${k}: ${v}\r\n`;
384384
}
@@ -395,21 +395,15 @@ const createHeader = function (res, headerOverride = {}) {
395395
*/
396396
proxyServer.on('upgrade', async (req, socket, head) => {
397397
const isCCS = Boolean(req.url?.startsWith('/ccs'));
398-
let websocketTarget;
398+
const websocketTarget = isCCS
399+
? `https://cluster-connection.${CLOUD_HOST}${
400+
req.url?.replace('/ccs', '') ?? ''
401+
}`
402+
: `http://localhost:${WEBSOCKET_PROXY_PORT}`;
403+
const createRequest = websocketTarget.startsWith('https')
404+
? https.request
405+
: http.request;
399406

400-
if (isCCS) {
401-
websocketTarget = `wss://cluster-connection.${CLOUD_HOST}${
402-
req.url?.replace('/ccs', '') ?? ''
403-
}`;
404-
} else {
405-
websocketTarget = `ws://localhost:${WEBSOCKET_PROXY_PORT}`;
406-
}
407-
408-
const targetWebsocketURL = new URL(websocketTarget);
409-
const isSecure = targetWebsocketURL.protocol === 'wss:';
410-
const createRequest = isSecure ? https.request : http.request;
411-
412-
targetWebsocketURL.protocol = isSecure ? 'https:' : 'http:';
413407
prepareSocket(socket, head);
414408

415409
let extraHeaders = {};
@@ -420,7 +414,7 @@ proxyServer.on('upgrade', async (req, socket, head) => {
420414
);
421415
}
422416

423-
const proxyReq = createRequest(targetWebsocketURL.toString(), {
417+
const proxyReq = createRequest(websocketTarget, {
424418
method: req.method,
425419
headers: { ...req.headers, ...extraHeaders },
426420
});
@@ -433,7 +427,7 @@ proxyServer.on('upgrade', async (req, socket, head) => {
433427
proxyReq.on('response', (proxyRes) => {
434428
// We only get response back if upgrade didn't happen, so stream back
435429
// whatever server responded (it's probably an error)
436-
socket.write(createHeader(proxyRes));
430+
socket.write(createHeaderStringFromResponse(proxyRes));
437431
proxyRes.pipe(socket);
438432
});
439433

@@ -444,7 +438,13 @@ proxyServer.on('upgrade', async (req, socket, head) => {
444438
socket.end();
445439
});
446440
prepareSocket(proxySocket, proxyHead);
447-
socket.write(createHeader(proxyRes));
441+
socket.write(
442+
createHeaderStringFromResponse(proxyRes, {
443+
'access-control-allow-credentials': false,
444+
'access-control-allow-origin': false,
445+
'set-cookie': false,
446+
})
447+
);
448448
proxySocket.pipe(socket).pipe(proxySocket);
449449
});
450450

0 commit comments

Comments
 (0)