const moment = require('moment'); const config = require('komodo-sdk/config'); const { orderBy } = require('natural-orderby'); const smstoolsConfig = require('./config-file'); const queuesAndProviders = require('./queues-and-providers'); function modemNames() { const modems = []; // eslint-disable-next-line no-restricted-syntax for (const [key, value] of Object.entries(smstoolsConfig.modems || {})) { if (value && !value.disabled) modems.push(key); } return modems; } function modemEntries() { const modems = orderBy(modemNames()); const retval = []; modems.forEach((modemName) => { const modem = smstoolsConfig.modems[modemName]; let queuesLine = ''; if (queuesAndProviders.hasQueues()) { const queues = queuesAndProviders.getModemQueueName(modemName); if (queues && queues.length) { queuesLine = `queues = ${queues.join(', ')}`; } } const modemEntry = ` [${modemName}] device = ${modem.device} outgoing = ${modem.outgoing ? 'yes' : 'no'} ${queuesLine} `.trim(); retval.push(modemEntry); }); return retval; } module.exports = async () => { const queuesAndProvidersStr = queuesAndProviders.hasQueues() ? (await queuesAndProviders.dump()) : ''; const newContent = ` # Generated by komodo-center-smstools based on config timestamp ${moment(smstoolsConfig.ts).format('YYYY-MM-DD HH:mm:ss')} # Do not edit this file manually devices = ${orderBy(modemNames()).join(',')} logfile = ${config.smstools_logfile || config.smstools_log_file || '/var/log/smsd/smsd.log'} loglevel = ${smstoolsConfig.loglevel || 5} errorsleeptime = ${config.smstools_errorsleeptime || 10} blockafter = ${config.smstools_blockafter || 3} blocktime = ${config.smstools_blocktime || 3600} smart_logging = yes autosplit = ${(config.smstools_autosplit !== undefined && config.smstools_autosplit !== null) ? config.smstools_autosplit : 1} user = ${smstoolsConfig.user || 'smstools'} group = ${smstoolsConfig.group || 'smstools'} eventhandler = ${config.smstools_eventhandler || '/var/lib/smstools/centers/smstools/bin/smstools-eventhandler.js'} stats_interval = ${config.smstools_stats_interval || 60} stats = ${config.smstools_stats || '/var/log/smsd/smsd_stats'} sent = /var/spool/sms/sent failed = /var/spool/sms/failed ${smstoolsConfig.customConfig || ''} ${queuesAndProvidersStr} [default] sentsleeptime = ${config.smstools_sentsleeptime || 0} send_delay = ${config.smstools_send_delay || 0} incoming = yes regular_run_interval = 60 regular_run_cmd = AT+CGSN regular_run_cmd = AT+CIMI regular_run_cmd = AT+COPS? regular_run_statfile = /var/spool/sms/regular_run/modemname message_limit = ${config.smstools_message_limit || 5} message_count_clear = ${config.smstools_message_count_clear || 1} ${modemEntries().join('\n\n')} # end of configuration file `; return `${newContent.trim()}\n`; };