Commit 738bde20a8256e929e5eed916be058b1bd73a20d

Authored by Adhidarma Hadiwinoto
1 parent dabbcb087e
Exists in master

APISERVER: config-senders del cleanup

Showing 1 changed file with 14 additions and 1 deletions Inline Diff

lib/apiserver/router-config-senders.js
1 'use strict'; 1 'use strict';
2 2
3 const fs = require('fs'); 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 const logger = require('komodo-sdk/logger');
8 8
9 const router = express.Router(); 9 const router = express.Router();
10 module.exports = router; 10 module.exports = router;
11 11
12 function saveConfig() { 12 function saveConfig() {
13 fs.writeFile(global.KOMODO_SDK_CONFIG_FILENAME, JSON.stringify(config, null, 4), (err) => { 13 fs.writeFile(global.KOMODO_SDK_CONFIG_FILENAME, JSON.stringify(config, null, 4), (err) => {
14 logger.warn(`APISERVER: ERROR writing config file. ${err.toString()}`); 14 logger.warn(`APISERVER: ERROR writing config file. ${err.toString()}`);
15 }); 15 });
16 } 16 }
17 17
18 function initConfig(req, res, next) { 18 function initConfig(req, res, next) {
19 if (typeof config.senders_imsi !== 'object') { 19 if (typeof config.senders_imsi !== 'object') {
20 config.senders_imsi = { 20 config.senders_imsi = {
21 prefix_names: {}, 21 prefix_names: {},
22 unknown_prefix: [], 22 unknown_prefix: [],
23 default: [], 23 default: [],
24 }; 24 };
25 } 25 }
26 26
27 if (typeof config.senders_imsi.prefix_names !== 'object') { 27 if (typeof config.senders_imsi.prefix_names !== 'object') {
28 config.senders_imsi.prefix_names = {}; 28 config.senders_imsi.prefix_names = {};
29 } 29 }
30 30
31 if (!Array.isArray(config.senders_imsi.unknown_prefix)) { 31 if (!Array.isArray(config.senders_imsi.unknown_prefix)) {
32 config.senders_imsi.unknown_prefix = []; 32 config.senders_imsi.unknown_prefix = [];
33 } 33 }
34 34
35 if (!Array.isArray(config.senders_imsi.default)) { 35 if (!Array.isArray(config.senders_imsi.default)) {
36 config.senders_imsi.default = []; 36 config.senders_imsi.default = [];
37 } 37 }
38 38
39 next(); 39 next();
40 } 40 }
41 41
42 function pageIndex(req, res) { 42 function pageIndex(req, res) {
43 res.json(config.senders_imsi); 43 res.json(config.senders_imsi);
44 } 44 }
45 45
46 function delImsi(data, imsi) { 46 function delImsi(data, imsi, cleanup) {
47 const idx = data.indexOf(imsi); 47 const idx = data.indexOf(imsi);
48 if (idx < 0) return; 48 if (idx < 0) return;
49 49
50 data.splice(idx, 1); 50 data.splice(idx, 1);
51
52 if (cleanup) {
53 Object.keys(config.senders_imsi.prefix_names).forEach((key) => {
54 if (!config.senders_imsi.prefix_names[key]) return;
55
56 if (!Array.isArray(config.senders_imsi.prefix_names[key])) return;
57
58 if (config.senders_imsi.prefix_names[key].length === 0) {
59 delete config.senders_imsi.prefix_names[key];
60 }
61 });
62 }
63
51 saveConfig(); 64 saveConfig();
52 } 65 }
53 66
54 function addImsi(data, imsi) { 67 function addImsi(data, imsi) {
55 if (data.indexOf(imsi) >= 0) { 68 if (data.indexOf(imsi) >= 0) {
56 return false; 69 return false;
57 } 70 }
58 71
59 data.push(imsi); 72 data.push(imsi);
60 saveConfig(); 73 saveConfig();
61 74
62 return true; 75 return true;
63 } 76 }
64 77
65 function addImsiResponse(req, res) { 78 function addImsiResponse(req, res) {
66 if (res.locals.add_imsi_success) { 79 if (res.locals.add_imsi_success) {
67 res.json({ 80 res.json({
68 status: 'OK', 81 status: 'OK',
69 message: 'IMSI berhasil didaftarkan', 82 message: 'IMSI berhasil didaftarkan',
70 }); 83 });
71 } else { 84 } else {
72 res.json({ 85 res.json({
73 status: 'NOT OK', 86 status: 'NOT OK',
74 message: 'IMSI sudah terdaftar', 87 message: 'IMSI sudah terdaftar',
75 }); 88 });
76 } 89 }
77 } 90 }
78 91
79 /** 92 /**
80 * Menambahkan IMSI pada list sender by prefix 93 * Menambahkan IMSI pada list sender by prefix
81 * 94 *
82 * @param {object} req - Express request object 95 * @param {object} req - Express request object
83 * @param {object} req.query - query string object 96 * @param {object} req.query - query string object
84 * @param {string} req.query.prefix - nama prefix 97 * @param {string} req.query.prefix - nama prefix
85 * @param {string} req.query.imsi - nomor imsi 98 * @param {string} req.query.imsi - nomor imsi
86 * @param {object} res - Express result object 99 * @param {object} res - Express result object
87 */ 100 */
88 function pageAddForPrefix(req, res, next) { 101 function pageAddForPrefix(req, res, next) {
89 if (!req.query.prefix) { 102 if (!req.query.prefix) {
90 res.json({ 103 res.json({
91 status: 'NOT-OK', 104 status: 'NOT-OK',
92 message: 'Undefined prefix', 105 message: 'Undefined prefix',
93 }); 106 });
94 107
95 return; 108 return;
96 } 109 }
97 110
98 if (!req.query.imsi) { 111 if (!req.query.imsi) {
99 res.json({ 112 res.json({
100 status: 'NOT-OK', 113 status: 'NOT-OK',
101 message: 'Undefined IMSI', 114 message: 'Undefined IMSI',
102 }); 115 });
103 116
104 return; 117 return;
105 } 118 }
106 119
107 req.query.prefix = req.query.prefix.toUpperCase(); 120 req.query.prefix = req.query.prefix.toUpperCase();
108 121
109 if (!config.senders_imsi.prefix_names[req.query.prefix]) { 122 if (!config.senders_imsi.prefix_names[req.query.prefix]) {
110 config.senders_imsi.prefix_names[req.query.prefix] = []; 123 config.senders_imsi.prefix_names[req.query.prefix] = [];
111 } 124 }
112 125
113 res.locals.add_imsi_success = addImsi(config.senders_imsi.prefix_names[req.query.prefix], req.query.imsi); 126 res.locals.add_imsi_success = addImsi(config.senders_imsi.prefix_names[req.query.prefix], req.query.imsi);
114 next(); 127 next();
115 } 128 }
116 129
117 function pageDelForPrefix(req, res) { 130 function pageDelForPrefix(req, res) {
118 if (!req.query.prefix) { 131 if (!req.query.prefix) {
119 res.json({ 132 res.json({
120 status: 'NOT-OK', 133 status: 'NOT-OK',
121 message: 'Undefined prefix', 134 message: 'Undefined prefix',
122 }); 135 });
123 136
124 return; 137 return;
125 } 138 }
126 139
127 if (!req.query.imsi) { 140 if (!req.query.imsi) {
128 res.json({ 141 res.json({
129 status: 'NOT-OK', 142 status: 'NOT-OK',
130 message: 'Undefined IMSI', 143 message: 'Undefined IMSI',
131 }); 144 });
132 145
133 return; 146 return;
134 } 147 }
135 148
136 delImsi(config.senders_imsi.prefix_names[req.query.prefix], req.query.imsi); 149 delImsi(config.senders_imsi.prefix_names[req.query.prefix], req.query.imsi);
137 150
138 res.json({ 151 res.json({
139 status: 'OK', 152 status: 'OK',
140 message: 'IMSI berhasil dihapus', 153 message: 'IMSI berhasil dihapus',
141 }); 154 });
142 } 155 }
143 156
144 /** 157 /**
145 * Menambahkan IMSI pada list sender untuk prefix tidak dikenal 158 * Menambahkan IMSI pada list sender untuk prefix tidak dikenal
146 * 159 *
147 * @param {object} req - Express request object 160 * @param {object} req - Express request object
148 * @param {object} req.query - query string object 161 * @param {object} req.query - query string object
149 * @param {string} req.query.imsi - nomor imsi 162 * @param {string} req.query.imsi - nomor imsi
150 * @param {object} res - Express result object 163 * @param {object} res - Express result object
151 */ 164 */
152 function pageAddForUnknownPrefix(req, res, next) { 165 function pageAddForUnknownPrefix(req, res, next) {
153 if (!req.query.imsi) { 166 if (!req.query.imsi) {
154 res.json({ 167 res.json({
155 status: 'NOT-OK', 168 status: 'NOT-OK',
156 message: 'Undefined IMSI', 169 message: 'Undefined IMSI',
157 }); 170 });
158 171
159 return; 172 return;
160 } 173 }
161 174
162 res.locals.add_imsi_success = addImsi(config.senders_imsi.unknown_prefix, req.query.imsi); 175 res.locals.add_imsi_success = addImsi(config.senders_imsi.unknown_prefix, req.query.imsi);
163 next(); 176 next();
164 } 177 }
165 178
166 function pageDelForUnknownPrefix(req, res) { 179 function pageDelForUnknownPrefix(req, res) {
167 if (!req.query.imsi) { 180 if (!req.query.imsi) {
168 res.json({ 181 res.json({
169 status: 'NOT-OK', 182 status: 'NOT-OK',
170 message: 'Undefined IMSI', 183 message: 'Undefined IMSI',
171 }); 184 });
172 185
173 return; 186 return;
174 } 187 }
175 188
176 delImsi(config.senders_imsi.unknown_prefix, req.query.imsi); 189 delImsi(config.senders_imsi.unknown_prefix, req.query.imsi);
177 res.json({ 190 res.json({
178 status: 'OK', 191 status: 'OK',
179 message: 'IMSI berhasil dihapus', 192 message: 'IMSI berhasil dihapus',
180 }); 193 });
181 } 194 }
182 195
183 /** 196 /**
184 * Menambahkan IMSI pada list sender default 197 * Menambahkan IMSI pada list sender default
185 * 198 *
186 * @param {object} req - Express request object 199 * @param {object} req - Express request object
187 * @param {object} req.query - query string object 200 * @param {object} req.query - query string object
188 * @param {string} req.query.imsi - nomor imsi 201 * @param {string} req.query.imsi - nomor imsi
189 * @param {object} res - Express result object 202 * @param {object} res - Express result object
190 */ 203 */
191 function pageAddForDefault(req, res, next) { 204 function pageAddForDefault(req, res, next) {
192 if (!req.query.imsi) { 205 if (!req.query.imsi) {
193 res.json({ 206 res.json({
194 status: 'NOT-OK', 207 status: 'NOT-OK',
195 message: 'Undefined IMSI', 208 message: 'Undefined IMSI',
196 }); 209 });
197 210
198 return; 211 return;
199 } 212 }
200 213
201 res.locals.add_imsi_success = addImsi(config.senders_imsi.default, req.query.imsi); 214 res.locals.add_imsi_success = addImsi(config.senders_imsi.default, req.query.imsi);
202 next(); 215 next();
203 } 216 }
204 217
205 function pageDelForDefault(req, res) { 218 function pageDelForDefault(req, res) {
206 if (!req.query.imsi) { 219 if (!req.query.imsi) {
207 res.json({ 220 res.json({
208 status: 'NOT-OK', 221 status: 'NOT-OK',
209 message: 'Undefined IMSI', 222 message: 'Undefined IMSI',
210 }); 223 });
211 224
212 return; 225 return;
213 } 226 }
214 227
215 delImsi(config.senders_imsi.default, req.query.imsi); 228 delImsi(config.senders_imsi.default, req.query.imsi);
216 res.json({ 229 res.json({
217 status: 'OK', 230 status: 'OK',
218 message: 'IMSI berhasil dihapus', 231 message: 'IMSI berhasil dihapus',
219 }); 232 });
220 } 233 }
221 234
222 router.use(initConfig); 235 router.use(initConfig);
223 router.get('/', initConfig, pageIndex); 236 router.get('/', initConfig, pageIndex);
224 237
225 router.get('/add-for-prefix', pageAddForPrefix, addImsiResponse); 238 router.get('/add-for-prefix', pageAddForPrefix, addImsiResponse);
226 router.get('/add-for-unknown-prefix', pageAddForUnknownPrefix, addImsiResponse); 239 router.get('/add-for-unknown-prefix', pageAddForUnknownPrefix, addImsiResponse);
227 router.get('/add-for-default', pageAddForDefault, addImsiResponse) 240 router.get('/add-for-default', pageAddForDefault, addImsiResponse)
228 241
229 router.get('/del-for-prefix', pageDelForPrefix); 242 router.get('/del-for-prefix', pageDelForPrefix);
230 router.get('/del-for-unknown-prefix', pageDelForUnknownPrefix); 243 router.get('/del-for-unknown-prefix', pageDelForUnknownPrefix);
231 router.get('/del-for-default', pageDelForDefault); 244 router.get('/del-for-default', pageDelForDefault);
232 245