Commit 738bde20a8256e929e5eed916be058b1bd73a20d
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 |