Reload mailer config once admin updates Mailtrain settings
This commit is contained in:
parent
9946f70992
commit
50f6c8d101
6 changed files with 27 additions and 11 deletions
3
index.js
3
index.js
|
@ -17,6 +17,7 @@ let postfixBounceServer = require('./services/postfix-bounce-server');
|
||||||
let tzupdate = require('./services/tzupdate');
|
let tzupdate = require('./services/tzupdate');
|
||||||
let feedcheck = require('./services/feedcheck');
|
let feedcheck = require('./services/feedcheck');
|
||||||
let dbcheck = require('./lib/dbcheck');
|
let dbcheck = require('./lib/dbcheck');
|
||||||
|
let tools = require('./lib/tools');
|
||||||
|
|
||||||
let port = config.www.port;
|
let port = config.www.port;
|
||||||
let host = config.www.host;
|
let host = config.www.host;
|
||||||
|
@ -88,9 +89,11 @@ function spawnSenders(callback) {
|
||||||
|
|
||||||
let child = fork(__dirname + '/services/sender.js', []);
|
let child = fork(__dirname + '/services/sender.js', []);
|
||||||
let pid = child.pid;
|
let pid = child.pid;
|
||||||
|
tools.workers.add(child);
|
||||||
|
|
||||||
child.on('close', (code, signal) => {
|
child.on('close', (code, signal) => {
|
||||||
spawned--;
|
spawned--;
|
||||||
|
tools.workers.delete(child);
|
||||||
log.error('Child', 'Sender process %s exited with %s', pid, code || signal);
|
log.error('Child', 'Sender process %s exited with %s', pid, code || signal);
|
||||||
// Respawn after 5 seconds
|
// Respawn after 5 seconds
|
||||||
setTimeout(() => spawnSender(), 5 * 1000).unref();
|
setTimeout(() => spawnSender(), 5 * 1000).unref();
|
||||||
|
|
|
@ -19,7 +19,8 @@ module.exports = {
|
||||||
validateEmail,
|
validateEmail,
|
||||||
formatMessage,
|
formatMessage,
|
||||||
getMessageLinks,
|
getMessageLinks,
|
||||||
prepareHtml
|
prepareHtml,
|
||||||
|
workers: new Set()
|
||||||
};
|
};
|
||||||
|
|
||||||
function toDbKey(key) {
|
function toDbKey(key) {
|
||||||
|
|
16
package.json
16
package.json
|
@ -35,7 +35,7 @@
|
||||||
"compression": "^1.6.2",
|
"compression": "^1.6.2",
|
||||||
"config": "^1.24.0",
|
"config": "^1.24.0",
|
||||||
"connect-flash": "^0.1.1",
|
"connect-flash": "^0.1.1",
|
||||||
"connect-redis": "^3.1.0",
|
"connect-redis": "^3.2.0",
|
||||||
"cookie-parser": "^1.4.3",
|
"cookie-parser": "^1.4.3",
|
||||||
"csurf": "^1.9.0",
|
"csurf": "^1.9.0",
|
||||||
"csv-generate": "^1.0.0",
|
"csv-generate": "^1.0.0",
|
||||||
|
@ -49,21 +49,21 @@
|
||||||
"handlebars": "^4.0.6",
|
"handlebars": "^4.0.6",
|
||||||
"hbs": "^4.0.1",
|
"hbs": "^4.0.1",
|
||||||
"he": "^1.1.0",
|
"he": "^1.1.0",
|
||||||
"html-to-text": "^2.1.3",
|
"html-to-text": "^3.0.0",
|
||||||
"humanize": "0.0.9",
|
"humanize": "0.0.9",
|
||||||
"is-url": "^1.2.2",
|
"is-url": "^1.2.2",
|
||||||
"isemail": "^2.2.1",
|
"isemail": "^2.2.1",
|
||||||
"jsdom": "^9.8.3",
|
"jsdom": "^9.9.1",
|
||||||
"juice": "^4.0.2",
|
"juice": "^4.0.2",
|
||||||
"libmime": "^3.0.0",
|
"libmime": "^3.0.0",
|
||||||
"mkdirp": "^0.5.1",
|
"mkdirp": "^0.5.1",
|
||||||
"moment-timezone": "^0.5.10",
|
"moment-timezone": "^0.5.11",
|
||||||
"morgan": "^1.7.0",
|
"morgan": "^1.7.0",
|
||||||
"multer": "^1.2.0",
|
"multer": "^1.2.1",
|
||||||
"mysql": "^2.12.0",
|
"mysql": "^2.12.0",
|
||||||
"nodemailer": "^2.7.0",
|
"nodemailer": "^2.7.0",
|
||||||
"nodemailer-openpgp": "^1.0.2",
|
"nodemailer-openpgp": "^1.0.2",
|
||||||
"npmlog": "^4.0.1",
|
"npmlog": "^4.0.2",
|
||||||
"openpgp": "^2.3.5",
|
"openpgp": "^2.3.5",
|
||||||
"passport": "^0.3.2",
|
"passport": "^0.3.2",
|
||||||
"passport-local": "^1.0.0",
|
"passport-local": "^1.0.0",
|
||||||
|
@ -73,8 +73,8 @@
|
||||||
"serve-favicon": "^2.3.2",
|
"serve-favicon": "^2.3.2",
|
||||||
"shortid": "^2.2.6",
|
"shortid": "^2.2.6",
|
||||||
"slugify": "^1.0.2",
|
"slugify": "^1.0.2",
|
||||||
"smtp-server": "^1.16.1",
|
"smtp-server": "^1.17.0",
|
||||||
"striptags": "^2.1.1",
|
"striptags": "^2.1.1",
|
||||||
"toml": "^2.3.0"
|
"toml": "^2.3.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,6 +87,11 @@ router.post('/update', passport.parseForm, passport.csrfProtection, (req, res) =
|
||||||
let storeSettings = () => {
|
let storeSettings = () => {
|
||||||
if (i >= keys.length) {
|
if (i >= keys.length) {
|
||||||
mailer.update();
|
mailer.update();
|
||||||
|
tools.workers.forEach(worker => {
|
||||||
|
worker.send({
|
||||||
|
reload: true
|
||||||
|
});
|
||||||
|
});
|
||||||
req.flash('success', 'Settings updated');
|
req.flash('success', 'Settings updated');
|
||||||
return res.redirect('/settings');
|
return res.redirect('/settings');
|
||||||
}
|
}
|
||||||
|
|
|
@ -544,3 +544,10 @@ let sendLoop = () => {
|
||||||
};
|
};
|
||||||
|
|
||||||
sendLoop();
|
sendLoop();
|
||||||
|
|
||||||
|
process.on('message', m => {
|
||||||
|
if (m && m.reload) {
|
||||||
|
log.info('Sender/' + process.pid, 'Reloading mailer config');
|
||||||
|
mailer.update();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
|
@ -173,14 +173,14 @@
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="smtp-user" class="col-sm-2 control-label">Username</label>
|
<label for="smtp-user" class="col-sm-2 control-label">Username</label>
|
||||||
<div class="col-sm-10">
|
<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>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="smtp-pass" class="col-sm-2 control-label">Password</label>
|
<label for="smtp-pass" class="col-sm-2 control-label">Password</label>
|
||||||
<div class="col-sm-10">
|
<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>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue