Compare View

switch
from
...
to
 
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