diff --git a/lib/http-routes/api/create-call.js b/lib/http-routes/api/create-call.js index d8db2c55..3e72b3e4 100644 --- a/lib/http-routes/api/create-call.js +++ b/lib/http-routes/api/create-call.js @@ -3,7 +3,7 @@ const makeTask = require('../../tasks/make_task'); const RestCallSession = require('../../session/rest-call-session'); const CallInfo = require('../../session/call-info'); const {CallDirection, CallStatus} = require('../../utils/constants'); -const uuidv4 = require('uuid-random'); +const crypto = require('crypto'); const SipError = require('drachtio-srf').SipError; const { validationResult, body } = require('express-validator'); const { validate } = require('@jambonz/verb-specifications'); @@ -80,7 +80,7 @@ router.post('/', const {lookupTeamsByAccount, lookupAccountBySid} = srf.locals.dbHelpers; const account = await lookupAccountBySid(req.body.account_sid); const accountInfo = await lookupAccountDetails(req.body.account_sid); - const callSid = uuidv4(); + const callSid = crypto.randomUUID(); const application = req.body.application_sid ? await lookupAppBySid(req.body.application_sid) : null; const record_all_calls = account.record_all_calls || (application && application.record_all_calls); const recordOutputFormat = account.record_format || 'mp3'; diff --git a/lib/middleware.js b/lib/middleware.js index 72774c50..781f42d1 100644 --- a/lib/middleware.js +++ b/lib/middleware.js @@ -1,4 +1,4 @@ -const uuidv4 = require('uuid-random'); +const crypto = require('crypto'); const {CallDirection, AllowedSipRecVerbs, WS_CLOSE_CODES} = require('./utils/constants'); const {parseSiprecPayload} = require('./utils/siprec-utils'); const CallInfo = require('./session/call-info'); @@ -46,7 +46,7 @@ module.exports = function(srf, logger) { logger.info('getAccountDetails - rejecting call due to missing X-Account-Sid header'); return res.send(500); } - const callSid = req.has('X-Retain-Call-Sid') ? req.get('X-Retain-Call-Sid') : uuidv4(); + const callSid = req.has('X-Retain-Call-Sid') ? req.get('X-Retain-Call-Sid') : crypto.randomUUID(); const account_sid = req.get('X-Account-Sid'); req.locals = {callSid, account_sid, callId}; diff --git a/lib/session/call-info.js b/lib/session/call-info.js index ceec0925..44e73f3d 100644 --- a/lib/session/call-info.js +++ b/lib/session/call-info.js @@ -1,6 +1,6 @@ const {CallDirection, CallStatus} = require('../utils/constants'); const parseUri = require('drachtio-srf').parseUri; -const uuidv4 = require('uuid-random'); +const crypto = require('crypto'); const {JAMBONES_API_BASE_URL} = require('../config'); /** * @classdesc Represents the common information for all calls @@ -57,7 +57,7 @@ class CallInfo { // outbound call that is a child of an existing call const {req, parentCallInfo, to, callSid} = opts; srf = req.srf; - this.callSid = callSid || uuidv4(); + this.callSid = callSid || crypto.randomUUID(); this.parentCallSid = parentCallInfo.callSid; this.accountSid = parentCallInfo.accountSid; this.applicationSid = parentCallInfo.applicationSid; diff --git a/lib/session/call-session.js b/lib/session/call-session.js index 50ef3005..bc7c83f0 100644 --- a/lib/session/call-session.js +++ b/lib/session/call-session.js @@ -1187,7 +1187,8 @@ class CallSession extends Emitter { const task = this.tasks.shift(); this.isCurTaskPlay = TaskName.Play === task.name; this.taskInProgress = task; - this.logger.info(`CallSession:exec starting task #${stackNum}:${taskNum}: ${task.name} : {task.taskId}`); + this.logger.info( + `CallSession:exec starting task #${stackNum}:${taskNum}: ${task.name} (task id: ${task.taskId})`); this._notifyTaskStatus(task, {event: 'starting'}); // Register verbhook span wait for end task.on('VerbHookSpanWaitForEnd', ({span}) => { diff --git a/lib/tasks/message.js b/lib/tasks/message.js index d38d38cd..be0cf200 100644 --- a/lib/tasks/message.js +++ b/lib/tasks/message.js @@ -1,7 +1,7 @@ const Task = require('./task'); const {TaskName, TaskPreconditions} = require('../utils/constants'); const bent = require('bent'); -const uuidv4 = require('uuid-random'); +const crypto = require('crypto'); const {K8S} = require('../config'); class TaskMessage extends Task { constructor(logger, opts) { @@ -9,7 +9,7 @@ class TaskMessage extends Task { this.preconditions = TaskPreconditions.None; this.payload = { - message_sid: this.data.message_sid || uuidv4(), + message_sid: this.data.message_sid || crypto.randomUUID(), carrier: this.data.carrier, to: this.data.to, from: this.data.from, diff --git a/lib/tasks/task.js b/lib/tasks/task.js index 4f9bda9b..8e188797 100644 --- a/lib/tasks/task.js +++ b/lib/tasks/task.js @@ -1,5 +1,5 @@ const Emitter = require('events'); -const uuidv4 = require('uuid-random'); +const crypto = require('crypto'); const {TaskPreconditions} = require('../utils/constants'); const { normalizeJambones } = require('@jambonz/verb-specifications'); const WsRequestor = require('../utils/ws-requestor'); @@ -19,7 +19,7 @@ class Task extends Emitter { this.data = data; this.actionHook = this.data.actionHook; this.id = data.id; - this.taskId = uuidv4(); + this.taskId = crypto.randomUUID(); this._killInProgress = false; this._completionPromise = new Promise((resolve) => this._completionResolver = resolve); @@ -273,7 +273,7 @@ class Task extends Emitter { } async transferCallToFeatureServer(cs, sipAddress, opts) { - const uuid = uuidv4(); + const uuid = crypto.randomUUID(); const {addKey} = cs.srf.locals.dbHelpers; const obj = Object.assign({}, cs.application); delete obj.requestor; diff --git a/lib/utils/place-outdial.js b/lib/utils/place-outdial.js index 59414320..b4649b90 100644 --- a/lib/utils/place-outdial.js +++ b/lib/utils/place-outdial.js @@ -12,7 +12,7 @@ const deepcopy = require('deepcopy'); const moment = require('moment'); const stripCodecs = require('./strip-ancillary-codecs'); const RootSpan = require('./call-tracer'); -const uuidv4 = require('uuid-random'); +const crypto = require('crypto'); const HttpRequestor = require('./http-requestor'); const WsRequestor = require('./ws-requestor'); const {makeOpusFirst, removeVideoSdp} = require('./sdp-utils'); @@ -47,7 +47,7 @@ class SingleDialer extends Emitter { this.callGone = false; - this.callSid = uuidv4(); + this.callSid = crypto.randomUUID(); this.dialTask = dialTask; this.onHoldMusic = onHoldMusic; diff --git a/lib/utils/sbc-pinger.js b/lib/utils/sbc-pinger.js index f66e82f1..729dcb5c 100644 --- a/lib/utils/sbc-pinger.js +++ b/lib/utils/sbc-pinger.js @@ -1,5 +1,5 @@ const assert = require('assert'); -const uuidv4 = require('uuid-random'); +const crypto = require('crypto'); const {LifeCycleEvents, FS_UUID_SET_NAME} = require('./constants'); const Emitter = require('events'); const debug = require('debug')('jambonz:feature-server'); @@ -130,7 +130,7 @@ module.exports = (logger) => { logger.info('disabling OPTIONS pings since we are running as a kubernetes service'); const {srf} = require('../..'); const {addToSet} = srf.locals.dbHelpers; - const uuid = srf.locals.fsUUID = uuidv4(); + const uuid = srf.locals.fsUUID = crypto.randomUUID(); /* in case redis is restarted, re-insert our key every so often */ setInterval(() => { diff --git a/lib/utils/siprec-utils.js b/lib/utils/siprec-utils.js index bb73cebd..53c943c0 100644 --- a/lib/utils/siprec-utils.js +++ b/lib/utils/siprec-utils.js @@ -1,5 +1,5 @@ const xmlParser = require('xml2js').parseString; -const uuidv4 = require('uuid-random'); +const crypto = require('crypto'); const parseUri = require('drachtio-srf').parseUri; const transform = require('sdp-transform'); const debug = require('debug')('jambonz:feature-server'); @@ -52,7 +52,7 @@ const parseSiprecPayload = (req, logger) => { const arr = /^([^]+)(m=[^]+?)(m=[^]+?)$/.exec(sdp); opts.sdp1 = `${arr[1]}${arr[2]}`; opts.sdp2 = `${arr[1]}${arr[3]}\r\n`; - opts.sessionId = uuidv4(); + opts.sessionId = crypto.randomUUID(); logger.info({ payload: req.payload }, 'SIPREC payload with no metadata (e.g. Cisco NBR)'); resolve(opts); } else if (!sdp || !meta) { @@ -64,7 +64,7 @@ const parseSiprecPayload = (req, logger) => { if (err) { throw err; } opts.recordingData = result ; - opts.sessionId = uuidv4() ; + opts.sessionId = crypto.randomUUID(); const arr = /^([^]+)(m=[^]+?)(m=[^]+?)$/.exec(sdp) ; opts.sdp1 = `${arr[1]}${arr[2]}` ; diff --git a/package-lock.json b/package-lock.json index 30778896..0e04fb86 100644 --- a/package-lock.json +++ b/package-lock.json @@ -46,7 +46,6 @@ "sinon": "^17.0.1", "to-snake-case": "^1.0.0", "undici": "^7.5.0", - "uuid-random": "^1.3.2", "verify-aws-sns-signature": "^0.1.0", "ws": "^8.18.0", "xml2js": "^0.6.2" diff --git a/package.json b/package.json index 389cd5db..1d7a5474 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,6 @@ "sinon": "^17.0.1", "to-snake-case": "^1.0.0", "undici": "^7.5.0", - "uuid-random": "^1.3.2", "verify-aws-sns-signature": "^0.1.0", "ws": "^8.18.0", "xml2js": "^0.6.2"