snyk-broker 4.176.9 → 4.177.0
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.
- package/dist/cli/exec.js +3 -0
- package/dist/cli/exec.js.map +1 -1
- package/dist/lib/client/checks/config/index.js +15 -1
- package/dist/lib/client/checks/config/index.js.map +1 -1
- package/dist/lib/client/checks/config/universalConnectionConfigCheck.js +53 -0
- package/dist/lib/client/checks/config/universalConnectionConfigCheck.js.map +1 -0
- package/dist/lib/client/checks/http/index.js +1 -4
- package/dist/lib/client/checks/http/index.js.map +1 -1
- package/dist/lib/client/dispatcher/index.js +6 -14
- package/dist/lib/client/dispatcher/index.js.map +1 -1
- package/dist/lib/client/hooks/startup/processHooks.js +50 -19
- package/dist/lib/client/hooks/startup/processHooks.js.map +1 -1
- package/dist/lib/client/index.js +43 -19
- package/dist/lib/client/index.js.map +1 -1
- package/dist/lib/client/routesHandler/healthcheckHandler.js +26 -11
- package/dist/lib/client/routesHandler/healthcheckHandler.js.map +1 -1
- package/dist/lib/client/routesHandler/systemCheckHandler.js +57 -31
- package/dist/lib/client/routesHandler/systemCheckHandler.js.map +1 -1
- package/dist/lib/client/routesHandler/websocketConnectionMiddlewares.js +56 -0
- package/dist/lib/client/routesHandler/websocketConnectionMiddlewares.js.map +1 -0
- package/dist/lib/client/socket.js +64 -25
- package/dist/lib/client/socket.js.map +1 -1
- package/dist/lib/client/socketHandlers/chunkHandler.js +2 -2
- package/dist/lib/client/socketHandlers/chunkHandler.js.map +1 -1
- package/dist/lib/client/socketHandlers/closeHandler.js +11 -2
- package/dist/lib/client/socketHandlers/closeHandler.js.map +1 -1
- package/dist/lib/client/socketHandlers/identifyHandler.js +2 -2
- package/dist/lib/client/socketHandlers/identifyHandler.js.map +1 -1
- package/dist/lib/client/socketHandlers/init.js.map +1 -1
- package/dist/lib/client/socketHandlers/openHandler.js +16 -3
- package/dist/lib/client/socketHandlers/openHandler.js.map +1 -1
- package/dist/lib/client/socketHandlers/requestHandler.js +4 -4
- package/dist/lib/client/socketHandlers/requestHandler.js.map +1 -1
- package/dist/lib/client/utils/connectionValidation.js +57 -0
- package/dist/lib/client/utils/connectionValidation.js.map +1 -0
- package/dist/lib/client/utils/integrations.js +10 -0
- package/dist/lib/client/utils/integrations.js.map +1 -0
- package/dist/lib/common/config/config.js +164 -0
- package/dist/lib/common/config/config.js.map +1 -0
- package/dist/lib/common/config/universal.js +87 -0
- package/dist/lib/common/config/universal.js.map +1 -0
- package/dist/lib/common/filter/filter-rules-loading.js +103 -69
- package/dist/lib/common/filter/filter-rules-loading.js.map +1 -1
- package/dist/lib/common/filter/filtersAsync.js +38 -16
- package/dist/lib/common/filter/filtersAsync.js.map +1 -1
- package/dist/lib/common/filter/utils.js +17 -0
- package/dist/lib/common/filter/utils.js.map +1 -0
- package/dist/lib/common/http/downstream-post-stream-to-server.js +9 -8
- package/dist/lib/common/http/downstream-post-stream-to-server.js.map +1 -1
- package/dist/lib/common/http/patch-https-request-for-proxying.js +13 -10
- package/dist/lib/common/http/patch-https-request-for-proxying.js.map +1 -1
- package/dist/lib/common/http/request.js +9 -6
- package/dist/lib/common/http/request.js.map +1 -1
- package/dist/lib/common/http/server-post-stream-handler.js +3 -3
- package/dist/lib/common/http/server-post-stream-handler.js.map +1 -1
- package/dist/lib/common/relay/forwardHttpRequest.js +22 -10
- package/dist/lib/common/relay/forwardHttpRequest.js.map +1 -1
- package/dist/lib/common/relay/forwardHttpRequestOverHttp.js +20 -5
- package/dist/lib/common/relay/forwardHttpRequestOverHttp.js.map +1 -1
- package/dist/lib/common/relay/forwardWebsocketRequest.js +31 -17
- package/dist/lib/common/relay/forwardWebsocketRequest.js.map +1 -1
- package/dist/lib/{server/types/http.js → common/types/filter.js} +1 -1
- package/dist/lib/common/types/filter.js.map +1 -0
- package/dist/lib/common/types/options.js +3 -0
- package/dist/lib/common/types/options.js.map +1 -0
- package/dist/lib/common/utils/auth-header.js +6 -5
- package/dist/lib/common/utils/auth-header.js.map +1 -1
- package/dist/lib/common/utils/replace-vars.js +4 -1
- package/dist/lib/common/utils/replace-vars.js.map +1 -1
- package/dist/lib/index.js +32 -12
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/logs/logger.js +12 -5
- package/dist/lib/logs/logger.js.map +1 -1
- package/dist/lib/server/broker-middleware.js +3 -2
- package/dist/lib/server/broker-middleware.js.map +1 -1
- package/dist/lib/server/index.js +12 -3
- package/dist/lib/server/index.js.map +1 -1
- package/dist/lib/server/infra/dispatcher.js +4 -3
- package/dist/lib/server/infra/dispatcher.js.map +1 -1
- package/dist/lib/server/routesHandlers/httpRequestHandler.js +1 -1
- package/dist/lib/server/routesHandlers/httpRequestHandler.js.map +1 -1
- package/dist/lib/server/socket.js +15 -17
- package/dist/lib/server/socket.js.map +1 -1
- package/dist/lib/server/socketHandlers/initHandlers.js +3 -4
- package/dist/lib/server/socketHandlers/initHandlers.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/lib/common/config.js +0 -97
- package/dist/lib/common/config.js.map +0 -1
- package/dist/lib/common/filter/legacyFilters.js +0 -194
- package/dist/lib/common/filter/legacyFilters.js.map +0 -1
- package/dist/lib/server/types/http.js.map +0 -1
package/dist/cli/exec.js
CHANGED
package/dist/cli/exec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../cli/exec.ts"],"names":[],"mappings":";;AAAA,wCAAmC;AAEnC,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAEtC,kBAAe,KAAK,EAAE,IAAI,EAAE,EAAE;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;IACtC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,GAAG,CAAC,CAAC;KACjD;IAED,IAAI,CAAC,MAAM,GAAG,OAAO,KAAK,QAAQ,CAAC;IACnC,MAAM,IAAA,WAAG,EAAC,IAAI,CAAC,CAAC;AAClB,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../cli/exec.ts"],"names":[],"mappings":";;AAAA,wCAAmC;AAEnC,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAEtC,kBAAe,KAAK,EAAE,IAAI,EAAE,EAAE;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;IACtC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,GAAG,CAAC,CAAC;KACjD;IAED,IAAI,CAAC,MAAM,GAAG,OAAO,KAAK,QAAQ,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QAChB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;KAClB;IACD,MAAM,IAAA,WAAG,EAAC,IAAI,CAAC,CAAC;AAClB,CAAC,CAAC"}
|
|
@@ -2,8 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getConfigChecks = void 0;
|
|
4
4
|
const brokerClientUrlCheck_1 = require("./brokerClientUrlCheck");
|
|
5
|
+
const universalConnectionConfigCheck_1 = require("./universalConnectionConfigCheck");
|
|
5
6
|
function getConfigChecks(config) {
|
|
6
|
-
return [
|
|
7
|
+
return [
|
|
8
|
+
brokerClientUrlCheck(config),
|
|
9
|
+
universalBrokerConnectionsCheck(config),
|
|
10
|
+
];
|
|
7
11
|
}
|
|
8
12
|
exports.getConfigChecks = getConfigChecks;
|
|
9
13
|
const brokerClientUrlCheck = (config) => {
|
|
@@ -17,4 +21,14 @@ const brokerClientUrlCheck = (config) => {
|
|
|
17
21
|
},
|
|
18
22
|
};
|
|
19
23
|
};
|
|
24
|
+
const universalBrokerConnectionsCheck = (config) => {
|
|
25
|
+
return {
|
|
26
|
+
id: 'universal-broker-connections-config-validation',
|
|
27
|
+
name: 'Universal Broker Client Connections Configuration Check',
|
|
28
|
+
enabled: config.universalBrokerEnabled,
|
|
29
|
+
check: function () {
|
|
30
|
+
return (0, universalConnectionConfigCheck_1.validateUniversalConnectionsConfig)({ id: this.id, name: this.name }, config);
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
};
|
|
20
34
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/client/checks/config/index.ts"],"names":[],"mappings":";;;AAEA,iEAAiE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/client/checks/config/index.ts"],"names":[],"mappings":";;;AAEA,iEAAiE;AACjE,qFAAsF;AAEtF,SAAgB,eAAe,CAAC,MAAc;IAC5C,OAAO;QACL,oBAAoB,CAAC,MAAM,CAAC;QAC5B,+BAA+B,CAAC,MAAM,CAAC;KACxC,CAAC;AACJ,CAAC;AALD,0CAKC;AAED,MAAM,oBAAoB,GAAG,CAAC,MAAc,EAAS,EAAE;IACrD,MAAM,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACrC,OAAO;QACL,EAAE,EAAE,8BAA8B;QAClC,IAAI,EAAE,oCAAoC;QAC1C,OAAO,EAAE,GAAG,IAAI,SAAS,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAC3C,KAAK,EAAE,KAAK;YACV,OAAO,MAAM,IAAA,8CAAuB,EAClC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAChC,MAAM,CACP,CAAC;QACJ,CAAC;KACc,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,+BAA+B,GAAG,CAAC,MAAc,EAAS,EAAE;IAChE,OAAO;QACL,EAAE,EAAE,gDAAgD;QACpD,IAAI,EAAE,yDAAyD;QAC/D,OAAO,EAAE,MAAM,CAAC,sBAAsB;QACtC,KAAK,EAAE;YACL,OAAO,IAAA,mEAAkC,EACvC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAChC,MAAM,CACP,CAAC;QACJ,CAAC;KACc,CAAC;AACpB,CAAC,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateUniversalConnectionsConfig = void 0;
|
|
4
|
+
const universal_1 = require("../../../common/config/universal");
|
|
5
|
+
const validateUniversalConnectionsConfig = (checkOptions, config) => {
|
|
6
|
+
if (!config.connections) {
|
|
7
|
+
return {
|
|
8
|
+
id: checkOptions.id,
|
|
9
|
+
name: checkOptions.name,
|
|
10
|
+
status: 'error',
|
|
11
|
+
output: `Missing connections in config`,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
for (const key in config.connections) {
|
|
15
|
+
const currentConnection = (0, universal_1.getConfigForIdentifier)(config.connections[key].identifier, config);
|
|
16
|
+
if (!currentConnection || !currentConnection.type) {
|
|
17
|
+
return {
|
|
18
|
+
id: checkOptions.id,
|
|
19
|
+
name: checkOptions.name,
|
|
20
|
+
status: 'error',
|
|
21
|
+
output: `Missing type in connection ${key} is unsupported`,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
if (!config.supportedBrokerTypes.includes(currentConnection.type)) {
|
|
25
|
+
return {
|
|
26
|
+
id: checkOptions.id,
|
|
27
|
+
name: checkOptions.name,
|
|
28
|
+
status: 'error',
|
|
29
|
+
output: `${currentConnection.type} type in connection ${key} is unsupported`,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
// Check all required elements are there
|
|
33
|
+
for (const requiredKey in config.brokerClientConfiguration[currentConnection.type].required) {
|
|
34
|
+
if (requiredKey != 'type' &&
|
|
35
|
+
!Object.keys(currentConnection).includes(requiredKey)) {
|
|
36
|
+
return {
|
|
37
|
+
id: checkOptions.id,
|
|
38
|
+
name: checkOptions.name,
|
|
39
|
+
status: 'error',
|
|
40
|
+
output: `Missing ${requiredKey} required in connection ${key}`,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
id: checkOptions.id,
|
|
47
|
+
name: checkOptions.name,
|
|
48
|
+
status: 'passing',
|
|
49
|
+
output: 'connections config check: ok',
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
exports.validateUniversalConnectionsConfig = validateUniversalConnectionsConfig;
|
|
53
|
+
//# sourceMappingURL=universalConnectionConfigCheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"universalConnectionConfigCheck.js","sourceRoot":"","sources":["../../../../../lib/client/checks/config/universalConnectionConfigCheck.ts"],"names":[],"mappings":";;;AAAA,gEAA0E;AAInE,MAAM,kCAAkC,GAAG,CAChD,YAA0B,EAC1B,MAAc,EACD,EAAE;IACf,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;QACvB,OAAO;YACL,EAAE,EAAE,YAAY,CAAC,EAAE;YACnB,IAAI,EAAE,YAAY,CAAC,IAAI;YACvB,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,+BAA+B;SAClB,CAAC;KACzB;IACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE;QACpC,MAAM,iBAAiB,GAAG,IAAA,kCAAsB,EAC9C,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAClC,MAAM,CACP,CAAC;QACF,IAAI,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE;YACjD,OAAO;gBACL,EAAE,EAAE,YAAY,CAAC,EAAE;gBACnB,IAAI,EAAE,YAAY,CAAC,IAAI;gBACvB,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,8BAA8B,GAAG,iBAAiB;aACrC,CAAC;SACzB;QACD,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;YACjE,OAAO;gBACL,EAAE,EAAE,YAAY,CAAC,EAAE;gBACnB,IAAI,EAAE,YAAY,CAAC,IAAI;gBACvB,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,GAAG,iBAAiB,CAAC,IAAI,uBAAuB,GAAG,iBAAiB;aACvD,CAAC;SACzB;QAED,wCAAwC;QACxC,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,yBAAyB,CACxD,iBAAiB,CAAC,IAAI,CACvB,CAAC,QAAQ,EAAE;YACV,IACE,WAAW,IAAI,MAAM;gBACrB,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EACrD;gBACA,OAAO;oBACL,EAAE,EAAE,YAAY,CAAC,EAAE;oBACnB,IAAI,EAAE,YAAY,CAAC,IAAI;oBACvB,MAAM,EAAE,OAAO;oBACf,MAAM,EAAE,WAAW,WAAW,2BAA2B,GAAG,EAAE;iBACzC,CAAC;aACzB;SACF;KACF;IAED,OAAO;QACL,EAAE,EAAE,YAAY,CAAC,EAAE;QACnB,IAAI,EAAE,YAAY,CAAC,IAAI;QACvB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,8BAA8B;KACjB,CAAC;AAC1B,CAAC,CAAC;AA1DW,QAAA,kCAAkC,sCA0D7C"}
|
|
@@ -22,14 +22,11 @@ const brokerServerStatusCheck = (config) => {
|
|
|
22
22
|
};
|
|
23
23
|
};
|
|
24
24
|
const restApiStatusCheck = (config) => {
|
|
25
|
-
const url = config.API_BASE_URL || config.BROKER_SERVER_URL
|
|
26
|
-
? config.BROKER_SERVER_URL.replace('//broker.', '//api.')
|
|
27
|
-
: 'https://api.snyk.io';
|
|
28
25
|
return {
|
|
29
26
|
id: 'rest-api-status',
|
|
30
27
|
name: 'REST API Healthcheck',
|
|
31
28
|
enabled: true,
|
|
32
|
-
url: `${
|
|
29
|
+
url: `${config.API_BASE_URL}/rest/openapi`,
|
|
33
30
|
method: 'GET',
|
|
34
31
|
timeoutMs: defaultTimeoutMs,
|
|
35
32
|
check: async function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/client/checks/http/index.ts"],"names":[],"mappings":";;;AAAA,mDAAqD;AAIrD,MAAM,gBAAgB,GAAG,KAAM,CAAC;AAEhC,SAAgB,aAAa,CAAC,MAAc;IAC1C,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;AACvE,CAAC;AAFD,sCAEC;AAED,MAAM,uBAAuB,GAAG,CAAC,MAAc,EAAa,EAAE;IAC5D,MAAM,GAAG,GAAG,MAAM,CAAC,iBAAiB,IAAI,wBAAwB,CAAC;IACjE,OAAO;QACL,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,2BAA2B;QACjC,OAAO,EAAE,IAAI;QAEb,GAAG,EAAE,GAAG,GAAG,cAAc;QACzB,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,gBAAgB;QAC3B,KAAK,EAAE,KAAK;YACV,OAAO,MAAM,IAAA,kCAAkB,EAC7B,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAChC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAClE,CAAC;QACJ,CAAC;KACkB,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAa,EAAE;IACvD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lib/client/checks/http/index.ts"],"names":[],"mappings":";;;AAAA,mDAAqD;AAIrD,MAAM,gBAAgB,GAAG,KAAM,CAAC;AAEhC,SAAgB,aAAa,CAAC,MAAc;IAC1C,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;AACvE,CAAC;AAFD,sCAEC;AAED,MAAM,uBAAuB,GAAG,CAAC,MAAc,EAAa,EAAE;IAC5D,MAAM,GAAG,GAAG,MAAM,CAAC,iBAAiB,IAAI,wBAAwB,CAAC;IACjE,OAAO;QACL,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,2BAA2B;QACjC,OAAO,EAAE,IAAI;QAEb,GAAG,EAAE,GAAG,GAAG,cAAc;QACzB,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,gBAAgB;QAC3B,KAAK,EAAE,KAAK;YACV,OAAO,MAAM,IAAA,kCAAkB,EAC7B,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAChC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAClE,CAAC;QACJ,CAAC;KACkB,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAa,EAAE;IACvD,OAAO;QACL,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,IAAI;QAEb,GAAG,EAAE,GAAG,MAAM,CAAC,YAAY,eAAe;QAC1C,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,gBAAgB;QAC3B,KAAK,EAAE,KAAK;YACV,OAAO,MAAM,IAAA,kCAAkB,EAC7B,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAChC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAClE,CAAC;QACJ,CAAC;KACkB,CAAC;AACxB,CAAC,CAAC"}
|
|
@@ -19,20 +19,15 @@ function highAvailabilityModeEnabled(config) {
|
|
|
19
19
|
return highAvailabilityModeEnabled;
|
|
20
20
|
}
|
|
21
21
|
exports.highAvailabilityModeEnabled = highAvailabilityModeEnabled;
|
|
22
|
-
async function getServerId(config, brokerClientId) {
|
|
23
|
-
if (!
|
|
24
|
-
logger_1.log.error({ token:
|
|
22
|
+
async function getServerId(config, brokerToken, brokerClientId) {
|
|
23
|
+
if (!brokerToken) {
|
|
24
|
+
logger_1.log.error({ token: brokerToken }, 'missing client token');
|
|
25
25
|
const error = new Error('BROKER_TOKEN is required to successfully identify itself to the server');
|
|
26
26
|
error.name = 'MISSING_BROKER_TOKEN';
|
|
27
27
|
throw error;
|
|
28
28
|
}
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
: 'https://api.snyk.io';
|
|
32
|
-
const haConfig = getHAConfig(config);
|
|
33
|
-
const baseUrl = haConfig.BROKER_DISPATCHER_BASE_URL || defaultBrokerDispatcherBaseUrl;
|
|
34
|
-
const client = new api_1.HttpDispatcherServiceClient(baseUrl);
|
|
35
|
-
const hashedToken = (0, token_1.hashToken)(config.BROKER_TOKEN);
|
|
29
|
+
const client = new api_1.HttpDispatcherServiceClient(config.API_BASE_URL);
|
|
30
|
+
const hashedToken = (0, token_1.hashToken)(brokerToken);
|
|
36
31
|
const maxRetries = 10;
|
|
37
32
|
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
38
33
|
try {
|
|
@@ -41,7 +36,7 @@ async function getServerId(config, brokerClientId) {
|
|
|
41
36
|
hashedBrokerToken: hashedToken,
|
|
42
37
|
}, {
|
|
43
38
|
deployment_location: `${config.BROKER_CLIENT_LOCATION || 'snyk-broker-client'}`,
|
|
44
|
-
broker_token_first_char: `${
|
|
39
|
+
broker_token_first_char: `${brokerToken[0]}`,
|
|
45
40
|
});
|
|
46
41
|
}
|
|
47
42
|
catch (err) {
|
|
@@ -53,7 +48,4 @@ async function getServerId(config, brokerClientId) {
|
|
|
53
48
|
return null;
|
|
54
49
|
}
|
|
55
50
|
exports.getServerId = getServerId;
|
|
56
|
-
function getHAConfig(config) {
|
|
57
|
-
return config;
|
|
58
|
-
}
|
|
59
51
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/client/dispatcher/index.ts"],"names":[],"mappings":";;;AAAA,8CAAkD;AAElD,oDAAqD;AACrD,sCAA2D;AAC3D,6DAA2E;AAE3E,SAAgB,2BAA2B,CAAC,MAAW;IACrD,iDAAiD;IACjD,IAAI,2BAA2B,GAAG,KAAK,CAAC;IAExC,MAAM,gCAAgC,GAAI,MAAiB;SACxD,sBAAsB,CAAC;IAE1B,IAAI,OAAO,gCAAgC,KAAK,WAAW,EAAE;QAC3D,2BAA2B;YACzB,gCAAgC,CAAC,WAAW,EAAE,KAAK,MAAM;gBACzD,gCAAgC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC;KAC5D;IAED,YAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,2BAA2B,EAAE,EAAE,sBAAsB,CAAC,CAAC;IAE9E,OAAO,2BAA2B,CAAC;AACrC,CAAC;AAhBD,kEAgBC;AAEM,KAAK,UAAU,WAAW,CAC/B,MAAW,EACX,cAAsB;IAEtB,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/client/dispatcher/index.ts"],"names":[],"mappings":";;;AAAA,8CAAkD;AAElD,oDAAqD;AACrD,sCAA2D;AAC3D,6DAA2E;AAE3E,SAAgB,2BAA2B,CAAC,MAAW;IACrD,iDAAiD;IACjD,IAAI,2BAA2B,GAAG,KAAK,CAAC;IAExC,MAAM,gCAAgC,GAAI,MAAiB;SACxD,sBAAsB,CAAC;IAE1B,IAAI,OAAO,gCAAgC,KAAK,WAAW,EAAE;QAC3D,2BAA2B;YACzB,gCAAgC,CAAC,WAAW,EAAE,KAAK,MAAM;gBACzD,gCAAgC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC;KAC5D;IAED,YAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,2BAA2B,EAAE,EAAE,sBAAsB,CAAC,CAAC;IAE9E,OAAO,2BAA2B,CAAC;AACrC,CAAC;AAhBD,kEAgBC;AAEM,KAAK,UAAU,WAAW,CAC/B,MAAW,EACX,WAAmB,EACnB,cAAsB;IAEtB,IAAI,CAAC,WAAW,EAAE;QAChB,YAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,sBAAsB,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB,wEAAwE,CACzE,CAAC;QACF,KAAK,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACpC,MAAM,KAAK,CAAC;KACb;IAED,MAAM,MAAM,GAAG,IAAI,iCAA2B,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACpE,MAAM,WAAW,GAAG,IAAA,iBAAS,EAAC,WAAW,CAAC,CAAC;IAE3C,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE;QACtD,IAAI;YACF,OAAO,MAAM,IAAA,8CAAyB,EACpC,MAAM,EACN;gBACE,cAAc,EAAE,cAAc;gBAC9B,iBAAiB,EAAE,WAAW;aAC/B,EACD;gBACE,mBAAmB,EAAE,GACnB,MAAM,CAAC,sBAAsB,IAAI,oBACnC,EAAE;gBACF,uBAAuB,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE;aAC7C,CACF,CAAC;SACH;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK,CAAC;YACrC,YAAM,CAAC,IAAI,CACT,EAAE,OAAO,EAAE,OAAO,EAAE,EACpB,eAAe,OAAO,2CAA2C,CAClE,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;SACvE;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AA5CD,kCA4CC"}
|
|
@@ -6,9 +6,12 @@ const logger_1 = require("../../../logs/logger");
|
|
|
6
6
|
const checks_1 = require("../../checks");
|
|
7
7
|
const scm_1 = require("../../scm");
|
|
8
8
|
const processStartUpHooks = async (clientOpts, brokerClientId) => {
|
|
9
|
-
var _a;
|
|
9
|
+
var _a, _b, _c, _d, _e, _f;
|
|
10
10
|
try {
|
|
11
|
-
|
|
11
|
+
clientOpts.config.API_BASE_URL =
|
|
12
|
+
(_d = (_b = (_a = clientOpts.config.BROKER_DISPATCHER_BASE_URL) !== null && _a !== void 0 ? _a : clientOpts.config.API_BASE_URL) !== null && _b !== void 0 ? _b : (_c = clientOpts.config.BROKER_SERVER_URL) === null || _c === void 0 ? void 0 : _c.replace('//broker.', '//api.').replace('//broker2.', '//api.')) !== null && _d !== void 0 ? _d : 'https://api.snyk.io';
|
|
13
|
+
if (!clientOpts.config.brokerToken &&
|
|
14
|
+
!clientOpts.config.universalBrokerEnabled) {
|
|
12
15
|
const brokerToken = clientOpts.config.brokerToken;
|
|
13
16
|
// null, undefined, empty, etc.
|
|
14
17
|
logger_1.log.error({ brokerToken }, '[MISSING_BROKER_TOKEN] BROKER_TOKEN is required to successfully identify itself to the server');
|
|
@@ -24,22 +27,11 @@ const processStartUpHooks = async (clientOpts, brokerClientId) => {
|
|
|
24
27
|
error['code'] = 'MISSING_BROKER_SERVER_URL';
|
|
25
28
|
throw error;
|
|
26
29
|
}
|
|
27
|
-
if (!clientOpts.config.BROKER_CLIENT_URL) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
if ((0, dispatcher_1.highAvailabilityModeEnabled)(clientOpts.config)) {
|
|
33
|
-
serverId = await (0, dispatcher_1.getServerId)(clientOpts.config, brokerClientId);
|
|
34
|
-
if (serverId === null) {
|
|
35
|
-
logger_1.log.warn({}, 'could not receive server id from Broker Dispatcher');
|
|
36
|
-
serverId = '';
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
logger_1.log.info({ serverId }, 'received server id');
|
|
40
|
-
clientOpts.config.serverId = serverId;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
30
|
+
// if (!clientOpts.config.BROKER_CLIENT_URL) {
|
|
31
|
+
// const proto =
|
|
32
|
+
// !clientOpts.config.key && !clientOpts.config.cert ? 'http' : 'https';
|
|
33
|
+
// clientOpts.config.BROKER_CLIENT_URL = `${proto}://localhost:${clientOpts.port}`;
|
|
34
|
+
// }
|
|
43
35
|
let preflightCheckResults = [];
|
|
44
36
|
if ((0, checks_1.preflightChecksEnabled)(clientOpts.config)) {
|
|
45
37
|
// wrap preflight checks execution into try-catch, so the broker client
|
|
@@ -51,9 +43,48 @@ const processStartUpHooks = async (clientOpts, brokerClientId) => {
|
|
|
51
43
|
logger_1.log.error({ error }, 'failed to execute preflight checks');
|
|
52
44
|
}
|
|
53
45
|
}
|
|
46
|
+
let serverId;
|
|
47
|
+
if ((0, dispatcher_1.highAvailabilityModeEnabled)(clientOpts.config)) {
|
|
48
|
+
if (clientOpts.config.universalBrokerEnabled) {
|
|
49
|
+
for (const key in clientOpts.config.connections) {
|
|
50
|
+
serverId = await (0, dispatcher_1.getServerId)(clientOpts.config, clientOpts.config.connections[key].identifier, brokerClientId);
|
|
51
|
+
if (serverId === null) {
|
|
52
|
+
logger_1.log.warn({}, 'could not receive server id from Broker Dispatcher');
|
|
53
|
+
serverId = '';
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
logger_1.log.info({ serverId }, 'received server id');
|
|
57
|
+
clientOpts.config.connections[key].serverId = serverId;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
serverId = await (0, dispatcher_1.getServerId)(clientOpts.config, clientOpts.config.brokerToken, brokerClientId);
|
|
63
|
+
if (serverId === null) {
|
|
64
|
+
logger_1.log.warn({}, 'could not receive server id from Broker Dispatcher');
|
|
65
|
+
serverId = '';
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
logger_1.log.info({ serverId }, 'received server id');
|
|
69
|
+
clientOpts.config.serverId = serverId;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
54
73
|
if ((0, scm_1.commitSigningEnabled)(clientOpts.config)) {
|
|
55
74
|
const commitSigningRules = (0, scm_1.commitSigningFilterRules)();
|
|
56
|
-
(
|
|
75
|
+
if (clientOpts['universalBrokerEnabled']) {
|
|
76
|
+
(_e = clientOpts.filters['github'].private) === null || _e === void 0 ? void 0 : _e.push(...commitSigningRules);
|
|
77
|
+
(_f = clientOpts.filters['github-enterprise'].github.private) === null || _f === void 0 ? void 0 : _f.push(...commitSigningRules);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
if (clientOpts.filters instanceof Map) {
|
|
81
|
+
logger_1.log.error({ clientOpts }, 'Error pushing commit signing rules, unexpected filters type');
|
|
82
|
+
throw new Error('Error pushing commit signing rules, unexpected filters type');
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
clientOpts.filters.private.push(...commitSigningRules);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
57
88
|
logger_1.log.info({ enabled: true, rulesCount: commitSigningRules.length }, 'loading commit signing rules');
|
|
58
89
|
}
|
|
59
90
|
if (clientOpts.config.INSECURE_DOWNSTREAM) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processHooks.js","sourceRoot":"","sources":["../../../../../lib/client/hooks/startup/processHooks.ts"],"names":[],"mappings":";;;AAAA,iDAA4E;AAC5E,iDAAqD;AACrD,yCAA8E;AAC9E,mCAA2E;
|
|
1
|
+
{"version":3,"file":"processHooks.js","sourceRoot":"","sources":["../../../../../lib/client/hooks/startup/processHooks.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/client/index.js
CHANGED
|
@@ -16,6 +16,8 @@ const systemCheckHandler_1 = require("./routesHandler/systemCheckHandler");
|
|
|
16
16
|
const processHooks_1 = require("./hooks/startup/processHooks");
|
|
17
17
|
const forwardHttpRequestOverHttp_1 = require("../common/relay/forwardHttpRequestOverHttp");
|
|
18
18
|
const socketHelpers_1 = require("./utils/socketHelpers");
|
|
19
|
+
const filtersAsync_1 = require("../common/filter/filtersAsync");
|
|
20
|
+
const websocketConnectionMiddlewares_1 = require("./routesHandler/websocketConnectionMiddlewares");
|
|
19
21
|
process.on('uncaughtException', (error) => {
|
|
20
22
|
if (error.message == 'read ECONNRESET') {
|
|
21
23
|
logger_1.log.error({ msg: error.message, stackTrace: error.stack }, 'ECONNRESETs Catch all:', error.message);
|
|
@@ -26,40 +28,56 @@ process.on('uncaughtException', (error) => {
|
|
|
26
28
|
}
|
|
27
29
|
});
|
|
28
30
|
const main = async (clientOpts) => {
|
|
29
|
-
var _a, _b;
|
|
30
31
|
try {
|
|
31
32
|
logger_1.log.info({ version: version_1.default }, 'running in client mode');
|
|
32
33
|
const brokerClientId = (0, uuid_1.v4)();
|
|
33
34
|
logger_1.log.info({ brokerClientId }, 'generated broker client id');
|
|
34
35
|
const hookResults = await (0, processHooks_1.processStartUpHooks)(clientOpts, brokerClientId);
|
|
35
|
-
const
|
|
36
|
+
const loadedClientOpts = {
|
|
37
|
+
loadedFilters: (0, filtersAsync_1.loadAllFilters)(clientOpts.filters, clientOpts.config),
|
|
38
|
+
...clientOpts,
|
|
39
|
+
};
|
|
40
|
+
if (!loadedClientOpts.loadedFilters) {
|
|
41
|
+
logger_1.log.error({ clientOpts }, 'Unable to load filters');
|
|
42
|
+
throw new Error('Unable to load filters');
|
|
43
|
+
}
|
|
44
|
+
const globalIdentifyingMetadata = {
|
|
36
45
|
capabilities: ['post-streams'],
|
|
37
46
|
clientId: brokerClientId,
|
|
38
47
|
filters: clientOpts.filters,
|
|
39
48
|
preflightChecks: hookResults.preflightCheckResults,
|
|
40
49
|
version: version_1.default,
|
|
41
50
|
};
|
|
42
|
-
|
|
51
|
+
let websocketConnections = [];
|
|
52
|
+
if (clientOpts.config.universalBrokerEnabled) {
|
|
53
|
+
websocketConnections = (0, socket_1.createWebSockets)(loadedClientOpts, globalIdentifyingMetadata);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
websocketConnections.push((0, socket_1.createWebSocket)(loadedClientOpts, globalIdentifyingMetadata));
|
|
57
|
+
}
|
|
43
58
|
// start the local webserver to listen for relay requests
|
|
44
59
|
const { app, server } = (0, webserver_1.webserver)(clientOpts.config, clientOpts.port);
|
|
45
|
-
const httpToWsForwarder = (0, forwardHttpRequest_1.forwardHttpRequest)(
|
|
46
|
-
const httpToAPIForwarder = (0, forwardHttpRequestOverHttp_1.forwardHttpRequestOverHttp)(
|
|
60
|
+
const httpToWsForwarder = (0, forwardHttpRequest_1.forwardHttpRequest)(loadedClientOpts);
|
|
61
|
+
const httpToAPIForwarder = (0, forwardHttpRequestOverHttp_1.forwardHttpRequestOverHttp)(loadedClientOpts, clientOpts.config);
|
|
47
62
|
// IMPORTANT: defined before relay (`app.all('/*', ...`)
|
|
48
63
|
app.get('/health/checks', (0, checks_handler_1.handleChecksRoute)(clientOpts.config));
|
|
49
64
|
app.get('/health/checks/:checkId', (0, checks_handler_1.handleCheckIdsRoutes)(clientOpts.config));
|
|
50
65
|
app.get(clientOpts.config.brokerHealthcheckPath || '/healthcheck', (req, res, next) => {
|
|
51
|
-
res.locals.
|
|
66
|
+
res.locals.websocketConnections = websocketConnections;
|
|
52
67
|
next();
|
|
53
68
|
}, healthcheckHandler_1.healthCheckHandler);
|
|
69
|
+
app.get('/filters', (req, res) => {
|
|
70
|
+
res.send(loadedClientOpts.filters);
|
|
71
|
+
});
|
|
54
72
|
app.get(clientOpts.config.brokerSystemcheckPath || '/systemcheck', (req, res, next) => {
|
|
55
|
-
res.locals.clientOpts =
|
|
73
|
+
res.locals.clientOpts = loadedClientOpts;
|
|
56
74
|
next();
|
|
57
75
|
}, systemCheckHandler_1.systemCheckHandler);
|
|
58
76
|
app.post('/webhook/*', (req, res, next) => {
|
|
59
|
-
res.locals.
|
|
77
|
+
res.locals.websocketConnections = websocketConnections;
|
|
60
78
|
next();
|
|
61
|
-
}, (req, res) => {
|
|
62
|
-
if ((0, socketHelpers_1.isWebsocketConnOpen)(res.locals.
|
|
79
|
+
}, websocketConnectionMiddlewares_1.websocketConnectionSelectorMiddleware, (req, res) => {
|
|
80
|
+
if ((0, socketHelpers_1.isWebsocketConnOpen)(res.locals.websocket)) {
|
|
63
81
|
httpToWsForwarder(req, res);
|
|
64
82
|
}
|
|
65
83
|
else {
|
|
@@ -69,20 +87,26 @@ const main = async (clientOpts) => {
|
|
|
69
87
|
});
|
|
70
88
|
// relay all other URL paths
|
|
71
89
|
app.all('/*', (req, res, next) => {
|
|
72
|
-
|
|
90
|
+
// Middleware checks the request url for /webhook/scmType/ID, and from the scmType pick the relevant filter.
|
|
91
|
+
// Need to check what CRA agent requests look like so we don't mess that up.
|
|
92
|
+
// New hooks we want to inject the BROKER_CLIENT_URL with the integration ID so we can select based on the integration ID
|
|
93
|
+
// but doing so can't break the existing webhooks
|
|
94
|
+
res.locals.websocketConnections = websocketConnections;
|
|
73
95
|
next();
|
|
74
|
-
}, httpToWsForwarder);
|
|
96
|
+
}, websocketConnectionMiddlewares_1.websocketConnectionSelectorMiddleware, httpToWsForwarder);
|
|
75
97
|
return {
|
|
76
|
-
|
|
98
|
+
websocketConnections,
|
|
77
99
|
close: (done) => {
|
|
78
100
|
logger_1.log.info('client websocket is closing');
|
|
79
101
|
server.close();
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
102
|
+
for (let i = 0; i < websocketConnections.length; i++) {
|
|
103
|
+
websocketConnections[i].destroy(function () {
|
|
104
|
+
logger_1.log.info(`client websocket ${websocketConnections[i].identifier || ''} is closed`);
|
|
105
|
+
if (done) {
|
|
106
|
+
return done();
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
86
110
|
},
|
|
87
111
|
};
|
|
88
112
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/client/index.ts"],"names":[],"mappings":";;;;;;AAAA,+BAAoC;AACpC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/client/index.ts"],"names":[],"mappings":";;;;;;AAAA,+BAAoC;AACpC,qCAA6D;AAC7D,2CAA+C;AAC/C,2EAAwE;AACxE,wDAAqD;AACrD,sEAA8C;AAC9C,gEAGqC;AACrC,2EAAwE;AACxE,2EAAwE;AAExE,+DAAmE;AACnE,2FAAwF;AACxF,yDAA4D;AAC5D,gEAA+D;AAE/D,mGAAuG;AAEvG,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;IACxC,IAAI,KAAK,CAAC,OAAO,IAAI,iBAAiB,EAAE;QACtC,YAAM,CAAC,KAAK,CACV,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,EAC/C,wBAAwB,EACxB,KAAK,CAAC,OAAO,CACd,CAAC;KACH;SAAM;QACL,YAAM,CAAC,KAAK,CACV,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,EAC/C,qBAAqB,EACrB,KAAK,CAAC,OAAO,CACd,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;AACH,CAAC,CAAC,CAAC;AAEI,MAAM,IAAI,GAAG,KAAK,EAAE,UAAsB,EAAE,EAAE;IACnD,IAAI;QACF,YAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAP,iBAAO,EAAE,EAAE,wBAAwB,CAAC,CAAC;QAEnD,MAAM,cAAc,GAAG,IAAA,SAAM,GAAE,CAAC;QAChC,YAAM,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,EAAE,4BAA4B,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,MAAM,IAAA,kCAAmB,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAE1E,MAAM,gBAAgB,GAAqB;YACzC,aAAa,EAAE,IAAA,6BAAc,EAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC;YACpE,GAAG,UAAU;SACd,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE;YACnC,YAAM,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAE,wBAAwB,CAAC,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;SAC3C;QAED,MAAM,yBAAyB,GAAwB;YACrD,YAAY,EAAE,CAAC,cAAc,CAAC;YAC9B,QAAQ,EAAE,cAAc;YACxB,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,eAAe,EAAE,WAAW,CAAC,qBAAqB;YAClD,OAAO,EAAP,iBAAO;SACR,CAAC;QAEF,IAAI,oBAAoB,GAA0B,EAAE,CAAC;QACrD,IAAI,UAAU,CAAC,MAAM,CAAC,sBAAsB,EAAE;YAC5C,oBAAoB,GAAG,IAAA,yBAAgB,EACrC,gBAAgB,EAChB,yBAAyB,CAC1B,CAAC;SACH;aAAM;YACL,oBAAoB,CAAC,IAAI,CACvB,IAAA,wBAAe,EAAC,gBAAgB,EAAE,yBAAyB,CAAC,CAC7D,CAAC;SACH;QAED,yDAAyD;QACzD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAA,qBAAS,EAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAEtE,MAAM,iBAAiB,GAAG,IAAA,uCAAkB,EAAC,gBAAgB,CAAC,CAAC;QAC/D,MAAM,kBAAkB,GAAG,IAAA,uDAA0B,EACnD,gBAAgB,EAChB,UAAU,CAAC,MAAM,CAClB,CAAC;QACF,wDAAwD;QACxD,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAA,kCAAiB,EAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAChE,GAAG,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAA,qCAAoB,EAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAE5E,GAAG,CAAC,GAAG,CACL,UAAU,CAAC,MAAM,CAAC,qBAAqB,IAAI,cAAc,EACzD,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACjB,GAAG,CAAC,MAAM,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;YACvD,IAAI,EAAE,CAAC;QACT,CAAC,EACD,uCAAkB,CACnB,CAAC;QAEF,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC/B,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,GAAG,CACL,UAAU,CAAC,MAAM,CAAC,qBAAqB,IAAI,cAAc,EACzD,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACjB,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,gBAAgB,CAAC;YACzC,IAAI,EAAE,CAAC;QACT,CAAC,EACD,uCAAkB,CACnB,CAAC;QAEF,GAAG,CAAC,IAAI,CACN,YAAY,EACZ,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACjB,GAAG,CAAC,MAAM,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;YACvD,IAAI,EAAE,CAAC;QACT,CAAC,EACD,sEAAqC,EACrC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACX,IAAI,IAAA,mCAAmB,EAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;gBAC7C,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;aAC7B;iBAAM;gBACL,YAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;gBAC/D,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;aAC9B;QACH,CAAC,CACF,CAAC;QACF,4BAA4B;QAC5B,GAAG,CAAC,GAAG,CACL,IAAI,EACJ,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACjB,4GAA4G;YAC5G,4EAA4E;YAC5E,yHAAyH;YACzH,iDAAiD;YACjD,GAAG,CAAC,MAAM,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;YACvD,IAAI,EAAE,CAAC;QACT,CAAC,EACD,sEAAqC,EACrC,iBAAiB,CAClB,CAAC;QAEF,OAAO;YACL,oBAAoB;YACpB,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;gBACd,YAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBAC3C,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACpD,oBAAoB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;wBAC9B,YAAM,CAAC,IAAI,CACT,oBACE,oBAAoB,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,EACxC,YAAY,CACb,CAAC;wBACF,IAAI,IAAI,EAAE;4BACR,OAAO,IAAI,EAAE,CAAC;yBACf;oBACH,CAAC,CAAC,CAAC;iBACJ;YACH,CAAC;SACF,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,YAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,sBAAsB,CAAC,CAAC;QAC7C,MAAM,GAAG,CAAC;KACX;AACH,CAAC,CAAC;AA9HW,QAAA,IAAI,QA8Hf"}
|
|
@@ -5,22 +5,37 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.healthCheckHandler = void 0;
|
|
7
7
|
const version_1 = __importDefault(require("../../common/utils/version"));
|
|
8
|
+
const token_1 = require("../../common/utils/token");
|
|
8
9
|
const socketHelpers_1 = require("../utils/socketHelpers");
|
|
9
10
|
const healthCheckHandler =
|
|
10
|
-
// io is available in res.locals.
|
|
11
|
+
// io is available in res.locals.websocket
|
|
11
12
|
(req, res) => {
|
|
13
|
+
var _a, _b;
|
|
14
|
+
const websocketConnsArray = res.locals
|
|
15
|
+
.websocketConnections;
|
|
16
|
+
const data = [];
|
|
17
|
+
const statuses = [];
|
|
18
|
+
for (let i = 0; i < websocketConnsArray.length; i++) {
|
|
19
|
+
const isConnOpen = (0, socketHelpers_1.isWebsocketConnOpen)(websocketConnsArray[i]);
|
|
20
|
+
statuses.push(isConnOpen ? 200 : 500);
|
|
21
|
+
const tunnelData = {
|
|
22
|
+
ok: isConnOpen,
|
|
23
|
+
websocketConnectionOpen: isConnOpen,
|
|
24
|
+
brokerServerUrl: websocketConnsArray[i].url.href,
|
|
25
|
+
version: version_1.default,
|
|
26
|
+
transport: websocketConnsArray[i].socket.transport.name,
|
|
27
|
+
};
|
|
28
|
+
if (websocketConnsArray[i].identifier) {
|
|
29
|
+
tunnelData['identifier'] = (0, token_1.maskToken)((_a = websocketConnsArray[i].identifier) !== null && _a !== void 0 ? _a : '');
|
|
30
|
+
tunnelData['friendlyName'] = (_b = websocketConnsArray[i].friendlyName) !== null && _b !== void 0 ? _b : '';
|
|
31
|
+
}
|
|
32
|
+
data.push(tunnelData);
|
|
33
|
+
}
|
|
12
34
|
// healthcheck state depends on websocket connection status
|
|
13
35
|
// value of primus.Spark.OPEN means the websocket connection is open
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
ok: isConnOpen,
|
|
18
|
-
websocketConnectionOpen: isConnOpen,
|
|
19
|
-
brokerServerUrl: res.locals.io.url.href,
|
|
20
|
-
version: version_1.default,
|
|
21
|
-
transport: res.locals.io.socket.transport.name,
|
|
22
|
-
};
|
|
23
|
-
return res.status(status).json(data);
|
|
36
|
+
return res
|
|
37
|
+
.status(statuses.some((status) => status == 500) ? 500 : 200)
|
|
38
|
+
.json(data.length == 1 ? data[0] : data); // So we don't break current
|
|
24
39
|
};
|
|
25
40
|
exports.healthCheckHandler = healthCheckHandler;
|
|
26
41
|
//# sourceMappingURL=healthcheckHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"healthcheckHandler.js","sourceRoot":"","sources":["../../../../lib/client/routesHandler/healthcheckHandler.ts"],"names":[],"mappings":";;;;;;AACA,yEAAiD;
|
|
1
|
+
{"version":3,"file":"healthcheckHandler.js","sourceRoot":"","sources":["../../../../lib/client/routesHandler/healthcheckHandler.ts"],"names":[],"mappings":";;;;;;AACA,yEAAiD;AAEjD,oDAAqD;AAUrD,0DAA6D;AAEtD,MAAM,kBAAkB;AAC7B,0CAA0C;AAC1C,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;;IAC9B,MAAM,mBAAmB,GAAG,GAAG,CAAC,MAAM;SACnC,oBAA6C,CAAC;IACjD,MAAM,IAAI,GAAsB,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACnD,MAAM,UAAU,GAAG,IAAA,mCAAmB,EAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG;YACjB,EAAE,EAAE,UAAU;YACd,uBAAuB,EAAE,UAAU;YACnC,eAAe,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI;YAChD,OAAO,EAAP,iBAAO;YACP,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI;SACxD,CAAC;QACF,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE;YACrC,UAAU,CAAC,YAAY,CAAC,GAAG,IAAA,iBAAS,EAClC,MAAA,mBAAmB,CAAC,CAAC,CAAC,CAAC,UAAU,mCAAI,EAAE,CACxC,CAAC;YACF,UAAU,CAAC,cAAc,CAAC,GAAG,MAAA,mBAAmB,CAAC,CAAC,CAAC,CAAC,YAAY,mCAAI,EAAE,CAAC;SACxE;QACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACvB;IACD,2DAA2D;IAC3D,oEAAoE;IACpE,OAAO,GAAG;SACP,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;SAC5D,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,4BAA4B;AAC1E,CAAC,CAAC;AA9BS,QAAA,kBAAkB,sBA8B3B"}
|
|
@@ -3,45 +3,71 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.systemCheckHandler = void 0;
|
|
4
4
|
const credentials_1 = require("../utils/credentials");
|
|
5
5
|
const logger_1 = require("../../logs/logger");
|
|
6
|
+
const config_1 = require("../../common/config/config");
|
|
7
|
+
const connectionValidation_1 = require("../utils/connectionValidation");
|
|
8
|
+
const universal_1 = require("../../common/config/universal");
|
|
6
9
|
const systemCheckHandler = async (req, res) => {
|
|
7
10
|
// Systemcheck is the broker client's ability to assert the network
|
|
8
11
|
// reachability and some correctness of credentials for the service
|
|
9
12
|
// being proxied by the broker client.
|
|
10
13
|
const clientOpts = res.locals.clientOpts;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
validationResults.push(
|
|
29
|
-
errorOccurred = err;
|
|
30
|
-
logger_1.log.info('Credentials checked');
|
|
14
|
+
if (clientOpts.config.universalBrokerEnabled) {
|
|
15
|
+
const configForAllConnections = (0, universal_1.getConfigForConnections)();
|
|
16
|
+
const validationResults = [];
|
|
17
|
+
let isValidationPassing = true;
|
|
18
|
+
for (const [connectionName, config] of configForAllConnections.entries()) {
|
|
19
|
+
config.validations = (0, config_1.expandConfigObjectRecursively)(config.validations, config);
|
|
20
|
+
logger_1.log.info({ connectionName }, '[System Check] Validating connection');
|
|
21
|
+
const { passing, data } = await (0, connectionValidation_1.validateConnection)(config);
|
|
22
|
+
const result = {
|
|
23
|
+
connectionName: connectionName,
|
|
24
|
+
validated: passing,
|
|
25
|
+
results: data,
|
|
26
|
+
};
|
|
27
|
+
if (!passing) {
|
|
28
|
+
result['message'] = `Validation failed, please review connection details for ${connectionName}`;
|
|
29
|
+
isValidationPassing = false;
|
|
30
|
+
}
|
|
31
|
+
validationResults.push(result);
|
|
31
32
|
}
|
|
33
|
+
res.status(isValidationPassing ? 200 : 500).send(validationResults);
|
|
32
34
|
}
|
|
33
35
|
else {
|
|
34
|
-
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
36
|
+
const brokerClientValidationMethod = clientOpts.config.brokerClientValidationMethod || 'GET';
|
|
37
|
+
const brokerClientValidationTimeoutMs = clientOpts.config.brokerClientValidationTimeoutMs || 5000;
|
|
38
|
+
// set auth header according to config
|
|
39
|
+
const { auths, rawCreds } = (0, credentials_1.loadCredentialsFromConfig)(clientOpts.config);
|
|
40
|
+
// make the internal validation request
|
|
41
|
+
const validationResults = [];
|
|
42
|
+
let errorOccurred = true;
|
|
43
|
+
if (auths.length > 0) {
|
|
44
|
+
for (let i = 0; i < auths.length; i++) {
|
|
45
|
+
logger_1.log.info(`Checking if credentials at index ${i} are valid`);
|
|
46
|
+
const auth = auths[i];
|
|
47
|
+
const rawCred = rawCreds[i];
|
|
48
|
+
const { data, errorOccurred: err } = await (0, credentials_1.checkCredentials)(auth, clientOpts.config, brokerClientValidationMethod, brokerClientValidationTimeoutMs);
|
|
49
|
+
data['maskedCredentials'] =
|
|
50
|
+
rawCred.length <= 6
|
|
51
|
+
? '***'
|
|
52
|
+
: `${rawCred.substring(0, 3)}***${rawCred.substring(rawCred.length - 3)}`;
|
|
53
|
+
validationResults.push(data);
|
|
54
|
+
errorOccurred = err;
|
|
55
|
+
logger_1.log.info('Credentials checked');
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
logger_1.log.info('No credentials specified - checking if target can be accessed without credentials');
|
|
60
|
+
const { data, errorOccurred: err } = await (0, credentials_1.checkCredentials)(null, clientOpts.config, brokerClientValidationMethod, brokerClientValidationTimeoutMs);
|
|
61
|
+
data['maskedCredentials'] = null;
|
|
62
|
+
validationResults.push(data);
|
|
63
|
+
errorOccurred = err;
|
|
64
|
+
}
|
|
65
|
+
if (errorOccurred) {
|
|
66
|
+
return res.status(500).json(validationResults);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
return res.status(200).json(validationResults);
|
|
70
|
+
}
|
|
45
71
|
}
|
|
46
72
|
};
|
|
47
73
|
exports.systemCheckHandler = systemCheckHandler;
|