fix logging in start task msg (#1202)

* fix logging in start task msg

* generate uuids using native crypto lib
This commit is contained in:
Dave Horton
2025-05-16 16:54:25 -04:00
committed by GitHub
parent c1cb57c3f6
commit 76df58bfc2
11 changed files with 20 additions and 21 deletions

View File

@@ -3,7 +3,7 @@ const makeTask = require('../../tasks/make_task');
const RestCallSession = require('../../session/rest-call-session'); const RestCallSession = require('../../session/rest-call-session');
const CallInfo = require('../../session/call-info'); const CallInfo = require('../../session/call-info');
const {CallDirection, CallStatus} = require('../../utils/constants'); const {CallDirection, CallStatus} = require('../../utils/constants');
const uuidv4 = require('uuid-random'); const crypto = require('crypto');
const SipError = require('drachtio-srf').SipError; const SipError = require('drachtio-srf').SipError;
const { validationResult, body } = require('express-validator'); const { validationResult, body } = require('express-validator');
const { validate } = require('@jambonz/verb-specifications'); const { validate } = require('@jambonz/verb-specifications');
@@ -80,7 +80,7 @@ router.post('/',
const {lookupTeamsByAccount, lookupAccountBySid} = srf.locals.dbHelpers; const {lookupTeamsByAccount, lookupAccountBySid} = srf.locals.dbHelpers;
const account = await lookupAccountBySid(req.body.account_sid); const account = await lookupAccountBySid(req.body.account_sid);
const accountInfo = await lookupAccountDetails(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 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 record_all_calls = account.record_all_calls || (application && application.record_all_calls);
const recordOutputFormat = account.record_format || 'mp3'; const recordOutputFormat = account.record_format || 'mp3';

View File

@@ -1,4 +1,4 @@
const uuidv4 = require('uuid-random'); const crypto = require('crypto');
const {CallDirection, AllowedSipRecVerbs, WS_CLOSE_CODES} = require('./utils/constants'); const {CallDirection, AllowedSipRecVerbs, WS_CLOSE_CODES} = require('./utils/constants');
const {parseSiprecPayload} = require('./utils/siprec-utils'); const {parseSiprecPayload} = require('./utils/siprec-utils');
const CallInfo = require('./session/call-info'); 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'); logger.info('getAccountDetails - rejecting call due to missing X-Account-Sid header');
return res.send(500); 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'); const account_sid = req.get('X-Account-Sid');
req.locals = {callSid, account_sid, callId}; req.locals = {callSid, account_sid, callId};

View File

@@ -1,6 +1,6 @@
const {CallDirection, CallStatus} = require('../utils/constants'); const {CallDirection, CallStatus} = require('../utils/constants');
const parseUri = require('drachtio-srf').parseUri; const parseUri = require('drachtio-srf').parseUri;
const uuidv4 = require('uuid-random'); const crypto = require('crypto');
const {JAMBONES_API_BASE_URL} = require('../config'); const {JAMBONES_API_BASE_URL} = require('../config');
/** /**
* @classdesc Represents the common information for all calls * @classdesc Represents the common information for all calls
@@ -57,7 +57,7 @@ class CallInfo {
// outbound call that is a child of an existing call // outbound call that is a child of an existing call
const {req, parentCallInfo, to, callSid} = opts; const {req, parentCallInfo, to, callSid} = opts;
srf = req.srf; srf = req.srf;
this.callSid = callSid || uuidv4(); this.callSid = callSid || crypto.randomUUID();
this.parentCallSid = parentCallInfo.callSid; this.parentCallSid = parentCallInfo.callSid;
this.accountSid = parentCallInfo.accountSid; this.accountSid = parentCallInfo.accountSid;
this.applicationSid = parentCallInfo.applicationSid; this.applicationSid = parentCallInfo.applicationSid;

View File

@@ -1187,7 +1187,8 @@ class CallSession extends Emitter {
const task = this.tasks.shift(); const task = this.tasks.shift();
this.isCurTaskPlay = TaskName.Play === task.name; this.isCurTaskPlay = TaskName.Play === task.name;
this.taskInProgress = task; 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'}); this._notifyTaskStatus(task, {event: 'starting'});
// Register verbhook span wait for end // Register verbhook span wait for end
task.on('VerbHookSpanWaitForEnd', ({span}) => { task.on('VerbHookSpanWaitForEnd', ({span}) => {

View File

@@ -1,7 +1,7 @@
const Task = require('./task'); const Task = require('./task');
const {TaskName, TaskPreconditions} = require('../utils/constants'); const {TaskName, TaskPreconditions} = require('../utils/constants');
const bent = require('bent'); const bent = require('bent');
const uuidv4 = require('uuid-random'); const crypto = require('crypto');
const {K8S} = require('../config'); const {K8S} = require('../config');
class TaskMessage extends Task { class TaskMessage extends Task {
constructor(logger, opts) { constructor(logger, opts) {
@@ -9,7 +9,7 @@ class TaskMessage extends Task {
this.preconditions = TaskPreconditions.None; this.preconditions = TaskPreconditions.None;
this.payload = { this.payload = {
message_sid: this.data.message_sid || uuidv4(), message_sid: this.data.message_sid || crypto.randomUUID(),
carrier: this.data.carrier, carrier: this.data.carrier,
to: this.data.to, to: this.data.to,
from: this.data.from, from: this.data.from,

View File

@@ -1,5 +1,5 @@
const Emitter = require('events'); const Emitter = require('events');
const uuidv4 = require('uuid-random'); const crypto = require('crypto');
const {TaskPreconditions} = require('../utils/constants'); const {TaskPreconditions} = require('../utils/constants');
const { normalizeJambones } = require('@jambonz/verb-specifications'); const { normalizeJambones } = require('@jambonz/verb-specifications');
const WsRequestor = require('../utils/ws-requestor'); const WsRequestor = require('../utils/ws-requestor');
@@ -19,7 +19,7 @@ class Task extends Emitter {
this.data = data; this.data = data;
this.actionHook = this.data.actionHook; this.actionHook = this.data.actionHook;
this.id = data.id; this.id = data.id;
this.taskId = uuidv4(); this.taskId = crypto.randomUUID();
this._killInProgress = false; this._killInProgress = false;
this._completionPromise = new Promise((resolve) => this._completionResolver = resolve); this._completionPromise = new Promise((resolve) => this._completionResolver = resolve);
@@ -273,7 +273,7 @@ class Task extends Emitter {
} }
async transferCallToFeatureServer(cs, sipAddress, opts) { async transferCallToFeatureServer(cs, sipAddress, opts) {
const uuid = uuidv4(); const uuid = crypto.randomUUID();
const {addKey} = cs.srf.locals.dbHelpers; const {addKey} = cs.srf.locals.dbHelpers;
const obj = Object.assign({}, cs.application); const obj = Object.assign({}, cs.application);
delete obj.requestor; delete obj.requestor;

View File

@@ -12,7 +12,7 @@ const deepcopy = require('deepcopy');
const moment = require('moment'); const moment = require('moment');
const stripCodecs = require('./strip-ancillary-codecs'); const stripCodecs = require('./strip-ancillary-codecs');
const RootSpan = require('./call-tracer'); const RootSpan = require('./call-tracer');
const uuidv4 = require('uuid-random'); const crypto = require('crypto');
const HttpRequestor = require('./http-requestor'); const HttpRequestor = require('./http-requestor');
const WsRequestor = require('./ws-requestor'); const WsRequestor = require('./ws-requestor');
const {makeOpusFirst, removeVideoSdp} = require('./sdp-utils'); const {makeOpusFirst, removeVideoSdp} = require('./sdp-utils');
@@ -47,7 +47,7 @@ class SingleDialer extends Emitter {
this.callGone = false; this.callGone = false;
this.callSid = uuidv4(); this.callSid = crypto.randomUUID();
this.dialTask = dialTask; this.dialTask = dialTask;
this.onHoldMusic = onHoldMusic; this.onHoldMusic = onHoldMusic;

View File

@@ -1,5 +1,5 @@
const assert = require('assert'); const assert = require('assert');
const uuidv4 = require('uuid-random'); const crypto = require('crypto');
const {LifeCycleEvents, FS_UUID_SET_NAME} = require('./constants'); const {LifeCycleEvents, FS_UUID_SET_NAME} = require('./constants');
const Emitter = require('events'); const Emitter = require('events');
const debug = require('debug')('jambonz:feature-server'); 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'); logger.info('disabling OPTIONS pings since we are running as a kubernetes service');
const {srf} = require('../..'); const {srf} = require('../..');
const {addToSet} = srf.locals.dbHelpers; 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 */ /* in case redis is restarted, re-insert our key every so often */
setInterval(() => { setInterval(() => {

View File

@@ -1,5 +1,5 @@
const xmlParser = require('xml2js').parseString; const xmlParser = require('xml2js').parseString;
const uuidv4 = require('uuid-random'); const crypto = require('crypto');
const parseUri = require('drachtio-srf').parseUri; const parseUri = require('drachtio-srf').parseUri;
const transform = require('sdp-transform'); const transform = require('sdp-transform');
const debug = require('debug')('jambonz:feature-server'); const debug = require('debug')('jambonz:feature-server');
@@ -52,7 +52,7 @@ const parseSiprecPayload = (req, logger) => {
const arr = /^([^]+)(m=[^]+?)(m=[^]+?)$/.exec(sdp); const arr = /^([^]+)(m=[^]+?)(m=[^]+?)$/.exec(sdp);
opts.sdp1 = `${arr[1]}${arr[2]}`; opts.sdp1 = `${arr[1]}${arr[2]}`;
opts.sdp2 = `${arr[1]}${arr[3]}\r\n`; 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)'); logger.info({ payload: req.payload }, 'SIPREC payload with no metadata (e.g. Cisco NBR)');
resolve(opts); resolve(opts);
} else if (!sdp || !meta) { } else if (!sdp || !meta) {
@@ -64,7 +64,7 @@ const parseSiprecPayload = (req, logger) => {
if (err) { throw err; } if (err) { throw err; }
opts.recordingData = result ; opts.recordingData = result ;
opts.sessionId = uuidv4() ; opts.sessionId = crypto.randomUUID();
const arr = /^([^]+)(m=[^]+?)(m=[^]+?)$/.exec(sdp) ; const arr = /^([^]+)(m=[^]+?)(m=[^]+?)$/.exec(sdp) ;
opts.sdp1 = `${arr[1]}${arr[2]}` ; opts.sdp1 = `${arr[1]}${arr[2]}` ;

1
package-lock.json generated
View File

@@ -46,7 +46,6 @@
"sinon": "^17.0.1", "sinon": "^17.0.1",
"to-snake-case": "^1.0.0", "to-snake-case": "^1.0.0",
"undici": "^7.5.0", "undici": "^7.5.0",
"uuid-random": "^1.3.2",
"verify-aws-sns-signature": "^0.1.0", "verify-aws-sns-signature": "^0.1.0",
"ws": "^8.18.0", "ws": "^8.18.0",
"xml2js": "^0.6.2" "xml2js": "^0.6.2"

View File

@@ -62,7 +62,6 @@
"sinon": "^17.0.1", "sinon": "^17.0.1",
"to-snake-case": "^1.0.0", "to-snake-case": "^1.0.0",
"undici": "^7.5.0", "undici": "^7.5.0",
"uuid-random": "^1.3.2",
"verify-aws-sns-signature": "^0.1.0", "verify-aws-sns-signature": "^0.1.0",
"ws": "^8.18.0", "ws": "^8.18.0",
"xml2js": "^0.6.2" "xml2js": "^0.6.2"