Compare View
Commits (3)
Changes
Showing 1 changed file 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, cleanup) { | 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 | 64 | saveConfig(); | |
52 | if (cleanup) { | 65 | } |
53 | Object.keys(config.senders_imsi.prefix_names).forEach((key) => { | 66 | |
54 | if (!config.senders_imsi.prefix_names[key]) return; | 67 | function addImsi(data, imsi) { |
55 | 68 | if (data.indexOf(imsi) >= 0) { | |
56 | if (!Array.isArray(config.senders_imsi.prefix_names[key])) return; | 69 | return false; |
57 | 70 | } | |
58 | if (config.senders_imsi.prefix_names[key].length === 0) { | 71 | |
59 | delete config.senders_imsi.prefix_names[key]; | 72 | data.push(imsi); |
60 | } | 73 | saveConfig(); |
61 | }); | 74 | |
62 | } | 75 | return true; |
63 | 76 | } | |
64 | saveConfig(); | 77 | |
65 | } | 78 | function addImsiResponse(req, res) { |
66 | 79 | if (res.locals.add_imsi_success) { | |
67 | function addImsi(data, imsi) { | 80 | res.json({ |
68 | if (data.indexOf(imsi) >= 0) { | 81 | status: 'OK', |
69 | return false; | 82 | message: 'IMSI berhasil didaftarkan', |
70 | } | 83 | }); |
71 | 84 | } else { | |
72 | data.push(imsi); | 85 | res.json({ |
73 | saveConfig(); | 86 | status: 'NOT OK', |
74 | 87 | message: 'IMSI sudah terdaftar', | |
75 | return true; | 88 | }); |
76 | } | 89 | } |
77 | 90 | } | |
78 | function addImsiResponse(req, res) { | 91 | |
79 | if (res.locals.add_imsi_success) { | 92 | /** |
80 | res.json({ | 93 | * Menambahkan IMSI pada list sender by prefix |
81 | status: 'OK', | 94 | * |
82 | message: 'IMSI berhasil didaftarkan', | 95 | * @param {object} req - Express request object |
83 | }); | 96 | * @param {object} req.query - query string object |
84 | } else { | 97 | * @param {string} req.query.prefix - nama prefix |
85 | res.json({ | 98 | * @param {string} req.query.imsi - nomor imsi |
86 | status: 'NOT OK', | 99 | * @param {object} res - Express result object |
87 | message: 'IMSI sudah terdaftar', | 100 | */ |
88 | }); | 101 | function pageAddForPrefix(req, res, next) { |
89 | } | 102 | if (!req.query.prefix) { |
90 | } | 103 | res.json({ |
91 | 104 | status: 'NOT-OK', | |
92 | /** | 105 | message: 'Undefined prefix', |
93 | * Menambahkan IMSI pada list sender by prefix | 106 | }); |
94 | * | 107 | |
95 | * @param {object} req - Express request object | 108 | return; |
96 | * @param {object} req.query - query string object | 109 | } |
97 | * @param {string} req.query.prefix - nama prefix | 110 | |
98 | * @param {string} req.query.imsi - nomor imsi | 111 | if (!req.query.imsi) { |
99 | * @param {object} res - Express result object | 112 | res.json({ |
100 | */ | 113 | status: 'NOT-OK', |
101 | function pageAddForPrefix(req, res, next) { | 114 | message: 'Undefined IMSI', |
102 | if (!req.query.prefix) { | 115 | }); |
103 | res.json({ | 116 | |
104 | status: 'NOT-OK', | 117 | return; |
105 | message: 'Undefined prefix', | 118 | } |
119 | |||
120 | req.query.prefix = req.query.prefix.toUpperCase(); | ||
106 | }); | 121 | |
107 | 122 | if (!config.senders_imsi.prefix_names[req.query.prefix]) { | |
108 | return; | 123 | config.senders_imsi.prefix_names[req.query.prefix] = []; |
109 | } | 124 | } |
110 | 125 | ||
111 | if (!req.query.imsi) { | 126 | res.locals.add_imsi_success = addImsi(config.senders_imsi.prefix_names[req.query.prefix], req.query.imsi); |
112 | res.json({ | 127 | next(); |
113 | status: 'NOT-OK', | 128 | } |
114 | message: 'Undefined IMSI', | 129 | |
115 | }); | 130 | function pageDelForPrefix(req, res) { |
116 | 131 | if (!req.query.prefix) { | |
117 | return; | 132 | res.json({ |
118 | } | 133 | status: 'NOT-OK', |
119 | 134 | message: 'Undefined prefix', | |
120 | req.query.prefix = req.query.prefix.toUpperCase(); | 135 | }); |
121 | 136 | ||
122 | if (!config.senders_imsi.prefix_names[req.query.prefix]) { | 137 | return; |
123 | config.senders_imsi.prefix_names[req.query.prefix] = []; | 138 | } |
124 | } | 139 | |
125 | 140 | if (!req.query.imsi) { | |
126 | res.locals.add_imsi_success = addImsi(config.senders_imsi.prefix_names[req.query.prefix], req.query.imsi); | 141 | res.json({ |
127 | next(); | 142 | status: 'NOT-OK', |
128 | } | 143 | message: 'Undefined IMSI', |
129 | 144 | }); | |
130 | function pageDelForPrefix(req, res) { | 145 | |
131 | if (!req.query.prefix) { | 146 | return; |
132 | res.json({ | 147 | } |
133 | status: 'NOT-OK', | 148 | |
134 | message: 'Undefined prefix', | 149 | delImsi(config.senders_imsi.prefix_names[req.query.prefix], req.query.imsi, true); |
135 | }); | 150 | |
136 | 151 | res.json({ | |
137 | return; | 152 | status: 'OK', |
138 | } | 153 | message: 'IMSI berhasil dihapus', |
139 | 154 | }); | |
140 | if (!req.query.imsi) { | 155 | } |
141 | res.json({ | 156 | |
142 | status: 'NOT-OK', | 157 | /** |
143 | message: 'Undefined IMSI', | 158 | * Menambahkan IMSI pada list sender untuk prefix tidak dikenal |
144 | }); | 159 | * |
145 | 160 | * @param {object} req - Express request object | |
146 | return; | 161 | * @param {object} req.query - query string object |
147 | } | 162 | * @param {string} req.query.imsi - nomor imsi |
148 | 163 | * @param {object} res - Express result object | |
149 | delImsi(config.senders_imsi.prefix_names[req.query.prefix], req.query.imsi); | 164 | */ |
150 | 165 | function pageAddForUnknownPrefix(req, res, next) { | |
151 | res.json({ | 166 | if (!req.query.imsi) { |
152 | status: 'OK', | 167 | res.json({ |
153 | message: 'IMSI berhasil dihapus', | 168 | status: 'NOT-OK', |
154 | }); | 169 | message: 'Undefined IMSI', |
155 | } | 170 | }); |
156 | 171 | ||
157 | /** | 172 | return; |
158 | * Menambahkan IMSI pada list sender untuk prefix tidak dikenal | 173 | } |
159 | * | 174 | |
160 | * @param {object} req - Express request object | 175 | res.locals.add_imsi_success = addImsi(config.senders_imsi.unknown_prefix, req.query.imsi); |
161 | * @param {object} req.query - query string object | 176 | next(); |
162 | * @param {string} req.query.imsi - nomor imsi | 177 | } |
163 | * @param {object} res - Express result object | 178 | |
164 | */ | 179 | function pageDelForUnknownPrefix(req, res) { |
165 | function pageAddForUnknownPrefix(req, res, next) { | 180 | if (!req.query.imsi) { |
166 | if (!req.query.imsi) { | 181 | res.json({ |
167 | res.json({ | 182 | status: 'NOT-OK', |
168 | status: 'NOT-OK', | 183 | message: 'Undefined IMSI', |
169 | message: 'Undefined IMSI', | 184 | }); |
170 | }); | 185 | |
171 | 186 | return; | |
172 | return; | 187 | } |
173 | } | 188 | |
174 | 189 | delImsi(config.senders_imsi.unknown_prefix, req.query.imsi); | |
175 | res.locals.add_imsi_success = addImsi(config.senders_imsi.unknown_prefix, req.query.imsi); | 190 | res.json({ |
176 | next(); | 191 | status: 'OK', |
177 | } | 192 | message: 'IMSI berhasil dihapus', |
178 | 193 | }); | |
179 | function pageDelForUnknownPrefix(req, res) { | 194 | } |
180 | if (!req.query.imsi) { | 195 | |
181 | res.json({ | 196 | /** |
182 | status: 'NOT-OK', | 197 | * Menambahkan IMSI pada list sender default |
183 | message: 'Undefined IMSI', | 198 | * |
184 | }); | 199 | * @param {object} req - Express request object |
185 | 200 | * @param {object} req.query - query string object | |
186 | return; | 201 | * @param {string} req.query.imsi - nomor imsi |
187 | } | 202 | * @param {object} res - Express result object |
188 | 203 | */ | |
189 | delImsi(config.senders_imsi.unknown_prefix, req.query.imsi); | 204 | function pageAddForDefault(req, res, next) { |
190 | res.json({ | 205 | if (!req.query.imsi) { |
191 | status: 'OK', | 206 | res.json({ |
192 | message: 'IMSI berhasil dihapus', | 207 | status: 'NOT-OK', |
193 | }); | 208 | message: 'Undefined IMSI', |
194 | } | 209 | }); |
195 | 210 | ||
196 | /** | 211 | return; |
197 | * Menambahkan IMSI pada list sender default | 212 | } |
198 | * | 213 | |
199 | * @param {object} req - Express request object | 214 | res.locals.add_imsi_success = addImsi(config.senders_imsi.default, req.query.imsi); |
200 | * @param {object} req.query - query string object | 215 | next(); |
201 | * @param {string} req.query.imsi - nomor imsi | 216 | } |
202 | * @param {object} res - Express result object | 217 | |
203 | */ | 218 | function pageDelForDefault(req, res) { |
204 | function pageAddForDefault(req, res, next) { | 219 | if (!req.query.imsi) { |
205 | if (!req.query.imsi) { | 220 | res.json({ |
206 | res.json({ | 221 | status: 'NOT-OK', |
207 | status: 'NOT-OK', | 222 | message: 'Undefined IMSI', |
208 | message: 'Undefined IMSI', | 223 | }); |
209 | }); | 224 | |
210 | 225 | return; | |
211 | return; | 226 | } |
212 | } | 227 | |
213 | 228 | delImsi(config.senders_imsi.default, req.query.imsi); | |
214 | res.locals.add_imsi_success = addImsi(config.senders_imsi.default, req.query.imsi); | 229 | res.json({ |
215 | next(); | 230 | status: 'OK', |
216 | } | 231 | message: 'IMSI berhasil dihapus', |
217 | 232 | }); | |
218 | function pageDelForDefault(req, res) { | 233 | } |
219 | if (!req.query.imsi) { | 234 | |
220 | res.json({ | 235 | router.use(initConfig); |
221 | status: 'NOT-OK', | 236 | router.get('/', initConfig, pageIndex); |
222 | message: 'Undefined IMSI', | 237 | |
223 | }); | 238 | router.get('/add-for-prefix', pageAddForPrefix, addImsiResponse); |
224 | 239 | router.get('/add-for-unknown-prefix', pageAddForUnknownPrefix, addImsiResponse); | |
225 | return; | 240 | router.get('/add-for-default', pageAddForDefault, addImsiResponse) |
226 | } | 241 | |
227 | 242 | router.get('/del-for-prefix', pageDelForPrefix); | |
228 | delImsi(config.senders_imsi.default, req.query.imsi); | 243 | router.get('/del-for-unknown-prefix', pageDelForUnknownPrefix); |
229 | res.json({ | 244 | router.get('/del-for-default', pageDelForDefault); |
230 | status: 'OK', | 245 |