From 9b38a77f17ba6bae85858487ae4473dbf59f8e33 Mon Sep 17 00:00:00 2001
From: Adhidarma Hadiwinoto <me@adhisimon.org>
Date: Mon, 19 Aug 2019 17:43:30 +0700
Subject: [PATCH] MODEM-CHOOSER new orders.

- by prefix
- unknown prefix
- last seen
- default
---
 config.sample.json   |  5 ++---
 lib/modem-chooser.js | 12 +++++++++---
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/config.sample.json b/config.sample.json
index 6dd0940..bcb0619 100644
--- a/config.sample.json
+++ b/config.sample.json
@@ -38,14 +38,13 @@
     "imsi_senders": {
         "prefix_names": {
             "TELKOMSEL": [
-                "510890944235402"
             ],
             "XL": [
-                "510890944262917"
             ]
         },
+        "unknown_prefix": [
+        ],
         "default": [
-            "510890944235513"
         ]
     },
 
diff --git a/lib/modem-chooser.js b/lib/modem-chooser.js
index 817c072..b7e8aa4 100644
--- a/lib/modem-chooser.js
+++ b/lib/modem-chooser.js
@@ -35,9 +35,9 @@ exports.chooser = async function chooser(destination, config) {
         if (logger) logger.verbose('MODEM-CHOOSER: Try to use imsi senders by prefix name', { destination, prefixName, imsiSenders });
     }
 
-    if (!imsiSenders.length && config.imsi_senders && config.imsi_senders.default && Array.isArray(config.imsi_senders.default) && config.imsi_senders.default.length) {
-        imsiSenders = filterOutCandidates(config.imsi_senders.default);
-        if (logger) logger.verbose('MODEM-CHOOSER: Try to use default senders', { destination, prefixName, imsiSenders });
+    if (!imsiSenders.length && config.imsi_senders && config.imsi_senders.unknown_prefix) {
+        imsiSenders = filterOutCandidates(config.imsi_senders.unknown_prefix);
+        if (logger) logger.verbose('MODEM-CHOOSER: Try to use senders for unknown prfix', { destination, prefixName, imsiSenders });
     }
 
     if (!imsiSenders.length) {
@@ -45,6 +45,12 @@ exports.chooser = async function chooser(destination, config) {
         if (logger) logger.verbose('MODEM-CHOOSER: Try to use sender by last seen', { destination, prefixName, imsiSenders });
     }
 
+    if (!imsiSenders.length && config.imsi_senders && config.imsi_senders.default) {
+        imsiSenders = filterOutCandidates(config.imsi_senders.default);
+        if (logger) logger.verbose('MODEM-CHOOSER: Try to use default senders', { destination, prefixName, imsiSenders });
+    }
+
+
     if (!imsiSenders.length) {
         if (logger) logger.warn('MODEM-CHOOSER: No suitable sender found', { destination, prefixName });
         return;
-- 
1.9.0