smstools-config.js
3.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
const childProcess = require('child_process');
const express = require('express');
const bodyParser = require('body-parser');
const config = require('komodo-sdk/config');
const smstoolsConfig = require('../../smstools-config');
const smstoolsConfigCreator = require('../../smstools-config/creator');
const smstoolsConfigSetter = require('../../smstools-config/setter');
const smstoolsConfigData = require('../../smstools-config/config-file');
const router = express.Router();
module.exports = router;
function pageIndex(req, res) {
const configString = smstoolsConfigCreator();
res.json({
dirty: smstoolsConfig.config.dirty,
config: smstoolsConfig.config,
configStringLength: configString.length,
configStringNrLines: (configString.match(/\n/g) || []).length,
configString,
});
}
function pageGenerate(req, res) {
res.end(smstoolsConfigCreator());
}
async function pageModemList(req, res) {
const modems = [];
// eslint-disable-next-line no-restricted-syntax
for (const [key, value] of Object.entries(smstoolsConfigData.modems || {})) {
modems.push({
label: `${key}: ${value.device}, INCOMING${value.outgoing ? ' and OUTGOING' : ''}`,
value: key,
data: value,
});
}
res.json(modems);
}
async function pageSet(req, res) {
const keyword = (req.params.keyword || req.query.keyword || '').trim();
const value = (req.query.value || '').trim();
if (!keyword) {
res.end('Invalid keyword');
return;
}
const result = await smstoolsConfigSetter.set(keyword, value);
res.json({
dirty: !!smstoolsConfigData.dirty,
result,
});
}
async function pageModemSet(req, res) {
if (!req.body) {
res.json({
status: 'NOT OK',
message: 'Empty body',
});
return;
}
const modemName = (req.params.modemName || '').trim();
if (!modemName) {
res.json({
status: 'NOT OK',
message: 'Invalid modem name',
});
return;
}
const result = await smstoolsConfigSetter.setModem(modemName, req.body);
res.json({
dirty: !!smstoolsConfigData.dirty,
result,
});
}
async function pageModemDelete(req, res) {
const modemName = (req.params.modemName || '').trim();
if (!modemName) {
res.json({
status: 'NOT OK',
message: 'Invalid modem name',
});
return;
}
const result = await smstoolsConfigSetter.delModem(modemName);
res.json({
dirty: !!smstoolsConfigData.dirty,
result,
});
}
function pageInstallConfig(req, res) {
const fileToExec = `${process.cwd()}/bin/smstools-config-install`;
childProcess.execFile(fileToExec, [config.smstools_config_file], (err, stdout, stderr) => {
res.json({
err,
stdout,
stderr,
});
});
}
router.get('/', pageIndex);
router.get('/generate', pageGenerate);
router.get('/modems', pageModemList);
router.get('/set/:keyword', pageSet);
router.post('/modem/set/:modemName', bodyParser.json({ type: '*/json' }), pageModemSet);
router.get('/modem/delete/:modemName', pageModemDelete);
router.get('/install-config', pageInstallConfig);