diff --git a/package-lock.json b/package-lock.json index 5a5d4b0..9a4977e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,6 +28,7 @@ "rpki-validator": "^2.7.4", "semver": "^7.3.5", "syslog-client": "^1.1.1", + "uuid": "^8.3.2", "ws": "^8.2.3", "yargs": "^17.2.1" }, @@ -6112,6 +6113,15 @@ "semver": "bin/semver.js" } }, + "node_modules/restify/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -7010,12 +7020,11 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "bin": { - "uuid": "bin/uuid" + "uuid": "dist/bin/uuid" } }, "node_modules/v8flags": { @@ -11780,6 +11789,11 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" } } }, @@ -12518,9 +12532,9 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, "v8flags": { "version": "3.2.0", diff --git a/package.json b/package.json index 0c4244a..eb24403 100644 --- a/package.json +++ b/package.json @@ -77,6 +77,7 @@ "rpki-validator": "^2.7.4", "semver": "^7.3.5", "syslog-client": "^1.1.1", + "uuid": "^8.3.2", "ws": "^8.2.3", "yargs": "^17.2.1" }, diff --git a/src/connectors/connectorRIS.js b/src/connectors/connectorRIS.js index bf2ec35..acb7673 100644 --- a/src/connectors/connectorRIS.js +++ b/src/connectors/connectorRIS.js @@ -49,7 +49,8 @@ export default class ConnectorRIS extends Connector { this.url = brembo.build(this.params.url, { params: { - client: env.clientId + client: env.clientId, + instance: env.instanceId } }); if (this.environment !== "research") { // The canary feature may impact performance if you are planning to get all the possible updates of RIS diff --git a/src/env.js b/src/env.js index f828bdd..bdcd13e 100644 --- a/src/env.js +++ b/src/env.js @@ -39,6 +39,7 @@ import url from 'url'; import RpkiUtils from './utils/rpkiUtils'; import ConfigYml from './config/configYml'; import Config from "./config/config"; +import { v4 as uuidv4 } from 'uuid'; const configConnector = new (global.EXTERNAL_CONFIG_CONNECTOR || ConfigYml); const vector = { @@ -192,5 +193,6 @@ vector.config = config; vector.logger = wlogger; vector.pubSub = new PubSub(); vector.rpki = new RpkiUtils(vector); +vector.instanceId = uuidv4(); module.exports = vector; diff --git a/src/utils/WebSocket.js b/src/utils/WebSocket.js index 1f0cf5a..8f58c99 100644 --- a/src/utils/WebSocket.js +++ b/src/utils/WebSocket.js @@ -1,5 +1,7 @@ import _ws from "ws"; import PubSub from "../utils/pubSub"; +import brembo from "brembo"; +import { v4 as uuidv4 } from 'uuid'; export default class WebSocket { constructor(host, options) { @@ -53,7 +55,14 @@ export default class WebSocket { }; _connect = () => { - this.ws = new _ws(this.host, this.options); + const url = brembo.build(this.host.split("?")[0], { + params: { + ...brembo.parse(this.host).params, + connection: uuidv4() + } + }); + + this.ws = new _ws(url, this.options); this.ws.on('message', (data) => { this.pubsub.publish("message", data);