65 lines
1.7 KiB
JavaScript
65 lines
1.7 KiB
JavaScript
const smpp = require("smpp");
|
|
|
|
const PORT = 2775;
|
|
|
|
let messageIdIterator = Math.floor(Math.random() * 1_000_000);
|
|
console.log(`Using iterator: ${messageIdIterator}`);
|
|
|
|
const server = smpp.createServer(
|
|
{
|
|
debug: false,
|
|
},
|
|
function (session) {
|
|
session.on("error", function (err) {
|
|
console.error(err);
|
|
});
|
|
session.on("bind_transceiver", function (pdu) {
|
|
console.log("Client connected");
|
|
session.send(pdu.response());
|
|
});
|
|
session.on("enquire_link", function (pdu) {
|
|
session.send(pdu.response());
|
|
});
|
|
session.on("submit_sm", async function (pdu) {
|
|
console.log(new Date().toISOString() + " Incoming submit_sm");
|
|
console.log(pdu);
|
|
let response = pdu.response();
|
|
response.message_id = (messageIdIterator++).toString(16);
|
|
session.send(response);
|
|
|
|
let drMessage = "";
|
|
let date = new Date()
|
|
.toISOString()
|
|
.replace(/T/, "")
|
|
.replace(/\..+/, "")
|
|
.replace(/-/g, "")
|
|
.replace(/:/g, "")
|
|
.substring(2, 12);
|
|
|
|
drMessage += "id:" + response.message_id + " ";
|
|
drMessage += "sub:001 ";
|
|
drMessage += "dlvrd:001 ";
|
|
drMessage += "submit date:" + date + " ";
|
|
drMessage += "done date:" + date + " ";
|
|
drMessage += "stat:DELIVRD ";
|
|
drMessage += "err:000 ";
|
|
drMessage += "text:";
|
|
|
|
setTimeout(() => {
|
|
console.log(new Date().toISOString() + " Sending DR");
|
|
const DRPdu = {
|
|
source_addr: pdu.source_addr,
|
|
destination_addr: pdu.destination_addr,
|
|
short_message: drMessage,
|
|
esm_class: 4,
|
|
};
|
|
console.log(DRPdu);
|
|
session.deliver_sm(DRPdu);
|
|
}, 2 * 60 * 1000);
|
|
});
|
|
}
|
|
);
|
|
|
|
server.listen(PORT);
|
|
console.log("Server started");
|