Commit 9d1a83083450d9a84cb5b790706aca9b74c135c5

Authored by Adhidarma Hadiwinoto
1 parent 068c7c1383
Exists in master

Add trim on input

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

lib/webadmin/router/config.js
1 const fs = require('fs'); 1 const fs = require('fs');
2 const express = require('express'); 2 const express = require('express');
3 const { orderBy } = require('natural-orderby'); 3 const { orderBy } = require('natural-orderby');
4 const config = require('komodo-sdk/config'); 4 const config = require('komodo-sdk/config');
5 5
6 const router = express.Router(); 6 const router = express.Router();
7 module.exports = router; 7 module.exports = router;
8 8
9 async function writeConfigFile() { 9 async function writeConfigFile() {
10 try { 10 try {
11 await fs.promises.writeFile('config.json', JSON.stringify(config, null, 4)); 11 await fs.promises.writeFile('config.json', JSON.stringify(config, null, 4));
12 } catch (e) { 12 } catch (e) {
13 // 13 //
14 } 14 }
15 } 15 }
16 16
17 function pageMain(req, res) { 17 function pageMain(req, res) {
18 res.render('config.index.html', { 18 res.render('config.index.html', {
19 modems: orderBy(config.modems, [(v) => v.name], ['asc']), 19 modems: orderBy(config.modems, [(v) => v.name], ['asc']),
20 baseUrl: req.baseUrl, 20 baseUrl: req.baseUrl,
21 }); 21 });
22 } 22 }
23 23
24 async function pageSetOutgoing(req, res) { 24 async function pageSetOutgoing(req, res) {
25 const modemName = (req.params.modemName || '').trim(); 25 const modemName = (req.params.modemName || '').trim();
26 if (!modemName) { 26 if (!modemName) {
27 res.end('Invalid modem name'); 27 res.end('Invalid modem name');
28 return; 28 return;
29 } 29 }
30 30
31 const idx = (config.modems || []).findIndex((modem) => modem.name === modemName); 31 const idx = (config.modems || []).findIndex((modem) => modem.name === modemName);
32 if (idx < 0) { 32 if (idx < 0) {
33 res.end('No modem matched'); 33 res.end('No modem matched');
34 return; 34 return;
35 } 35 }
36 36
37 config.modems[idx].outgoing = req.params.newValue === '1' || req.params.newValue === 'true'; 37 config.modems[idx].outgoing = req.params.newValue === '1' || req.params.newValue === 'true';
38 38
39 await writeConfigFile(); 39 await writeConfigFile();
40 40
41 res.redirect(`${req.baseUrl}/modem#modem${encodeURIComponent(modemName)}`); 41 res.redirect(`${req.baseUrl}/modem#modem${encodeURIComponent(modemName)}`);
42 } 42 }
43 43
44 async function pageDelPrefix(req, res) { 44 async function pageDelPrefix(req, res) {
45 const modemName = (req.params.modemName || '').trim(); 45 const modemName = (req.params.modemName || '').trim();
46 if (!modemName) { 46 if (!modemName) {
47 res.end('Invalid modem name'); 47 res.end('Invalid modem name');
48 return; 48 return;
49 } 49 }
50 50
51 const prefix = (req.params.prefix || '').trim(); 51 const prefix = (req.params.prefix || '').trim();
52 if (!prefix) { 52 if (!prefix) {
53 res.end('Invalid prefix'); 53 res.end('Invalid prefix');
54 return; 54 return;
55 } 55 }
56 56
57 const modemIdx = (config.modems || []).findIndex((modem) => modem.name === modemName); 57 const modemIdx = (config.modems || []).findIndex((modem) => modem.name === modemName);
58 if (modemIdx < 0) { 58 if (modemIdx < 0) {
59 res.end('No modem matched'); 59 res.end('No modem matched');
60 return; 60 return;
61 } 61 }
62 62
63 const prefixIdx = (config.modems[modemIdx].prefix || []).indexOf(prefix); 63 const prefixIdx = (config.modems[modemIdx].prefix || []).indexOf(prefix);
64 if (prefixIdx < 0) { 64 if (prefixIdx < 0) {
65 res.end('No prefix matched'); 65 res.end('No prefix matched');
66 return; 66 return;
67 } 67 }
68 68
69 config.modems[modemIdx].prefix.splice(prefixIdx, 1); 69 config.modems[modemIdx].prefix.splice(prefixIdx, 1);
70 70
71 await writeConfigFile(); 71 await writeConfigFile();
72 72
73 res.redirect(`${req.baseUrl}/modem#modem${encodeURIComponent(modemName)}`); 73 res.redirect(`${req.baseUrl}/modem#modem${encodeURIComponent(modemName)}`);
74 } 74 }
75 75
76 async function modemAdd(req, res) { 76 async function modemAdd(req, res) {
77 const modem = { 77 const modem = {
78 name: (req.body.name || '').trim(), 78 name: (req.body.name || '').trim(),
79 imsi: (req.body.imsi || '').trim(), 79 imsi: (req.body.imsi || '').trim(),
80 outgoing: !!req.body.outgoing, 80 outgoing: !!req.body.outgoing,
81 prefix: (req.body.prefix || '').split(/[, ]+/) 81 prefix: (req.body.prefix || '').trim().split(/[, ]+/)
82 .map((val) => val.trim().replace(/^0/, '62')) 82 .map((val) => val.trim().replace(/^0/, '62'))
83 .filter((row) => row), 83 .filter((row) => row),
84 }; 84 };
85 85
86 const index = config.modems.find( 86 const index = config.modems.find(
87 (item) => item.name.toUpperCase() === modem.name.toUpperCase(), 87 (item) => item.name.toUpperCase() === modem.name.toUpperCase(),
88 ); 88 );
89 89
90 if (index >= 0) { 90 if (index >= 0) {
91 res.end('Modem duplikat'); 91 res.end('Modem duplikat');
92 return; 92 return;
93 } 93 }
94 94
95 config.modems.push(modem); 95 config.modems.push(modem);
96 await writeConfigFile(); 96 await writeConfigFile();
97 97
98 res.redirect(`${req.baseUrl}/modem`); 98 res.redirect(`${req.baseUrl}/modem`);
99 } 99 }
100 100
101 async function modemAddPrefix(req, res) { 101 async function modemAddPrefix(req, res) {
102 const modemName = (req.body.name || '').trim(); 102 const modemName = (req.body.name || '').trim();
103 const prefix = (req.body.prefix || '').split(/[, ]+/) 103 const prefix = (req.body.prefix || '').trim().split(/[, ]+/)
104 .map((val) => val.trim().replace(/^0/, '62')) 104 .map((val) => val.trim().replace(/^0/, '62'))
105 .filter((row) => row); 105 .filter((row) => row);
106 106
107 const index = config.modems.findIndex( 107 const index = config.modems.findIndex(
108 (item) => item.name.toUpperCase() === modemName.toUpperCase(), 108 (item) => item.name.toUpperCase() === modemName.toUpperCase(),
109 ); 109 );
110 if (Array.isArray(config.modems[index].prefix)) { 110 if (Array.isArray(config.modems[index].prefix)) {
111 config.modems[index].prefix = config.modems[index].prefix.concat(prefix); 111 config.modems[index].prefix = config.modems[index].prefix.concat(prefix);
112 } else { 112 } else {
113 config.modems[index].prefix = prefix; 113 config.modems[index].prefix = prefix;
114 } 114 }
115 115
116 if (index < 0) { 116 if (index < 0) {
117 res.end('Modem tidak ditemukan'); 117 res.end('Modem tidak ditemukan');
118 return; 118 return;
119 } 119 }
120 120
121 await writeConfigFile(); 121 await writeConfigFile();
122 122
123 res.redirect(`${req.baseUrl}/modem#modem${encodeURIComponent(modemName)}`); 123 res.redirect(`${req.baseUrl}/modem#modem${encodeURIComponent(modemName)}`);
124 } 124 }
125 125
126 async function modemUpdateImsi(req, res) { 126 async function modemUpdateImsi(req, res) {
127 const modemName = (req.body.name || '').trim(); 127 const modemName = (req.body.name || '').trim();
128 const imsi = (req.body.imsi || '').trim(); 128 const imsi = (req.body.imsi || '').trim();
129 129
130 const index = config.modems.findIndex( 130 const index = config.modems.findIndex(
131 (item) => item.name.toUpperCase() === modemName.toUpperCase(), 131 (item) => item.name.toUpperCase() === modemName.toUpperCase(),
132 ); 132 );
133 config.modems[index].imsi = imsi; 133 config.modems[index].imsi = imsi;
134 134
135 if (index < 0) { 135 if (index < 0) {
136 res.end('Modem tidak ditemukan'); 136 res.end('Modem tidak ditemukan');
137 return; 137 return;
138 } 138 }
139 139
140 await writeConfigFile(); 140 await writeConfigFile();
141 141
142 res.redirect(`${req.baseUrl}/modem#modem${encodeURIComponent(modemName)}`); 142 res.redirect(`${req.baseUrl}/modem#modem${encodeURIComponent(modemName)}`);
143 } 143 }
144 144
145 async function modemUpdateCustomIp(req, res) { 145 async function modemUpdateCustomIp(req, res) {
146 const modemName = (req.body.name || '').trim(); 146 const modemName = (req.body.name || '').trim();
147 const url = (req.body.url || '').trim() || null; 147 const url = (req.body.url || '').trim() || null;
148 const username = (req.body.username || '').trim() || null; 148 const username = (req.body.username || '').trim() || null;
149 const password = (req.body.password || '').trim() || null; 149 const password = (req.body.password || '').trim() || null;
150 150
151 const index = config.modems.findIndex( 151 const index = config.modems.findIndex(
152 (item) => item.name.toUpperCase() === modemName.toUpperCase(), 152 (item) => item.name.toUpperCase() === modemName.toUpperCase(),
153 ); 153 );
154 154
155 config.modems[index].url = url; 155 config.modems[index].url = url;
156 config.modems[index].username = username; 156 config.modems[index].username = username;
157 config.modems[index].password = password; 157 config.modems[index].password = password;
158 158
159 if (index < 0) { 159 if (index < 0) {
160 res.end('Modem tidak ditemukan'); 160 res.end('Modem tidak ditemukan');
161 return; 161 return;
162 } 162 }
163 163
164 await writeConfigFile(); 164 await writeConfigFile();
165 165
166 res.redirect(`${req.baseUrl}/modem#modem${encodeURIComponent(modemName)}`); 166 res.redirect(`${req.baseUrl}/modem#modem${encodeURIComponent(modemName)}`);
167 } 167 }
168 168
169 async function modemDelete(req, res) { 169 async function modemDelete(req, res) {
170 const modemName = (req.body.name || '').trim(); 170 const modemName = (req.body.name || '').trim();
171 171
172 const index = config.modems.findIndex( 172 const index = config.modems.findIndex(
173 (item) => item.name.toUpperCase() === modemName.toUpperCase(), 173 (item) => item.name.toUpperCase() === modemName.toUpperCase(),
174 ); 174 );
175 175
176 if (index < 0) { 176 if (index < 0) {
177 res.end('Modem tidak ditemukan'); 177 res.end('Modem tidak ditemukan');
178 return; 178 return;
179 } 179 }
180 180
181 config.modems.splice(index, 1); 181 config.modems.splice(index, 1);
182 182
183 await writeConfigFile(); 183 await writeConfigFile();
184 184
185 res.redirect(`${req.baseUrl}`); 185 res.redirect(`${req.baseUrl}`);
186 } 186 }
187 187
188 router.get('/', (req, res) => { 188 router.get('/', (req, res) => {
189 res.redirect(`${req.baseUrl}/modem`); // sementara redirect ke modem 189 res.redirect(`${req.baseUrl}/modem`); // sementara redirect ke modem
190 }); 190 });
191 191
192 router.get('/modem', pageMain); 192 router.get('/modem', pageMain);
193 router.post('/modem/add', express.urlencoded({ extended: true }), modemAdd); 193 router.post('/modem/add', express.urlencoded({ extended: true }), modemAdd);
194 router.post('/modem/add-prefix', express.urlencoded({ extended: true }), modemAddPrefix); 194 router.post('/modem/add-prefix', express.urlencoded({ extended: true }), modemAddPrefix);
195 router.post('/modem/update-imsi', express.urlencoded({ extended: true }), modemUpdateImsi); 195 router.post('/modem/update-imsi', express.urlencoded({ extended: true }), modemUpdateImsi);
196 router.post('/modem/update-custom-ip', express.urlencoded({ extended: true }), modemUpdateCustomIp); 196 router.post('/modem/update-custom-ip', express.urlencoded({ extended: true }), modemUpdateCustomIp);
197 router.post('/modem/delete', express.urlencoded({ extended: true }), modemDelete); 197 router.post('/modem/delete', express.urlencoded({ extended: true }), modemDelete);
198 router.get('/modem/set-outgoing/:modemName/:newValue', pageSetOutgoing); 198 router.get('/modem/set-outgoing/:modemName/:newValue', pageSetOutgoing);
199 router.get('/modem/del-prefix/:modemName/:prefix', pageDelPrefix); 199 router.get('/modem/del-prefix/:modemName/:prefix', pageDelPrefix);
200 200