From 5bfc5bd215c8ad8e695bc50af7fa4443f6f24b68 Mon Sep 17 00:00:00 2001 From: chelid <63787936+chelid@users.noreply.github.com> Date: Wed, 14 Sep 2022 13:27:30 +0300 Subject: [PATCH 1/2] Mailing defaults to sendmail, optional keywords --- bin/crontab-ui-mailer.js | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/bin/crontab-ui-mailer.js b/bin/crontab-ui-mailer.js index 1aa7c7b..e8263a6 100755 --- a/bin/crontab-ui-mailer.js +++ b/bin/crontab-ui-mailer.js @@ -5,7 +5,15 @@ var crontab = require("../crontab.js"); var nodemailer = require('nodemailer'); crontab.get_crontab(process.argv[process.argv.length -1 -2], function(job){ - if (job.mailing.transporterStr == 'sendmail') { // allow sending mail with Postfix + if (!job.mailing || job.mailing == undefined || job.mailing.mailOptions == undefined) { + var mailOptions = defaults.mailOptions; + var transporterStr = defaults.transporterStr; + } else { + var mailOptions = job.mailing.mailOptions; + var transporterStr = job.mailing.transporterStr ; + } + + if (transporterStr == 'sendmail') { // allow sending mail with Postfix, and this is the default option var transporter = nodemailer.createTransport({ sendmail: true, newline: 'unix', @@ -15,10 +23,21 @@ crontab.get_crontab(process.argv[process.argv.length -1 -2], function(job){ } else { var transporter = nodemailer.createTransport(job.mailing.transporterStr); } - var mailOptions = job.mailing.mailOptions; - mailOptions.subject = job.name + ' ' + mailOptions.subject; - mailOptions.text = 'Command: ' + job.command + "\n" + mailOptions.text; - mailOptions.html = 'Command: ' + job.command + '
' + mailOptions.html; + + const keywordsMap = { + '#COMMAND_NAME#': job.name, + '#COMMAND#': job.command, + '#HASHED_EMAIL#': Buffer.from(mailOptions.to).toString('base64') + }; + function replaceAll(str,mapObj){ + var re = new RegExp(Object.keys(mapObj).join("|"),"gi"); + return str.replace(re, function(matched){ + return mapObj[matched]; + }); + } + mailOptions.subject = replaceAll(mailOptions.subject, keywordsMap); + mailOptions.text = replaceAll(mailOptions.text, keywordsMap); + mailOptions.html = replaceAll(mailOptions.html, keywordsMap); mailOptions.attachments = [{filename: "stdout.txt", path: process.argv[process.argv.length -1 -1]}, {filename: "stderr.txt", path: process.argv[process.argv.length -1]}]; From 3b2260b96b1785829c30615af7985b3f71184e1d Mon Sep 17 00:00:00 2001 From: chelid <63787936+chelid@users.noreply.github.com> Date: Wed, 14 Sep 2022 13:29:08 +0300 Subject: [PATCH 2/2] Add CRON_DB_PATH to mailer --- crontab.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crontab.js b/crontab.js index 113036d..d9aca4d 100644 --- a/crontab.js +++ b/crontab.js @@ -152,9 +152,9 @@ make_command = function(tab) { "; fi"; } - if (tab.mailing && JSON.stringify(tab.mailing) != "{}"){ - crontab_job_string += "; /usr/local/bin/node " + __dirname + "/bin/crontab-ui-mailer.js " + tab._id + " " + stdout + " " + stderr; - } + //if (tab.mailing && JSON.stringify(tab.mailing) != "{}"){ + crontab_job_string += "; CRON_DB_PATH=" + exports.db_folder + " /usr/local/bin/node " + __dirname + "/bin/crontab-ui-mailer.js " + tab._id + " " + stdout + " " + stderr; + //} return crontab_job_string; }