Commit a25517cf1de0905f2b8369fbea30da2bccdc524c

Authored by Adhidarma Hadiwinoto
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);