Commit 208d90be354a49a2d9011ad2277b7d7ab5426bb5

Authored by Adhidarma Hadiwinoto
1 parent ba420757d3
Exists in master

/config/senders add imsi

Showing 1 changed file with 115 additions and 2 deletions Inline Diff

lib/apiserver/router-config-senders.js
1 'use strict'; 1 'use strict';
2 2
3 3 const fs = require('fs');
4 const express = require('express'); 4 const express = require('express');
5 5
6 const config = require('komodo-sdk/config'); 6 const config = require('komodo-sdk/config');
7 const logger = require('komodo-sdk/logger');
7 8
8 const router = express.Router(); 9 const router = express.Router();
9 module.exports = router; 10 module.exports = router;
10 11
12 function saveConfig() {
13 fs.writeFile(global.KOMODO_SDK_CONFIG_FILENAME, JSON.stringify(config, null, 4), (err) => {
14 logger.warn(`APISERVER: ERROR writing config file. ${err.toString()}`);
15 });
16 }
17
11 function initConfig(req, res, next) { 18 function initConfig(req, res, next) {
12 if (typeof config.senders_imsi !== 'object') { 19 if (typeof config.senders_imsi !== 'object') {
13 config.senders_imsi = { 20 config.senders_imsi = {
14 prefix_names: {}, 21 prefix_names: {},
15 unknown_prefix: [], 22 unknown_prefix: [],
16 default: [], 23 default: [],
17 }; 24 };
18 } 25 }
19 26
20 if (typeof config.senders_imsi.prefix_names !== 'object') { 27 if (typeof config.senders_imsi.prefix_names !== 'object') {
21 config.senders_imsi.prefix_names = {}; 28 config.senders_imsi.prefix_names = {};
22 } 29 }
23 30
24 if (!Array.isArray(config.senders_imsi.unknown_prefix)) { 31 if (!Array.isArray(config.senders_imsi.unknown_prefix)) {
25 config.senders_imsi.unknown_prefix = []; 32 config.senders_imsi.unknown_prefix = [];
26 } 33 }
27 34
28 if (!Array.isArray(config.senders_imsi.default)) { 35 if (!Array.isArray(config.senders_imsi.default)) {
29 config.senders_imsi.default = []; 36 config.senders_imsi.default = [];
30 } 37 }
31 38
32 next(); 39 next();
33 } 40 }
34 41
35 function pageIndex(req, res) { 42 function pageIndex(req, res) {
36 res.json(config.senders_imsi); 43 res.json(config.senders_imsi);
37 } 44 }
38 45
39 router.get('/', initConfig, pageIndex);
46 function addImsi(data, imsi) {
47 if (data.indexOf(imsi) >= 0) {
48 return false;
49 }
50
51 data.push(imsi);
52 saveConfig();
53
54 return true;
55 }
56
57 function addImsiResponse(req, res) {
58 if (res.locals.add_imsi_success) {
59 res.json({
60 status: 'NOT OK',
61 message: 'IMSI berhasil didaftarkan',
62 });
63 } else {
64 res.json({
65 status: 'NOT OK',
66 message: 'IMSI sudah terdaftar',
67 });
68 }
69 }
70
71 /**
72 * Menambahkan IMSI pada list sender by prefix
73 *
74 * @param {object} req - Express request object
75 * @param {object} req.query - query string object
76 * @param {string} req.query.prefix - nama prefix
77 * @param {string} req.query.imsi - nomor imsi
78 * @param {object} res - Express result object
79 */
80 function pageAddForPrefix(req, res, next) {
81 if (!req.query.prefix) {
82 res.json({
83 status: 'NOT-OK',
84 message: 'Undefined prefix',
85 });
86
87 return;
88 }
89
90 if (!req.query.imsi) {
91 res.json({
92 status: 'NOT-OK',
93 message: 'Undefined IMSI',
94 });
95
96 return;
97 }
98
99 res.locals.add_imsi_success = addImsi(config.senders_imsi.prefix_names[req.query.prefix], req.query.imsi);
100 next();
101 }
102
103 /**
104 * Menambahkan IMSI pada list sender untuk prefix tidak dikenal
105 *
106 * @param {object} req - Express request object
107 * @param {object} req.query - query string object
108 * @param {string} req.query.imsi - nomor imsi
109 * @param {object} res - Express result object
110 */
111 function pageAddForUnknownPrefix(req, res, next) {
112 if (!req.query.imsi) {
113 res.json({
114 status: 'NOT-OK',
115 message: 'Undefined IMSI',
116 });
117
118 return;
119 }
120
121 res.locals.add_imsi_success = addImsi(config.senders_imsi.unknown_prefix, req.query.imsi);
122 next();
123 }
124
125 /**
126 * Menambahkan IMSI pada list sender default
127 *
128 * @param {object} req - Express request object
129 * @param {object} req.query - query string object
130 * @param {string} req.query.imsi - nomor imsi
131 * @param {object} res - Express result object
132 */
133 function pageAddForDefault(req, res, next) {
134 if (!req.query.imsi) {
135 res.json({
136 status: 'NOT-OK',
137 message: 'Undefined IMSI',
138 });
139
140 return;
141 }
142
143 res.locals.add_imsi_success = addImsi(config.senders_imsi.default, req.query.imsi);
144 next();
145 }
146
147
148 router.use(initConfig);
149 router.get('/', initConfig, pageIndex);
150 router.get('/add-for-prefix', pageAddForPrefix, addImsiResponse);
151 router.get('/add-for-unknown-prefix', pageAddForUnknownPrefix, addImsiResponse);
152 router.get('/add-for-default', pageAddForDefault, addImsiResponse)