Reload mailer config once admin updates Mailtrain settings

This commit is contained in:
Andris Reinman 2016-12-25 17:59:50 +02:00
parent 9946f70992
commit 50f6c8d101
6 changed files with 27 additions and 11 deletions

View file

@ -17,6 +17,7 @@ let postfixBounceServer = require('./services/postfix-bounce-server');
let tzupdate = require('./services/tzupdate');
let feedcheck = require('./services/feedcheck');
let dbcheck = require('./lib/dbcheck');
let tools = require('./lib/tools');
let port = config.www.port;
let host = config.www.host;
@ -88,9 +89,11 @@ function spawnSenders(callback) {
let child = fork(__dirname + '/services/sender.js', []);
let pid = child.pid;
tools.workers.add(child);
child.on('close', (code, signal) => {
spawned--;
tools.workers.delete(child);
log.error('Child', 'Sender process %s exited with %s', pid, code || signal);
// Respawn after 5 seconds
setTimeout(() => spawnSender(), 5 * 1000).unref();

View file

@ -19,7 +19,8 @@ module.exports = {
validateEmail,
formatMessage,
getMessageLinks,
prepareHtml
prepareHtml,
workers: new Set()
};
function toDbKey(key) {

View file

@ -35,7 +35,7 @@
"compression": "^1.6.2",
"config": "^1.24.0",
"connect-flash": "^0.1.1",
"connect-redis": "^3.1.0",
"connect-redis": "^3.2.0",
"cookie-parser": "^1.4.3",
"csurf": "^1.9.0",
"csv-generate": "^1.0.0",
@ -49,21 +49,21 @@
"handlebars": "^4.0.6",
"hbs": "^4.0.1",
"he": "^1.1.0",
"html-to-text": "^2.1.3",
"html-to-text": "^3.0.0",
"humanize": "0.0.9",
"is-url": "^1.2.2",
"isemail": "^2.2.1",
"jsdom": "^9.8.3",
"jsdom": "^9.9.1",
"juice": "^4.0.2",
"libmime": "^3.0.0",
"mkdirp": "^0.5.1",
"moment-timezone": "^0.5.10",
"moment-timezone": "^0.5.11",
"morgan": "^1.7.0",
"multer": "^1.2.0",
"multer": "^1.2.1",
"mysql": "^2.12.0",
"nodemailer": "^2.7.0",
"nodemailer-openpgp": "^1.0.2",
"npmlog": "^4.0.1",
"npmlog": "^4.0.2",
"openpgp": "^2.3.5",
"passport": "^0.3.2",
"passport-local": "^1.0.0",
@ -73,8 +73,8 @@
"serve-favicon": "^2.3.2",
"shortid": "^2.2.6",
"slugify": "^1.0.2",
"smtp-server": "^1.16.1",
"smtp-server": "^1.17.0",
"striptags": "^2.1.1",
"toml": "^2.3.0"
"toml": "^2.3.1"
}
}

View file

@ -87,6 +87,11 @@ router.post('/update', passport.parseForm, passport.csrfProtection, (req, res) =
let storeSettings = () => {
if (i >= keys.length) {
mailer.update();
tools.workers.forEach(worker => {
worker.send({
reload: true
});
});
req.flash('success', 'Settings updated');
return res.redirect('/settings');
}

View file

@ -544,3 +544,10 @@ let sendLoop = () => {
};
sendLoop();
process.on('message', m => {
if (m && m.reload) {
log.info('Sender/' + process.pid, 'Reloading mailer config');
mailer.update();
}
});

View file

@ -173,14 +173,14 @@
<div class="form-group">
<label for="smtp-user" class="col-sm-2 control-label">Username</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="smtp-user" id="smtp-port" placeholder="Username, eg. myaccount@example.com" value="{{smtpUser}}" required>
<input type="text" class="form-control" name="smtp-user" id="smtp-port" placeholder="Username, eg. myaccount@example.com" value="{{smtpUser}}">
</div>
</div>
<div class="form-group">
<label for="smtp-pass" class="col-sm-2 control-label">Password</label>
<div class="col-sm-10">
<input type="password" class="form-control" name="smtp-pass" id="smtp-pass" placeholder="Password" value="{{smtpPass}}" required>
<input type="password" class="form-control" name="smtp-pass" id="smtp-pass" placeholder="Password" value="{{smtpPass}}">
</div>
</div>