From 83750044c5506fa6be3fd5b389b520067697cb7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Majdand=C5=BEi=C4=87?= Date: Thu, 9 Nov 2023 14:50:56 +0100 Subject: [PATCH] Implement random smppid generation --- center.js | 13 ++++++++++--- cliOptions.js | 6 ++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/center.js b/center.js index 007713b..3e14e02 100644 --- a/center.js +++ b/center.js @@ -5,6 +5,7 @@ const NanoTimer = require("nanotimer"); const { createBaseLogger, createSessionLogger } = require("./logger"); const { verifyDefaults, verifyExists } = require("./utils"); const { centerOptions } = require("./cliOptions"); +const crypto = require("crypto"); const logger = createBaseLogger(); const options = commandLineArgs(centerOptions); @@ -121,7 +122,13 @@ const server = smpp.createServer( sessionLogger.info("Generating DR for incoming submit_sm"); let response = pdu.response(); - response.message_id = (messageid++).toString(16); + + let smppid = messageid++; + if (options.randid) { + smppid = crypto.randomBytes(12).toString("hex"); + } + + response.message_id = smppid.toString(16); session.send(response); let drMessage = ""; @@ -143,8 +150,8 @@ const server = smpp.createServer( drMessage += "text:"; const DRPdu = { - source_addr: pdu.source_addr, - destination_addr: pdu.destination_addr, + source_addr: pdu.destination_addr, + destination_addr: pdu.source_addr, short_message: drMessage, esm_class: 4, }; diff --git a/cliOptions.js b/cliOptions.js index 9d6fc3f..79c2c96 100644 --- a/cliOptions.js +++ b/cliOptions.js @@ -58,6 +58,12 @@ const centerOptions = [ { name: "systemid", alias: "s", type: String, description: "SMPP related login info." }, { name: "password", alias: "w", type: String, description: "SMPP related login info." }, { name: "dr", type: Boolean, description: "Whether or not to send Delivery Reports.", defaultOption: false }, + { + name: "randid", + type: Boolean, + description: "SMPP ID generation is entirely random instead of sequential.", + defaultOption: false, + }, { name: "sessions", type: Number,