Commit 43b2bd8712272759328e65296c1094004e2b2d3a

Authored by Adhidarma Hadiwinoto
1 parent c622bef69c
Exists in master

Terminate if undefined pin

Showing 3 changed files with 245 additions and 2 deletions Side-by-side Diff

... ... @@ -0,0 +1,230 @@
  1 +{
  2 + "handler_name": "MKIOS-TEST",
  3 + "pull_interval_ms": 300,
  4 + "partner": {
  5 + "pin": "1212",
  6 + "modem": {
  7 + "dev": "/home/adhisimon/ttyUSB0ksa"
  8 + }
  9 + },
  10 + "products": [
  11 + "_TST1",
  12 + "_DUMMY5",
  13 + "_DUMMY10",
  14 + "TSEL5",
  15 + "TSEL10",
  16 + "TSEL15",
  17 + "TSEL20",
  18 + "TSEL25",
  19 + "TSEL40",
  20 + "TSEL50",
  21 + "TSEL100",
  22 + "TSEL150",
  23 + "TSEL200"
  24 +
  25 + ],
  26 + "remote_products": {
  27 + "TST1": "*777*<DESTINATION>*5*<PIN>#,5000",
  28 + "DUMMY5": "*369*3*<DESTINATION>*5*<PIN>#,5000",
  29 + "_DUMMY10": "*369*3*<DESTINATION>*10*<PIN>#,10000",
  30 + "_DUMMY5": "*369*2*<DESTINATION>*1*101*<PIN>#,2GBCOMBO",
  31 + "DUMMY10": "*777*<DESTINATION>*025*<PIN>#,10000",
  32 + "TSEL5": "*777*<DESTINATION>*5*<PIN>#,5000",
  33 + "TSEL10": "*777*<DESTINATION>*10*<PIN>#,10000",
  34 + "TSEL15": "*777*<DESTINATION>*10*<PIN>#,15000",
  35 + "TSEL20": "*777*<DESTINATION>*020*<PIN>#,20000",
  36 + "TSEL25": "*777*<DESTINATION>*025*<PIN>#,25000",
  37 + "TSEL40": "*777*<DESTINATION>*040*<PIN>#,40000",
  38 + "TSEL50": "*777*<DESTINATION>*050*<PIN>#,50000",
  39 + "TSEL100": "*777*<DESTINATION>*0100*<PIN>#,100000",
  40 + "TSEL150": "*777*<DESTINATION>*0150*<PIN>#,150000",
  41 + "TSEL200": "*777*<DESTINATION>*0200*<PIN>#,200000"
  42 +
  43 + },
  44 + "ussd_parser": {
  45 + "destination": [
  46 + { "pattern": "Transaksi ke (\\d+) pada" },
  47 + { "pattern": "Pembelian 1 buah voucher <.+?> senilai <\\d+> untuk <(\\d+)" },
  48 + { "pattern": "Transaksi bulk <\\d+ IDR> untuk <\\d+" }
  49 + ],
  50 + "product": [
  51 + { "pattern": "senilai SimPATI: (\\d+) " },
  52 + { "pattern": "senilai <\\d+> untuk"},
  53 + { "pattern": "Transaksi bulk <(\\d+) IDR>"}
  54 + ],
  55 + "sn": [
  56 + { "pattern": "SN <(\\d+)>"}
  57 + ],
  58 + "rc": [
  59 + { "pattern": "berhasil", "rc": "00"},
  60 + { "pattern": "Nomer tidak ditemukan", "rc": "14" },
  61 + { "pattern": "Nomer tdk ditemukan", "rc": "14" },
  62 + { "pattern": "dalam blacklist", "rc": "14" },
  63 +
  64 + { "pattern": "sistem sedang sibuk", "rc": "90" },
  65 + { "pattern": "tidak dapat mengisi", "rc": "40" },
  66 + { "pattern": "telah melebihi batas pembelian", "rc": "40" },
  67 + { "pattern": "tidak dapat membelikan", "rc": "40" },
  68 + { "pattern": "tidak bisa mengulang", "rc": "40" },
  69 + { "pattern": "tidak dapat mendaftar paket", "rc": "40" },
  70 + { "pattern": "yg anda miliki telah habis", "rc": "40" },
  71 + { "pattern": "nomor yang anda isi telah terkunci", "rc": "14" },
  72 + { "pattern": "tidak dapat kami proses", "rc": "40" },
  73 + { "pattern": "sisa pulsa dari pengisian pulsa telah melewati batas limit", "rc": "40" },
  74 + { "pattern": "kode akses tidak sesuai dengan tipe kartu", "rc": "40" },
  75 + { "pattern": "belum bisa diproses", "rc": "40" },
  76 + { "pattern": "tidak memungkinkan untuk diisi ulang pada saat ini", "rc": "40" },
  77 + { "pattern": "stock voucher yang diminta tidak mencukupi", "rc": "12" },
  78 + { "pattern": "tidak dapat dilakukan", "rc": "40" },
  79 + { "pattern": "Nmr plg ditolak", "rc": "14" },
  80 + { "pattern": "Nmr expired atau over limit", "rc": "14" },
  81 + { "pattern": "Nmr plg exp atau pulsa over", "rc": "14" },
  82 + { "pattern": "Pulsa over kuota", "rc": "40" },
  83 + { "pattern": "Nmr plg exp", "rc": "14" },
  84 + { "pattern": "Kode Paket yang Anda masukkan tidak tersedia", "rc": "12" },
  85 +
  86 + { "pattern": "Maaf,", "rc": "40" },
  87 + { "pattern": "Gagal", "rc": "40" },
  88 + { "pattern": "gagal", "rc": "40" }
  89 + ],
  90 + "stock": {
  91 + "product": [
  92 + { "pattern": "Stok anda (.+?)=" }
  93 + ],
  94 + "balance": [
  95 + { "pattern": "Stok anda .+?=(\\d+)" }
  96 + ]
  97 + }
  98 + },
  99 + "sms_parser": {
  100 + "allowed_sender": [
  101 + "MKIOS",
  102 + "3636"
  103 + ],
  104 + "destination": [
  105 + { "pattern": "Isi ulang paket Flash (\\d+) pd .+? .+? berhasil. Voucher senilai Rp\\.\\d+\\. Nomor seri \\d+"},
  106 + { "pattern": "Isi ulang (\\d+) pd", "prefix": "0" },
  107 + { "pattern": "Transaksi ke (\\d+) pada", "prefix": "0" },
  108 + { "pattern": "Pembelian 1 buah voucher <.+?> senilai <\\d+> untuk <(\\d+)", "prefix": "0" },
  109 + { "pattern": "Transaksi bulk <\\d+ IDR> untuk <\\d+", "prefix": "0" }
  110 + ],
  111 + "product": [
  112 + { "pattern": "Isi ulang paket Flash \\d+ pd .+? .+? berhasil. Voucher senilai Rp\\.(\\d+)\\. Nomor seri \\d+"},
  113 + { "pattern": "Voucher SimPATI senilai (.+?)\\." },
  114 + { "pattern": "senilai SimPATI: (\\d+) " },
  115 + { "pattern": "senilai <\\d+> untuk"},
  116 + { "pattern": "Transaksi bulk <(\\d+) IDR>"}
  117 + ],
  118 + "trx_date": [
  119 + { "pattern": "Isi ulang paket Flash \\d+ pd (.+?) .+? berhasil. Voucher senilai Rp\\.\\d+\\. Nomor seri \\d+"},
  120 + { "pattern": "Isi ulang \\d+ pd\\s+(.+?) \\d" },
  121 + { "pattern": "Transaksi ke \\d+ pada\\s+(.+?) \\d" }
  122 + ],
  123 + "sn": [
  124 + { "pattern": "Nomor seri (\\d+)"},
  125 + { "pattern": "SN (\\d+)"},
  126 + { "pattern": "SN <(\\d+)>"}
  127 + ],
  128 + "rc": [
  129 + { "pattern": "berhasil", "value": "00"},
  130 + { "pattern": "Nomer tidak ditemukan", "value": "14" },
  131 + { "pattern": "dalam blacklist", "value": "14" },
  132 + { "pattern": "gagal", "value": "40"}
  133 + ],
  134 + "stock": {
  135 + "product": [
  136 + { "pattern": "stock Anda saat ini (.+?)=" },
  137 + { "pattern": "Sisa stok (.+?)=" },
  138 + { "pattern": "Stok anda (.+?)=" },
  139 + { "pattern": "voucher (bulk) anda yang tersedia:"},
  140 + { "pattern": "Stok Anda setelah pengisian adalah <\\d+ (IDR)>."}
  141 + ],
  142 + "balance": [
  143 + { "pattern": "stock Anda saat ini .+?=(\\d+)" },
  144 + { "pattern": "Sisa stok .+?=(\\d+)" },
  145 + { "pattern": "Stok anda .+?=(\\d+)" },
  146 + { "pattern": "voucher bulk anda yang tersedia:\\s+(\\d+) IDR" },
  147 + { "pattern": "Stok Anda setelah pengisian adalah <(\\d+) IDR>." }
  148 + ],
  149 + "multistock": {
  150 + "must_have_pattern": "Stok voucher Anda yang tersedia: SimPATI",
  151 + "pattern": "V\\d+=\\d+",
  152 + "flags": "g",
  153 + "separator": "="
  154 + }
  155 + }
  156 + },
  157 + "remote_product_alias": {
  158 + "bulk": "BULK",
  159 + "IDR": "BULK",
  160 + "1rb": "1000",
  161 + "5rb": "5000",
  162 + "10rb": "10000",
  163 + "15rb": "15000",
  164 + "20rb": "20000",
  165 + "25rb": "25000",
  166 + "40rb": "40000",
  167 + "50rb": "50000",
  168 + "80rb": "80000",
  169 + "100rb": "100000",
  170 + "150rb": "150000",
  171 + "200rb": "200000",
  172 + "300rb": "300000",
  173 + "500rb": "500000",
  174 + "1jt": "1000000",
  175 + "1K": "1000",
  176 + "5K": "5000",
  177 + "10K": "10000",
  178 + "15K": "15000",
  179 + "20K": "20000",
  180 + "25K": "25000",
  181 + "40K": "40000",
  182 + "50K": "50000",
  183 + "80K": "80000",
  184 + "100K": "100000",
  185 + "150K": "150000",
  186 + "200K": "200000",
  187 + "300K": "300000",
  188 + "500K": "500000",
  189 + "1000K": "1000000",
  190 + "1": "1000",
  191 + "5": "5000",
  192 + "10": "10000",
  193 + "15": "15000",
  194 + "20": "20000",
  195 + "25": "25000",
  196 + "40": "40000",
  197 + "50": "50000",
  198 + "80": "80000",
  199 + "100": "100000",
  200 + "150": "150000",
  201 + "200": "200000",
  202 + "300": "300000",
  203 + "500": "500000",
  204 + "1000": "1000000",
  205 + "V1": "1000",
  206 + "V5": "5000",
  207 + "V10": "10000",
  208 + "V15": "15000",
  209 + "V20": "20000",
  210 + "V25": "25000",
  211 + "V40": "40000",
  212 + "V50": "50000",
  213 + "V80": "80000",
  214 + "V100": "100000",
  215 + "V150": "150000",
  216 + "V200": "200000",
  217 + "V300": "300000",
  218 + "V500": "500000",
  219 + "V1000": "1000000"
  220 + },
  221 + "control_panel": {
  222 + "listen_port": "37201",
  223 + "url": "http://localhost:37201/"
  224 + },
  225 + "apiserver": {
  226 + "port": "37202",
  227 + "apikey": "ccc558f508c289078f7d652458921aad66cf9b1b",
  228 + "url": "http://localhost:37202/apikey/ccc558f508c289078f7d652458921aad66cf9b1b"
  229 + }
  230 +}
