From c3238b153ca5c2f1787583295ec50ef172a55073 Mon Sep 17 00:00:00 2001
From: Adhidarma Hadiwinoto <me@adhisimon.org>
Date: Thu, 5 Dec 2019 16:19:38 +0700
Subject: [PATCH] Ignore expired

---
 lib/apiserver/handler/on-received.js | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/lib/apiserver/handler/on-received.js b/lib/apiserver/handler/on-received.js
index 12bb6ef..a681b7d 100644
--- a/lib/apiserver/handler/on-received.js
+++ b/lib/apiserver/handler/on-received.js
@@ -1,3 +1,4 @@
+const moment = require('ts');
 const config = require('komodo-sdk/config');
 const logger = require('komodo-sdk/logger');
 
@@ -7,11 +8,28 @@ const modems = require('../../modems');
 module.exports = (req, res) => {
     res.end('OK');
 
+    const {
+        msg, msisdn, smsc, ts,
+    } = req.query;
+
+    const sentTime = moment(ts, 'YYYY-MM-DD HH:mm:ss');
+    const messageAgeInSeconds = Math.round(Number(new Date() - sentTime) / 1000);
+    const maxAgeInSeconds = 300;
+
+    if (messageAgeInSeconds > maxAgeInSeconds) {
+        logger.warn('ON-RECEIVED: Got expired message from EVO-CP', {
+            qs: req.query,
+            messageAgeInSeconds,
+            maxAgeInSeconds,
+        });
+
+        return;
+    }
+
     logger.info('ON-RECEIVED: Got message from EVO-CP', {
         qs: req.query,
     });
 
-    const { msg, msisdn, smsc } = req.query;
     const modem = modems.modemsDictionary[smsc] || {};
 
     const doNotForwardToCore = (msisdn.search(/(\+)*62/) !== 0) || (msisdn.length <= 8);
-- 
1.9.0