snyk-broker 5.22.0 → 5.22.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -21,7 +21,7 @@ const validateConnection = async (config) => {
21
21
  headers['Authorization'] = `Basic ${Buffer.from(`${auth.username}:${auth.password}`).toString('base64')}`;
22
22
  break;
23
23
  case 'header':
24
- headers['Authorization'] = `${auth.value}`;
24
+ headers[auth.name ?? 'Authorization'] = `${auth.value}`;
25
25
  break;
26
26
  default: {
27
27
  const parsed = (0, url_1.parse)(url);
@@ -1 +1 @@
1
- {"version":3,"file":"connectionValidation.js","sourceRoot":"","sources":["../../../../../lib/hybrid-sdk/client/utils/connectionValidation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connectionValidation.js","sourceRoot":"","sources":["../../../../../lib/hybrid-sdk/client/utils/connectionValidation.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BrokerAuthError = exports.validateBrokerClientCredentials = void 0;
3
+ exports.BrokerAuthError = exports.validateBrokerClientCredentials = exports.getHandshakeIdentityFromHeaders = void 0;
4
4
  const config_1 = require("../../common/config/config");
5
5
  const token_1 = require("../../common/utils/token");
6
6
  const logger_1 = require("../../../logs/logger");
@@ -41,12 +41,24 @@ function getHeaderOptions(authHeader) {
41
41
  }
42
42
  return requestHeaders;
43
43
  }
44
+ /**
45
+ * Reads the handshake identity from the websocket upgrade headers. This is the
46
+ * only identity available before the client sends `identify`, so it is also the
47
+ * only way to correlate a socket back to the pool entry the authorize hook
48
+ * registered for it.
49
+ */
50
+ const getHandshakeIdentityFromHeaders = (headers) => ({
51
+ brokerClientId: getHeader(headers, BROKER_CLIENT_ID_HEADER),
52
+ role: getHeader(headers, BROKER_CLIENT_ROLE_HEADER) ?? '',
53
+ handshakeId: getHeader(headers, SNYK_REQUEST_ID_HEADER),
54
+ });
55
+ exports.getHandshakeIdentityFromHeaders = getHandshakeIdentityFromHeaders;
44
56
  const validateBrokerClientCredentials = async (headers, brokerConnectionIdentifier, isInternalJWT = false, brokerClientId) => {
45
57
  const authHeader = getHeader(headers, AUTHORIZATION_HEADER);
46
- brokerClientId =
47
- brokerClientId ?? getHeader(headers, BROKER_CLIENT_ID_HEADER);
48
- const role = getHeader(headers, BROKER_CLIENT_ROLE_HEADER) ?? '';
49
- const requestId = getHeader(headers, SNYK_REQUEST_ID_HEADER) ?? '';
58
+ const identity = (0, exports.getHandshakeIdentityFromHeaders)(headers);
59
+ brokerClientId = brokerClientId ?? identity.brokerClientId;
60
+ const role = identity.role;
61
+ const requestId = identity.handshakeId ?? '';
50
62
  const maskedToken = (0, token_1.maskToken)(brokerConnectionIdentifier);
51
63
  logger_1.log.debug({ maskedToken, brokerClientId, requestId }, `Validating auth for connection ${brokerConnectionIdentifier} client Id ${brokerClientId}, role ${role}.`);
52
64
  if (!authHeader ||
@@ -1 +1 @@
1
- {"version":3,"file":"authHelpers.js","sourceRoot":"","sources":["../../../../../lib/hybrid-sdk/server/auth/authHelpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authHelpers.js","sourceRoot":"","sources":["../../../../../lib/hybrid-sdk/server/auth/authHelpers.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ const authRefreshHandler = async (req, res) => {
17
17
  const brokerClientId = body.data.attributes.broker_client_id;
18
18
  const connection = (0, socket_1.getSocketConnectionByIdentifier)(identifier);
19
19
  currentClient = connection
20
- ? connection.find((x) => x.metadata.clientId === brokerClientId && x.role === role)
20
+ ? (0, socket_1.findClientToRefreshCreds)(connection, brokerClientId, role)
21
21
  : null;
22
22
  if (brokerAppClientId === undefined || !connection || !currentClient) {
23
23
  logger_1.log.debug({ identifier, brokerClientId, role }, 'Missing required authorization header.');
@@ -25,14 +25,8 @@ const authRefreshHandler = async (req, res) => {
25
25
  }
26
26
  // deepcode ignore Ssrf: request URL comes from the filter response, with the origin url being injected by the filtered version
27
27
  await (0, authHelpers_1.validateBrokerClientCredentials)(req.headers, identifier, true, brokerClientId);
28
- // Refresh client validation time
29
- const nowDate = new Date().toISOString();
30
- currentClient.credsValidationTime = nowDate;
31
- const currentClientIndex = connection.findIndex((x) => x.brokerClientId === brokerClientId && x.role === role);
32
- if (currentClientIndex === -1) {
33
- throw new Error('Unable to find client connection.');
34
- }
35
- connection[currentClientIndex] = currentClient;
28
+ // Update the live pool entry directly so a pending reconnect is not replaced.
29
+ currentClient.credsValidationTime = new Date().toISOString();
36
30
  return res.status(201).send('OK');
37
31
  }
38
32
  catch (err) {
@@ -40,10 +34,8 @@ const authRefreshHandler = async (req, res) => {
40
34
  if (err instanceof authHelpers_1.BrokerAuthError) {
41
35
  return res.status(401).type('txt').send(err.message);
42
36
  }
43
- return res
44
- .status(500)
45
- .type('txt')
46
- .send(`Unable to complete auth refresh: ${err}.`);
37
+ logger_1.log.error({ err }, 'Unable to complete auth refresh.');
38
+ return res.status(500).type('txt').send('Unable to complete auth refresh.');
47
39
  }
48
40
  };
49
41
  exports.authRefreshHandler = authRefreshHandler;
@@ -1 +1 @@
1
- {"version":3,"file":"authHandlers.js","sourceRoot":"","sources":["../../../../../lib/hybrid-sdk/server/routesHandlers/authHandlers.ts"],"names":[],"mappings":";;;AACA,qDAG6B;AAC7B,iDAAqD;AACrD,sCAA+E;AAC/E,oDAAqD;AAY9C,MAAM,kBAAkB,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IACtE,IAAI,aAA8C,CAAC;IACnD,IAAI;QACF,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC1C,MAAM,iBAAiB,GACrB,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,CAAC;YACjE,eAAe,CAAC;QAClB,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;QACzC,YAAM,CAAC,KAAK,CACV,EAAE,WAAW,EAAE,IAAA,iBAAS,EAAC,UAAU,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAC/D,cAAc,CACf,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAgC,CAAC;QAC5E,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;QAE7D,MAAM,UAAU,GAAG,IAAA,wCAA+B,EAAC,UAAU,CAAC,CAAC;QAC/D,aAAa,GAAG,UAAU;YACxB,CAAC,CAAC,UAAU,CAAC,IAAI,CACb,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,KAAK,cAAc,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CACjE;YACH,CAAC,CAAC,IAAI,CAAC;QAET,IAAI,iBAAiB,KAAK,SAAS,IAAI,CAAC,UAAU,IAAI,CAAC,aAAa,EAAE;YACpE,YAAM,CAAC,KAAK,CACV,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,EACpC,wCAAwC,CACzC,CAAC;YACF,MAAM,IAAI,6BAAe,CAAC,wCAAwC,CAAC,CAAC;SACrE;QAED,+HAA+H;QAC/H,MAAM,IAAA,6CAA+B,EACnC,GAAG,CAAC,OAAO,EACX,UAAU,EACV,IAAI,EACJ,cAAc,CACf,CAAC;QACF,iCAAiC;QACjC,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACzC,aAAa,CAAC,mBAAmB,GAAG,OAAO,CAAC;QAC5C,MAAM,kBAAkB,GAAG,UAAU,CAAC,SAAS,CAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,cAAc,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAC9D,CAAC;QACF,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;SACtD;QACD,UAAU,CAAC,kBAAkB,CAAC,GAAG,aAAa,CAAC;QAC/C,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACnC;IAAC,OAAO,GAAG,EAAE;QACZ,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QAC7B,IAAI,GAAG,YAAY,6BAAe,EAAE;YAClC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;SACtD;QACD,OAAO,GAAG;aACP,MAAM,CAAC,GAAG,CAAC;aACX,IAAI,CAAC,KAAK,CAAC;aACX,IAAI,CAAC,oCAAoC,GAAG,GAAG,CAAC,CAAC;KACrD;AACH,CAAC,CAAC;AA3DW,QAAA,kBAAkB,sBA2D7B"}
1
+ {"version":3,"file":"authHandlers.js","sourceRoot":"","sources":["../../../../../lib/hybrid-sdk/server/routesHandlers/authHandlers.ts"],"names":[],"mappings":";;;AACA,qDAG6B;AAC7B,iDAAqD;AACrD,sCAImB;AACnB,oDAAqD;AAY9C,MAAM,kBAAkB,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IACtE,IAAI,aAA8C,CAAC;IACnD,IAAI;QACF,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC1C,MAAM,iBAAiB,GACrB,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,CAAC;YACjE,eAAe,CAAC;QAClB,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;QACzC,YAAM,CAAC,KAAK,CACV,EAAE,WAAW,EAAE,IAAA,iBAAS,EAAC,UAAU,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAC/D,cAAc,CACf,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAgC,CAAC;QAC5E,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;QAE7D,MAAM,UAAU,GAAG,IAAA,wCAA+B,EAAC,UAAU,CAAC,CAAC;QAC/D,aAAa,GAAG,UAAU;YACxB,CAAC,CAAC,IAAA,iCAAwB,EAAC,UAAU,EAAE,cAAc,EAAE,IAAI,CAAC;YAC5D,CAAC,CAAC,IAAI,CAAC;QAET,IAAI,iBAAiB,KAAK,SAAS,IAAI,CAAC,UAAU,IAAI,CAAC,aAAa,EAAE;YACpE,YAAM,CAAC,KAAK,CACV,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,EACpC,wCAAwC,CACzC,CAAC;YACF,MAAM,IAAI,6BAAe,CAAC,wCAAwC,CAAC,CAAC;SACrE;QAED,+HAA+H;QAC/H,MAAM,IAAA,6CAA+B,EACnC,GAAG,CAAC,OAAO,EACX,UAAU,EACV,IAAI,EACJ,cAAc,CACf,CAAC;QACF,8EAA8E;QAC9E,aAAa,CAAC,mBAAmB,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7D,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACnC;IAAC,OAAO,GAAG,EAAE;QACZ,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QAC7B,IAAI,GAAG,YAAY,6BAAe,EAAE;YAClC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;SACtD;QACD,YAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,kCAAkC,CAAC,CAAC;QAC1D,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;KAC7E;AACH,CAAC,CAAC;AA/CW,QAAA,kBAAkB,sBA+C7B"}
@@ -10,6 +10,49 @@ const node_url_1 = require("node:url");
10
10
  const request_1 = require("../../http/request");
11
11
  const exponential_backoff_1 = require("../../http/exponential-backoff");
12
12
  const CONNECTION_READY_MAX_RETRIES = 4;
13
+ const CONNECTION_HANDSHAKE_TTL_MS = Number(process.env.BROKER_CONNECTION_HANDSHAKE_TTL_MS ?? 30000);
14
+ const isReady = (client) => Boolean(client.socket && client.metadata?.version && client.metadata?.capabilities);
15
+ /**
16
+ * Drops authorization placeholders that never completed the identify handshake.
17
+ * Ready connections and legacy entries without a handshake timestamp are kept.
18
+ */
19
+ const removeExpiredPendingHandshakes = (connections, token, now = Date.now()) => {
20
+ const activePool = (connections.get(token) ?? []).filter((client) => {
21
+ if (isReady(client)) {
22
+ return true;
23
+ }
24
+ // Only authorize-only entries are pending. An identified socket with
25
+ // incomplete metadata must remain tracked and follow the bad-metadata path.
26
+ if (client.socket ||
27
+ client.metadata ||
28
+ client.handshakeStartTime === undefined) {
29
+ return true;
30
+ }
31
+ return now - client.handshakeStartTime < CONNECTION_HANDSHAKE_TTL_MS;
32
+ });
33
+ if (activePool.length > 0) {
34
+ connections.set(token, activePool);
35
+ }
36
+ else {
37
+ connections.delete(token);
38
+ }
39
+ };
40
+ const findReadyConnection = (connections, token) => {
41
+ removeExpiredPendingHandshakes(connections, token);
42
+ const pool = connections.get(token) ?? [];
43
+ if (pool.length === 0) {
44
+ return { status: 'no-connection' };
45
+ }
46
+ const ready = pool.find(isReady);
47
+ if (ready) {
48
+ return { status: 'ready', client: ready };
49
+ }
50
+ if (pool.some((client) => !client.socket || !client.metadata)) {
51
+ // Still completing the handshake. Throwing asks retry() for another attempt.
52
+ throw new Error('client handshake in progress');
53
+ }
54
+ return { status: 'bad-metadata' };
55
+ };
13
56
  const overloadHttpRequestWithConnectionDetailsMiddleware = async (req, res, next) => {
14
57
  const connections = (0, socket_1.getSocketConnections)();
15
58
  const token = req.params.token;
@@ -61,33 +104,12 @@ const overloadHttpRequestWithConnectionDetailsMiddleware = async (req, res, next
61
104
  return res.status(404).json({ ok: false });
62
105
  }
63
106
  }
64
- // Grab the pool of connections for this token
65
- const connection = connections.get(token);
66
- // Make sure a connection actually exists before proceeding
67
- if (connection.length === 0) {
68
- logger_1.log.warn({ desensitizedToken, requestId }, 'No connection in pool found.');
69
- res.setHeader('x-broker-failure', 'no-connection');
70
- return res.status(404).json({ ok: false });
71
- }
72
- const isReady = (c) => Boolean(c.socket && c.metadata?.version && c.metadata?.capabilities);
73
- // The pool is newest-first, so find() returns the newest fully-ready
74
- // connection. This keeps HA clients immune to reconnect churn, which will
75
- // briefly create a not-yet-ready connection. If none is ready yet but a connection is still
76
- // completing its handshake, retry with exponential backoff. A permanently-incomplete pool
77
- // won't become ready, so return without retrying.
78
- let client;
107
+ // If no connection is ready yet but one is still completing its handshake,
108
+ // retry with exponential backoff. A permanently-incomplete pool won't become
109
+ // ready, so return without retrying.
110
+ let lookup;
79
111
  try {
80
- client = await (0, exponential_backoff_1.retry)(() => {
81
- const pool = connections.get(token) ?? [];
82
- const ready = pool.find(isReady);
83
- if (ready) {
84
- return ready;
85
- }
86
- if (pool.some((c) => !c.socket || !c.metadata)) {
87
- throw new Error('client handshake in progress');
88
- }
89
- return undefined;
90
- }, {
112
+ lookup = await (0, exponential_backoff_1.retry)(() => findReadyConnection(connections, token), {
91
113
  retries: CONNECTION_READY_MAX_RETRIES,
92
114
  operation: 'await-ready-broker-connection',
93
115
  });
@@ -100,7 +122,14 @@ const overloadHttpRequestWithConnectionDetailsMiddleware = async (req, res, next
100
122
  res.setHeader('Retry-After', '1');
101
123
  return res.status(503).json({ ok: false });
102
124
  }
103
- if (!client) {
125
+ if (lookup.status === 'no-connection') {
126
+ // The pool was empty on entry, or every entry in it was an expired
127
+ // handshake and was pruned. Either way there is nothing to serve.
128
+ logger_1.log.warn({ desensitizedToken, requestId }, 'No connection in pool found.');
129
+ res.setHeader('x-broker-failure', 'no-connection');
130
+ return res.status(404).json({ ok: false });
131
+ }
132
+ if (lookup.status === 'bad-metadata') {
104
133
  // Connections are present but missing required metadata (e.g. a legacy
105
134
  // client that never sends capabilities) — permanent for this client, so keep
106
135
  // the fast-fail 400 to avoid turning these into retry storms.
@@ -108,6 +137,7 @@ const overloadHttpRequestWithConnectionDetailsMiddleware = async (req, res, next
108
137
  res.setHeader('x-broker-failure', 'bad-request');
109
138
  return res.status(400).json({ ok: false });
110
139
  }
140
+ const client = lookup.client;
111
141
  res.locals.websocket = client.socket;
112
142
  res.locals.socketVersion = client.socketVersion;
113
143
  res.locals.capabilities = client.metadata.capabilities;
@@ -1 +1 @@
1
- {"version":3,"file":"httpRequestHandler.js","sourceRoot":"","sources":["../../../../../lib/hybrid-sdk/server/routesHandlers/httpRequestHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"httpRequestHandler.js","sourceRoot":"","sources":["../../../../../lib/hybrid-sdk/server/routesHandlers/httpRequestHandler.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.bindSocketToWebserver = exports.getSocketConnectionByIdentifier = exports.getSocketConnections = void 0;
6
+ exports.bindSocketToWebserver = exports.findClientToRefreshCreds = exports.addAuthorizedHandshake = exports.removePendingHandshake = exports.getSocketConnectionByIdentifier = exports.getSocketConnections = void 0;
7
7
  const primus_1 = __importDefault(require("primus"));
8
8
  const primus_emitter_1 = __importDefault(require("primus-emitter"));
9
9
  const errorHandler_1 = require("./socketHandlers/errorHandler");
@@ -23,6 +23,70 @@ const getSocketConnectionByIdentifier = (identifier) => {
23
23
  return socketConnections.get(identifier);
24
24
  };
25
25
  exports.getSocketConnectionByIdentifier = getSocketConnectionByIdentifier;
26
+ /**
27
+ * Removes the pending entry for a handshake that closed before identifying.
28
+ *
29
+ * The handshake id ensures an older connection cannot remove a newer reconnect.
30
+ * If the client did not send enough identity headers, the entry is left for the
31
+ * TTL cleanup.
32
+ *
33
+ * Returns true if an entry was removed.
34
+ */
35
+ const removePendingHandshake = (identifier, { brokerClientId, role, handshakeId }) => {
36
+ if (!brokerClientId || !handshakeId) {
37
+ return false;
38
+ }
39
+ const clientPool = socketConnections.get(identifier);
40
+ if (!clientPool) {
41
+ return false;
42
+ }
43
+ const pendingIndex = clientPool.findIndex((client) => !client.socket &&
44
+ client.handshakeId === handshakeId &&
45
+ client.brokerClientId === brokerClientId &&
46
+ client.role === role);
47
+ if (pendingIndex < 0) {
48
+ return false;
49
+ }
50
+ clientPool.splice(pendingIndex, 1);
51
+ if (clientPool.length === 0) {
52
+ socketConnections.delete(identifier);
53
+ }
54
+ return true;
55
+ };
56
+ exports.removePendingHandshake = removePendingHandshake;
57
+ /**
58
+ * Adds a handshake to the connection pool after it has been authorized.
59
+ *
60
+ * A reconnect stays separate from the existing live connection, so closing the
61
+ * old socket cannot remove the new handshake. If there is already a pending
62
+ * handshake for the same client and role, the newer attempt replaces it.
63
+ */
64
+ const addAuthorizedHandshake = (identifier, currentClient) => {
65
+ const clientPool = socketConnections.get(identifier) ?? [];
66
+ const pendingHandshakeIndex = clientPool.findIndex((client) => !client.socket &&
67
+ client.brokerClientId === currentClient.brokerClientId &&
68
+ client.role === currentClient.role);
69
+ if (pendingHandshakeIndex < 0) {
70
+ // Keep an identified connection separate from its reconnect attempt.
71
+ // If the old socket closes first, the new handshake must remain seated.
72
+ clientPool.unshift(currentClient);
73
+ }
74
+ else {
75
+ clientPool[pendingHandshakeIndex] = currentClient;
76
+ }
77
+ socketConnections.set(identifier, clientPool);
78
+ };
79
+ exports.addAuthorizedHandshake = addAuthorizedHandshake;
80
+ /**
81
+ * Finds the connection to update after an auth refresh.
82
+ * Prefers the live connection when a reconnect is also pending, so the active
83
+ * socket does not get disconnected for using stale credentials.
84
+ */
85
+ const findClientToRefreshCreds = (clientPool, brokerClientId, role) => {
86
+ const matches = clientPool.filter((client) => client.brokerClientId === brokerClientId && client.role === role);
87
+ return matches.find((client) => client.socket) ?? matches[0];
88
+ };
89
+ exports.findClientToRefreshCreds = findClientToRefreshCreds;
26
90
  const socket = ({ server, loadedServerOpts }) => {
27
91
  const ioConfig = {
28
92
  transformer: 'engine.io',
@@ -43,7 +107,10 @@ const socket = ({ server, loadedServerOpts }) => {
43
107
  .toLowerCase();
44
108
  // Primus authorize callbacks receive the raw HTTP upgrade request before
45
109
  // the Express middleware chain runs, so req.requestId is not available here.
46
- const requestId = req.headers['snyk-request-id'];
110
+ // The client sends a fresh snyk-request-id per connection attempt, so it
111
+ // also identifies this handshake when the socket later closes.
112
+ const { handshakeId } = (0, authHelpers_1.getHandshakeIdentityFromHeaders)(req.headers);
113
+ const requestId = handshakeId;
47
114
  try {
48
115
  const { brokerClientId, credentials, role } =
49
116
  // deepcode ignore Ssrf: request URL comes from the filter response, with the origin url being injected by the filtered version
@@ -58,21 +125,10 @@ const socket = ({ server, loadedServerOpts }) => {
58
125
  brokerAppClientId,
59
126
  role: (role ?? client_1.Role.primary),
60
127
  credsValidationTime: nowDate,
128
+ handshakeStartTime: Date.now(),
129
+ handshakeId,
61
130
  };
62
- const connections = (0, exports.getSocketConnections)();
63
- const clientPool = connections.get(connectionIdentifier) || [];
64
- const currentClientIndex = clientPool.findIndex((x) => x.brokerClientId === currentClient.brokerClientId &&
65
- x.role === currentClient.role);
66
- if (currentClientIndex < 0) {
67
- clientPool.unshift(currentClient);
68
- }
69
- else {
70
- clientPool[currentClientIndex] = {
71
- ...clientPool[currentClientIndex],
72
- ...currentClient,
73
- };
74
- }
75
- connections.set(connectionIdentifier, clientPool);
131
+ (0, exports.addAuthorizedHandshake)(connectionIdentifier, currentClient);
76
132
  }
77
133
  catch (err) {
78
134
  if (err instanceof authHelpers_1.BrokerAuthError) {
@@ -1 +1 @@
1
- {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../../../lib/hybrid-sdk/server/socket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../../../lib/hybrid-sdk/server/socket.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ const metrics_1 = require("../../common/utils/metrics");
5
5
  const logger_1 = require("../../../logs/logger");
6
6
  const dispatcher_1 = require("../infra/dispatcher");
7
7
  const socket_1 = require("../socket");
8
+ const authHelpers_1 = require("../auth/authHelpers");
8
9
  const token_1 = require("../utils/token");
9
10
  const identifyHandler_1 = require("./identifyHandler");
10
11
  const handleConnectionCloseOnSocket = (closeReason, socket, token, clientId, identified) => {
@@ -30,12 +31,18 @@ const handleConnectionCloseOnSocket = (closeReason, socket, token, clientId, ide
30
31
  connections.delete(token);
31
32
  }
32
33
  (0, metrics_1.decrementSocketConnectionGauge)();
34
+ (0, identifyHandler_1.rmClientIdFromTerminationMap)(token, clientId);
35
+ setImmediate(async () => await (0, dispatcher_1.clientDisconnected)(token, clientId));
33
36
  }
34
37
  else {
35
- logger_1.log.warn({ maskedToken, hashedToken }, 'Client disconnected before identifying itself.');
38
+ // No pool entry references this socket, because the socket is only
39
+ // attached by identify. The authorize hook still seated an entry for this
40
+ // handshake, and nothing else removes it. Without this the entry remains
41
+ // until an inbound request prunes it by handshake TTL.
42
+ const identity = (0, authHelpers_1.getHandshakeIdentityFromHeaders)(socket.request.headers);
43
+ const removed = (0, socket_1.removePendingHandshake)(token, identity);
44
+ logger_1.log.warn({ maskedToken, hashedToken, ...identity, removed }, 'Client disconnected before identifying itself.');
36
45
  }
37
- (0, identifyHandler_1.rmClientIdFromTerminationMap)(token, clientId);
38
- setImmediate(async () => await (0, dispatcher_1.clientDisconnected)(token, clientId));
39
46
  }
40
47
  };
41
48
  exports.handleConnectionCloseOnSocket = handleConnectionCloseOnSocket;
@@ -1 +1 @@
1
- {"version":3,"file":"closeHandler.js","sourceRoot":"","sources":["../../../../../lib/hybrid-sdk/server/socketHandlers/closeHandler.ts"],"names":[],"mappings":";;;AAAA,wDAA4E;AAC5E,iDAAqD;AACrD,oDAAyD;AACzD,sCAAiD;AACjD,0CAAsD;AACtD,uDAAiE;AAG1D,MAAM,6BAA6B,GAAG,CAC3C,WAAmB,EACnB,MAAc,EACd,KAAyB,EACzB,QAAgB,EAChB,UAAmB,EACnB,EAAE;IACF,IAAI,KAAK,EAAE;QACT,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,IAAA,4BAAoB,EAAC,KAAK,CAAC,CAAC;QACjE,IAAI,UAAU,EAAE;YACd,MAAM,WAAW,GAAG,IAAA,6BAAoB,GAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,WAAW;iBAC3B,GAAG,CAAC,KAAK,CAAC;gBACX,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;YACvC,MAAM,kBAAkB,GACtB,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;YACvD,YAAM,CAAC,IAAI,CACT;gBACE,WAAW;gBACX,WAAW;gBACX,WAAW;gBACX,yBAAyB,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;aACnD,EACD,2BAA2B,CAC5B,CAAC;YACF,IAAI,kBAAkB,EAAE,MAAM,EAAE;gBAC9B,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;aAC5C;iBAAM;gBACL,YAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,kBAAkB,CAAC,CAAC;gBAC9D,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAC3B;YACD,IAAA,wCAA8B,GAAE,CAAC;SAClC;aAAM;YACL,YAAM,CAAC,IAAI,CACT,EAAE,WAAW,EAAE,WAAW,EAAE,EAC5B,gDAAgD,CACjD,CAAC;SACH;QACD,IAAA,8CAA4B,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC9C,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,IAAA,+BAAkB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;KACrE;AACH,CAAC,CAAC;AAzCW,QAAA,6BAA6B,iCAyCxC"}
1
+ {"version":3,"file":"closeHandler.js","sourceRoot":"","sources":["../../../../../lib/hybrid-sdk/server/socketHandlers/closeHandler.ts"],"names":[],"mappings":";;;AAAA,wDAA4E;AAC5E,iDAAqD;AACrD,oDAAyD;AACzD,sCAAyE;AACzE,qDAAsE;AACtE,0CAAsD;AACtD,uDAAiE;AAG1D,MAAM,6BAA6B,GAAG,CAC3C,WAAmB,EACnB,MAAc,EACd,KAAyB,EACzB,QAAgB,EAChB,UAAmB,EACnB,EAAE;IACF,IAAI,KAAK,EAAE;QACT,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,IAAA,4BAAoB,EAAC,KAAK,CAAC,CAAC;QACjE,IAAI,UAAU,EAAE;YACd,MAAM,WAAW,GAAG,IAAA,6BAAoB,GAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,WAAW;iBAC3B,GAAG,CAAC,KAAK,CAAC;gBACX,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;YACvC,MAAM,kBAAkB,GACtB,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;YACvD,YAAM,CAAC,IAAI,CACT;gBACE,WAAW;gBACX,WAAW;gBACX,WAAW;gBACX,yBAAyB,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;aACnD,EACD,2BAA2B,CAC5B,CAAC;YACF,IAAI,kBAAkB,EAAE,MAAM,EAAE;gBAC9B,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;aAC5C;iBAAM;gBACL,YAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,kBAAkB,CAAC,CAAC;gBAC9D,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAC3B;YACD,IAAA,wCAA8B,GAAE,CAAC;YACjC,IAAA,8CAA4B,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC9C,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,IAAA,+BAAkB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;SACrE;aAAM;YACL,mEAAmE;YACnE,0EAA0E;YAC1E,yEAAyE;YACzE,uDAAuD;YACvD,MAAM,QAAQ,GAAG,IAAA,6CAA+B,EAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACzE,MAAM,OAAO,GAAG,IAAA,+BAAsB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACxD,YAAM,CAAC,IAAI,CACT,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,EAClD,gDAAgD,CACjD,CAAC;SACH;KACF;AACH,CAAC,CAAC;AA/CW,QAAA,6BAA6B,iCA+CxC"}
@@ -23,7 +23,15 @@ const handleSocketConnection = (socket) => {
23
23
  clientId = clientData.metadata.clientId;
24
24
  identified = (0, identifyHandler_1.handleIdentifyOnSocket)(clientData, socket, token);
25
25
  });
26
+ // Primus can emit more than one terminal event for the same socket. Treat
27
+ // teardown as one lifecycle transition so metrics, dispatcher calls and pool
28
+ // cleanup happen exactly once.
29
+ let terminalEventHandled = false;
26
30
  ['close', 'end', 'disconnection', 'destroy', 'timeout'].forEach((e) => socket.on(e, () => {
31
+ if (terminalEventHandled) {
32
+ return;
33
+ }
34
+ terminalEventHandled = true;
27
35
  (0, metrics_1.incrementSocketCloseReasonCount)(e);
28
36
  (0, closeHandler_1.handleConnectionCloseOnSocket)(e, socket, token, clientId, identified);
29
37
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"connectionHandler.js","sourceRoot":"","sources":["../../../../../lib/hybrid-sdk/server/socketHandlers/connectionHandler.ts"],"names":[],"mappings":";;;AAAA,iDAAqD;AACrD,0CAAsD;AACtD,uDAA2D;AAC3D,iDAA+D;AAC/D,iDAAmD;AACnD,yDAAqE;AACrE,oDAAgE;AAChE,wDAA6E;AAGtE,MAAM,sBAAsB,GAAG,CAAC,MAAc,EAAE,EAAE;IACvD,IAAI,QAAQ,GAAG,IAAI,CAAC;IACpB,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ;SACtC,UAAU,CAAC,sBAAsB,EAAE,IAAI,CAAC;SACxC,WAAW,EAAE,CAAC;IAEjB,MAAM,iBAAiB,GAAG,IAAA,4BAAoB,EAAC,KAAK,CAAC,CAAC;IACtD,YAAM,CAAC,IAAI,CAAC,EAAE,iBAAiB,EAAE,EAAE,wBAAwB,CAAC,CAAC;IAE7D,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAEpE,yDAAyD;IACzD,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,EAAE;QACnC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxC,UAAU,GAAG,IAAA,wCAAsB,EAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACpE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE;QAChB,IAAA,yCAA+B,EAAC,CAAC,CAAC,CAAC;QACnC,IAAA,4CAA6B,EAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAS,EAAE,UAAU,CAAC,CAAC;IACzE,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE;QAC9B,YAAM,CAAC,IAAI,CACT;YACE,WAAW,EAAE,IAAA,iBAAS,EAAC,KAAK,CAAC;YAC7B,WAAW,EAAE,IAAA,iBAAS,EAAC,KAAK,CAAC;YAC7B,QAAQ;YACR,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,EACD,oCAAoC,CACrC,CAAC;QACF,IAAA,kDAA+B,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,gCAAiB,EAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC;AAxCW,QAAA,sBAAsB,0BAwCjC"}
1
+ {"version":3,"file":"connectionHandler.js","sourceRoot":"","sources":["../../../../../lib/hybrid-sdk/server/socketHandlers/connectionHandler.ts"],"names":[],"mappings":";;;AAAA,iDAAqD;AACrD,0CAAsD;AACtD,uDAA2D;AAC3D,iDAA+D;AAC/D,iDAAmD;AACnD,yDAAqE;AACrE,oDAAgE;AAChE,wDAA6E;AAGtE,MAAM,sBAAsB,GAAG,CAAC,MAAc,EAAE,EAAE;IACvD,IAAI,QAAQ,GAAG,IAAI,CAAC;IACpB,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ;SACtC,UAAU,CAAC,sBAAsB,EAAE,IAAI,CAAC;SACxC,WAAW,EAAE,CAAC;IAEjB,MAAM,iBAAiB,GAAG,IAAA,4BAAoB,EAAC,KAAK,CAAC,CAAC;IACtD,YAAM,CAAC,IAAI,CAAC,EAAE,iBAAiB,EAAE,EAAE,wBAAwB,CAAC,CAAC;IAE7D,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAEpE,yDAAyD;IACzD,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,EAAE;QACnC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxC,UAAU,GAAG,IAAA,wCAAsB,EAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,0EAA0E;IAC1E,6EAA6E;IAC7E,+BAA+B;IAC/B,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACpE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE;QAChB,IAAI,oBAAoB,EAAE;YACxB,OAAO;SACR;QACD,oBAAoB,GAAG,IAAI,CAAC;QAC5B,IAAA,yCAA+B,EAAC,CAAC,CAAC,CAAC;QACnC,IAAA,4CAA6B,EAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAS,EAAE,UAAU,CAAC,CAAC;IACzE,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE;QAC9B,YAAM,CAAC,IAAI,CACT;YACE,WAAW,EAAE,IAAA,iBAAS,EAAC,KAAK,CAAC;YAC7B,WAAW,EAAE,IAAA,iBAAS,EAAC,KAAK,CAAC;YAC7B,QAAQ;YACR,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,EACD,oCAAoC,CACrC,CAAC;QACF,IAAA,kDAA+B,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,gCAAiB,EAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC;AAhDW,QAAA,sBAAsB,0BAgDjC"}
package/dist/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "prepare:templates": "rm -rf ./dist/client-templates && cp -Rf ./client-templates ./dist",
16
16
  "start": "node .",
17
17
  "dev": "tsc-watch --project tsconfig.json --onSuccess 'node .' | ./node_modules/.bin/bunyan",
18
- "dev:client": "LOG_LEVEL=debug NODE_ENV=development tsc-watch --project tsconfig.json --onSuccess 'node dist/cli/index.js client' | ./node_modules/.bin/bunyan",
18
+ "dev:client": "NODE_ENV=development tsc-watch --project tsconfig.json --onSuccess 'node --env-file-if-exists=.env dist/cli/index.js client' | ./node_modules/.bin/bunyan",
19
19
  "dev:client-to-local-server": "BROKER_SERVER_URL=http://localhost:9000 USE_LOCAL_BACKEND='true' LOG_LEVEL=debug PORT=9001 NODE_ENV=development tsc-watch --project tsconfig.json --onSuccess 'node dist/cli/index.js client' | ./node_modules/.bin/bunyan",
20
20
  "dev:client2-to-local-server": "BROKER_SERVER_URL=http://localhost:9000 USE_LOCAL_BACKEND='true' LOG_LEVEL=debug PORT=9002 NODE_ENV=development tsc-watch --project tsconfig.json --onSuccess 'node dist/cli/index.js client' | ./node_modules/.bin/bunyan",
21
21
  "dev:server": "LOG_LEVEL=debug PORT=9000 ACCEPT=accept-server.local.json NODE_ENV=development tsc-watch --project tsconfig.json --onSuccess 'node dist/cli/index.js server' | ./node_modules/.bin/bunyan",