Commit 4c529b27223359dda8ef2b188e558fba3fa0c418
1 parent
426655c30a
Exists in
master
queues and providers dump
Showing 2 changed files with 95 additions and 13 deletions Side-by-side Diff
lib/apiserver/routers/smstools-config.js
... | ... | @@ -7,9 +7,11 @@ const config = require('komodo-sdk/config'); |
7 | 7 | const logger = require('komodo-sdk/logger'); |
8 | 8 | |
9 | 9 | const smstoolsConfig = require('../../smstools-config'); |
10 | +const smstoolsConfigData = require('../../smstools-config/config-file'); | |
10 | 11 | const smstoolsConfigCreator = require('../../smstools-config/creator'); |
11 | 12 | const smstoolsConfigSetter = require('../../smstools-config/setter'); |
12 | -const smstoolsConfigData = require('../../smstools-config/config-file'); | |
13 | +const queuesAndProviders = require('../../smstools-config/queues-and-providers'); | |
14 | + | |
13 | 15 | |
14 | 16 | const router = express.Router(); |
15 | 17 | module.exports = router; |
... | ... | @@ -151,16 +153,8 @@ async function pageInstallConfig(req, res) { |
151 | 153 | }); |
152 | 154 | } |
153 | 155 | |
154 | -function pageSmsdLog(req, res) { | |
155 | - // deprecated | |
156 | - const maxLines = (req.params.maxLines || 200); | |
157 | - childProcess.exec(`tail -n ${maxLines} /var/log/smsd/smsd.log | tac`, (err, stdout, stderr) => { | |
158 | - res.json({ | |
159 | - err, | |
160 | - stdout, | |
161 | - stderr, | |
162 | - }); | |
163 | - }); | |
156 | +function pageQueuesAndProviders(req, res) { | |
157 | + res.end(queuesAndProviders.dump); | |
164 | 158 | } |
165 | 159 | |
166 | 160 | router.get('/', pageIndex); |
... | ... | @@ -172,5 +166,4 @@ router.post('/modem/set/:modemName', bodyParser.json({ type: '*/json' }), pageMo |
172 | 166 | router.post('/modem/set-single-value/:modemName', bodyParser.json({ type: '*/json' }), pageModemSetSingleValue); |
173 | 167 | router.get('/modem/delete/:modemName', pageModemDelete); |
174 | 168 | router.get('/install-config', pageInstallConfig); |
175 | -router.get('/smsd-log/:maxLines', pageSmsdLog); | |
176 | -router.get('/smsd-log', pageSmsdLog); | |
169 | +router.get('/queues-and-providers', pageQueuesAndProviders); |
lib/smstools-config/queues-and-providers.js
... | ... | @@ -0,0 +1,89 @@ |
1 | +const fs = require('fs'); | |
2 | + | |
3 | +const config = require('komodo-sdk/config'); | |
4 | +const logger = require('komodo-sdk/logger'); | |
5 | +const smstoolsConfig = require('./config-file'); | |
6 | + | |
7 | +const queuesBaseDir = config.smstools_queues_base_dir || '/var/spool/sms'; | |
8 | + | |
9 | +function composeQueueDir(queueName) { | |
10 | + return `${queuesBaseDir}/${queueName}`; | |
11 | +} | |
12 | + | |
13 | +async function createDirectory(dirname) { | |
14 | + let isExists = true; | |
15 | + try { | |
16 | + await fs.promises.access(dirname); | |
17 | + } catch (e) { | |
18 | + isExists = false; | |
19 | + } | |
20 | + | |
21 | + if (isExists) return; | |
22 | + | |
23 | + try { | |
24 | + fs.promises.mkdir(dirname, { recursive: true, mode: 0o770 }); | |
25 | + } catch (e) { | |
26 | + logger.warn('QUEUES-AND-PROVIDERS: Exception on creating directory', { | |
27 | + dirname, | |
28 | + e: e.message || e.toString(), | |
29 | + }); | |
30 | + } | |
31 | +} | |
32 | + | |
33 | +function queuesSorted(queuesArray) { | |
34 | + const result = (queuesArray || smstoolsConfig.queues || []).sort((a, b) => { | |
35 | + const orderA = (a && Number(a.order)) || 0; | |
36 | + const orderB = (b && Number(b.order)) || 0; | |
37 | + | |
38 | + if (orderA < orderB) return -1; | |
39 | + if (orderA > orderB) return 1; | |
40 | + return 0; | |
41 | + }); | |
42 | + | |
43 | + return result; | |
44 | +} | |
45 | + | |
46 | +exports.dump = async (mkdirIfQueueDirNotExists) => { | |
47 | + if (config.smstools_disable_queue) return ''; | |
48 | + | |
49 | + const queues = queuesSorted(); | |
50 | + const queuesCount = queues.length; | |
51 | + | |
52 | + const configLines = ['[queues]']; | |
53 | + const providerLines = ['[providers]']; | |
54 | + const queuesDirs = []; | |
55 | + let hasQueues = false; | |
56 | + let hasProviders = false; | |
57 | + for (let i = 0; i < queuesCount; i += 1) { | |
58 | + const queue = queues[i]; | |
59 | + | |
60 | + // eslint-disable-next-line no-continue | |
61 | + if (!queue.name || !queue.enabled) continue; | |
62 | + | |
63 | + const queueDir = composeQueueDir(queue.name); | |
64 | + queuesDirs.push(queueDir); | |
65 | + if (mkdirIfQueueDirNotExists) { | |
66 | + // eslint-disable-next-line no-await-in-loop | |
67 | + await createDirectory(queueDir); | |
68 | + } | |
69 | + | |
70 | + const line = `${queue.name} = ${queueDir}`; | |
71 | + configLines.push(line); | |
72 | + hasQueues = true; | |
73 | + | |
74 | + const hasPrefix = (!queue.prefix || !queue.prefix.length); | |
75 | + if (hasPrefix) { | |
76 | + const providerLine = `${queue.name} = ${queue.prefix.join(', ')}`; | |
77 | + providerLines.push(providerLine); | |
78 | + hasProviders = true; | |
79 | + } | |
80 | + } | |
81 | + | |
82 | + if (!hasQueues) return ''; | |
83 | + | |
84 | + if (!hasProviders) { | |
85 | + return configLines.join('\n'); | |
86 | + } | |
87 | + | |
88 | + return `${configLines.join('\n')}\n${providerLines.join('\n')}`; | |
89 | +}; |