Commit a25517cf1de0905f2b8369fbea30da2bccdc524c
1 parent
7912597ff3
Exists in
master
pageSmsdLog
Showing 1 changed file with 13 additions and 0 deletions Inline Diff
lib/apiserver/routers/smstools-config.js
1 | const childProcess = require('child_process'); | 1 | const childProcess = require('child_process'); |
2 | 2 | ||
3 | const express = require('express'); | 3 | const express = require('express'); |
4 | const bodyParser = require('body-parser'); | 4 | const bodyParser = require('body-parser'); |
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 smstoolsConfig = require('../../smstools-config'); | 9 | const smstoolsConfig = require('../../smstools-config'); |
10 | const smstoolsConfigCreator = require('../../smstools-config/creator'); | 10 | const smstoolsConfigCreator = require('../../smstools-config/creator'); |
11 | const smstoolsConfigSetter = require('../../smstools-config/setter'); | 11 | const smstoolsConfigSetter = require('../../smstools-config/setter'); |
12 | const smstoolsConfigData = require('../../smstools-config/config-file'); | 12 | const smstoolsConfigData = require('../../smstools-config/config-file'); |
13 | 13 | ||
14 | const router = express.Router(); | 14 | const router = express.Router(); |
15 | module.exports = router; | 15 | module.exports = router; |
16 | 16 | ||
17 | function pageIndex(req, res) { | 17 | function pageIndex(req, res) { |
18 | const configString = smstoolsConfigCreator(); | 18 | const configString = smstoolsConfigCreator(); |
19 | res.json({ | 19 | res.json({ |
20 | dirty: smstoolsConfig.config.dirty, | 20 | dirty: smstoolsConfig.config.dirty, |
21 | config: smstoolsConfig.config, | 21 | config: smstoolsConfig.config, |
22 | configStringLength: configString.length, | 22 | configStringLength: configString.length, |
23 | configStringNrLines: (configString.match(/\n/g) || []).length, | 23 | configStringNrLines: (configString.match(/\n/g) || []).length, |
24 | configString, | 24 | configString, |
25 | }); | 25 | }); |
26 | } | 26 | } |
27 | 27 | ||
28 | function pageGenerate(req, res) { | 28 | function pageGenerate(req, res) { |
29 | res.end(smstoolsConfigCreator()); | 29 | res.end(smstoolsConfigCreator()); |
30 | } | 30 | } |
31 | 31 | ||
32 | async function pageModemList(req, res) { | 32 | async function pageModemList(req, res) { |
33 | const modems = []; | 33 | const modems = []; |
34 | // eslint-disable-next-line no-restricted-syntax | 34 | // eslint-disable-next-line no-restricted-syntax |
35 | for (const [key, value] of Object.entries(smstoolsConfigData.modems || {})) { | 35 | for (const [key, value] of Object.entries(smstoolsConfigData.modems || {})) { |
36 | modems.push({ | 36 | modems.push({ |
37 | label: `${key}: ${value.device}, INCOMING${value.outgoing ? ' and OUTGOING' : ''}`, | 37 | label: `${key}: ${value.device}, INCOMING${value.outgoing ? ' and OUTGOING' : ''}`, |
38 | value: key, | 38 | value: key, |
39 | data: value, | 39 | data: value, |
40 | }); | 40 | }); |
41 | } | 41 | } |
42 | 42 | ||
43 | res.json(modems); | 43 | res.json(modems); |
44 | } | 44 | } |
45 | 45 | ||
46 | async function pageSet(req, res) { | 46 | async function pageSet(req, res) { |
47 | const keyword = (req.params.keyword || req.query.keyword || '').trim(); | 47 | const keyword = (req.params.keyword || req.query.keyword || '').trim(); |
48 | const value = (req.query.value || '').trim(); | 48 | const value = (req.query.value || '').trim(); |
49 | 49 | ||
50 | if (!keyword) { | 50 | if (!keyword) { |
51 | res.end('Invalid keyword'); | 51 | res.end('Invalid keyword'); |
52 | return; | 52 | return; |
53 | } | 53 | } |
54 | 54 | ||
55 | const result = await smstoolsConfigSetter.set(keyword, value); | 55 | const result = await smstoolsConfigSetter.set(keyword, value); |
56 | res.json({ | 56 | res.json({ |
57 | dirty: !!smstoolsConfigData.dirty, | 57 | dirty: !!smstoolsConfigData.dirty, |
58 | result, | 58 | result, |
59 | }); | 59 | }); |
60 | } | 60 | } |
61 | 61 | ||
62 | async function pageModemSet(req, res) { | 62 | async function pageModemSet(req, res) { |
63 | if (!req.body) { | 63 | if (!req.body) { |
64 | res.json({ | 64 | res.json({ |
65 | status: 'NOT OK', | 65 | status: 'NOT OK', |
66 | message: 'Empty body', | 66 | message: 'Empty body', |
67 | }); | 67 | }); |
68 | return; | 68 | return; |
69 | } | 69 | } |
70 | 70 | ||
71 | const modemName = (req.params.modemName || '').trim(); | 71 | const modemName = (req.params.modemName || '').trim(); |
72 | if (!modemName) { | 72 | if (!modemName) { |
73 | res.json({ | 73 | res.json({ |
74 | status: 'NOT OK', | 74 | status: 'NOT OK', |
75 | message: 'Invalid modem name', | 75 | message: 'Invalid modem name', |
76 | }); | 76 | }); |
77 | return; | 77 | return; |
78 | } | 78 | } |
79 | 79 | ||
80 | const result = await smstoolsConfigSetter.setModem(modemName, req.body); | 80 | const result = await smstoolsConfigSetter.setModem(modemName, req.body); |
81 | res.json({ | 81 | res.json({ |
82 | dirty: !!smstoolsConfigData.dirty, | 82 | dirty: !!smstoolsConfigData.dirty, |
83 | result, | 83 | result, |
84 | }); | 84 | }); |
85 | } | 85 | } |
86 | 86 | ||
87 | async function pageModemSetSingleValue(req, res) { | 87 | async function pageModemSetSingleValue(req, res) { |
88 | if (!req.body) { | 88 | if (!req.body) { |
89 | res.json({ | 89 | res.json({ |
90 | status: 'NOT OK', | 90 | status: 'NOT OK', |
91 | message: 'Empty body', | 91 | message: 'Empty body', |
92 | }); | 92 | }); |
93 | return; | 93 | return; |
94 | } | 94 | } |
95 | 95 | ||
96 | const modemName = (req.params.modemName || '').trim(); | 96 | const modemName = (req.params.modemName || '').trim(); |
97 | if (!modemName) { | 97 | if (!modemName) { |
98 | res.json({ | 98 | res.json({ |
99 | status: 'NOT OK', | 99 | status: 'NOT OK', |
100 | message: 'Invalid modem name', | 100 | message: 'Invalid modem name', |
101 | }); | 101 | }); |
102 | return; | 102 | return; |
103 | } | 103 | } |
104 | 104 | ||
105 | const keyword = (req.body.keyword || '').trim(); | 105 | const keyword = (req.body.keyword || '').trim(); |
106 | if (!keyword) { | 106 | if (!keyword) { |
107 | res.json({ | 107 | res.json({ |
108 | status: 'NOT OK', | 108 | status: 'NOT OK', |
109 | message: 'Invalid keyword', | 109 | message: 'Invalid keyword', |
110 | }); | 110 | }); |
111 | return; | 111 | return; |
112 | } | 112 | } |
113 | 113 | ||
114 | const { value } = req.body; | 114 | const { value } = req.body; |
115 | 115 | ||
116 | const result = await smstoolsConfigSetter.setModemSingleValue(modemName, keyword, value); | 116 | const result = await smstoolsConfigSetter.setModemSingleValue(modemName, keyword, value); |
117 | res.json({ | 117 | res.json({ |
118 | dirty: !!smstoolsConfigData.dirty, | 118 | dirty: !!smstoolsConfigData.dirty, |
119 | result, | 119 | result, |
120 | }); | 120 | }); |
121 | } | 121 | } |
122 | 122 | ||
123 | async function pageModemDelete(req, res) { | 123 | async function pageModemDelete(req, res) { |
124 | const modemName = (req.params.modemName || '').trim(); | 124 | const modemName = (req.params.modemName || '').trim(); |
125 | if (!modemName) { | 125 | if (!modemName) { |
126 | res.json({ | 126 | res.json({ |
127 | status: 'NOT OK', | 127 | status: 'NOT OK', |
128 | message: 'Invalid modem name', | 128 | message: 'Invalid modem name', |
129 | }); | 129 | }); |
130 | return; | 130 | return; |
131 | } | 131 | } |
132 | 132 | ||
133 | const result = await smstoolsConfigSetter.delModem(modemName); | 133 | const result = await smstoolsConfigSetter.delModem(modemName); |
134 | res.json({ | 134 | res.json({ |
135 | dirty: !!smstoolsConfigData.dirty, | 135 | dirty: !!smstoolsConfigData.dirty, |
136 | result, | 136 | result, |
137 | }); | 137 | }); |
138 | } | 138 | } |
139 | 139 | ||
140 | function pageInstallConfig(req, res) { | 140 | function pageInstallConfig(req, res) { |
141 | logger.info('ROUTER-SMSTOOLS-CONFIG: Going to write configuration and restart smsd service'); | 141 | logger.info('ROUTER-SMSTOOLS-CONFIG: Going to write configuration and restart smsd service'); |
142 | const fileToExec = `${process.cwd()}/bin/smstools-config-install`; | 142 | const fileToExec = `${process.cwd()}/bin/smstools-config-install`; |
143 | childProcess.execFile(fileToExec, [config.smstools_config_file || '/etc/smsd.conf'], (err, stdout, stderr) => { | 143 | childProcess.execFile(fileToExec, [config.smstools_config_file || '/etc/smsd.conf'], (err, stdout, stderr) => { |
144 | res.json({ | 144 | res.json({ |
145 | err, | 145 | err, |
146 | stdout, | 146 | stdout, |
147 | stderr, | 147 | stderr, |
148 | }); | 148 | }); |
149 | }); | 149 | }); |
150 | } | 150 | } |
151 | 151 | ||
152 | function pageSmsdLog(req, res) { | ||
153 | const maxLines = (req.params.maxLines || 200); | ||
154 | childProcess.exec(`tail -n ${maxLines} /var/log/smsd/smsd.log | tac`, (err, stdout, stderr) => { | ||
155 | res.json({ | ||
156 | err, | ||
157 | stdout, | ||
158 | stderr, | ||
159 | }); | ||
160 | }); | ||
161 | } | ||
162 | |||
152 | router.get('/', pageIndex); | 163 | router.get('/', pageIndex); |
153 | router.get('/generate', pageGenerate); | 164 | router.get('/generate', pageGenerate); |
154 | router.get('/modems', pageModemList); | 165 | router.get('/modems', pageModemList); |
155 | 166 | ||
156 | router.get('/set/:keyword', pageSet); | 167 | router.get('/set/:keyword', pageSet); |
157 | router.post('/modem/set/:modemName', bodyParser.json({ type: '*/json' }), pageModemSet); | 168 | router.post('/modem/set/:modemName', bodyParser.json({ type: '*/json' }), pageModemSet); |
158 | router.post('/modem/set-single-value/:modemName', bodyParser.json({ type: '*/json' }), pageModemSetSingleValue); | 169 | router.post('/modem/set-single-value/:modemName', bodyParser.json({ type: '*/json' }), pageModemSetSingleValue); |
159 | router.get('/modem/delete/:modemName', pageModemDelete); | 170 | router.get('/modem/delete/:modemName', pageModemDelete); |
160 | router.get('/install-config', pageInstallConfig); | 171 | router.get('/install-config', pageInstallConfig); |
172 | router.get('/smsd-log/:maxLines', pageSmsdLog); | ||
173 | router.get('/smsd-log', pageSmsdLog); |