lib/partner-mkios.js
... ... @@ -12,6 +12,11 @@ const matrix = require(&#39;komodo-sdk/matrix&#39;);
12 12  
13 13 const modemDashboard = require('./modem-dashboard');
14 14  
  15 +if (!config || !config.partner || !config.partner.pin) {
  16 + logger.warn('Undefined PIN');
  17 + process.exit(1);
  18 +}
  19 +
15 20 matrix.modem = {};
16 21 matrix.not_ready = true;
17 22 matrix.stock = {};
... ... @@ -29,7 +34,15 @@ let last_trx_id = null;
29 34  
30 35 modem.on('open', function() {
31 36 logger.info('Modem opened');
32   - modem.sendUSSD('*776*' + config.partner.pin + '#', function() {});
  37 +
  38 + const ussd_command = '*776*' + config.partner.pin + '#';
  39 + db.run("INSERT INTO ussd VALUES (?, ?, 'OUT', ?, ?)", moment().format('YYYY-MM-DD HH:mm:ss'), moment().format('YYYY-MM-DD'), matrix.modem.imsi, 'AT+CUSD=1,"' + ussd_command + '",15', function(err) {
  40 + if (err) {
  41 + logger.warn('Error inserting ussd command (stock check) to local database', {err: err});
  42 + }
  43 + });
  44 +
  45 + modem.sendUSSD(ussd_command, function() {});
33 46 })
34 47  
35 48 modem.on('imsi', function(imsi) {
1   -6300
2 1 \ No newline at end of file
  2 +6543
3 3 \ No newline at end of file