diff --git a/lib/apiserver/routers/smstools.js b/lib/apiserver/routers/smstools.js index 1884bf6..fe8a60a 100644 --- a/lib/apiserver/routers/smstools.js +++ b/lib/apiserver/routers/smstools.js @@ -44,7 +44,19 @@ function pageLog(req, res) { }); } +async function pageSpoolCount(req, res) { + const outgoingCount = await smstoolsUtil.fileCountOnDir('/var/spool/sms/outgoing'); + const checkedCount = await smstoolsUtil.fileCountOnDir('/var/spool/sms/checked'); + + res.json({ + outgoingCount, + checkedCount, + totalQueueCount: Number(outgoingCount) + Number(checkedCount), + }); +} + router.get('/status', pageStatus); router.get('/status/raw', pageStatusRaw); router.get('/restart', pageRestart); router.get('/log', pageLog); +router.get('/spool-count', pageSpoolCount); diff --git a/lib/smstools-util.js b/lib/smstools-util.js index 1c01cf9..aaf5adf 100644 --- a/lib/smstools-util.js +++ b/lib/smstools-util.js @@ -1,3 +1,4 @@ +const fs = require('fs'); const childProcess = require('child_process'); const config = require('komodo-sdk/config'); @@ -11,3 +12,12 @@ exports.restart = () => new Promise((resolve) => { }); }); }); + +exports.fileCountOnDir = async (dirname) => { + try { + const files = fs.promises.readdir(dirname); + return files.filter((item) => item.search(/LOCK$/) >= 0).length; + } catch (e) { + return null; + } +};