Encode List-ID header, allow access to campaigns with deleted list
This commit is contained in:
parent
0b6d549af4
commit
fb7fd7238f
4 changed files with 29 additions and 21 deletions
|
@ -465,10 +465,9 @@ module.exports.create = (campaign, opts, callback) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
if (!list) {
|
return callback(null, list || {
|
||||||
return callback(new Error('Selected list not found'));
|
id: listId
|
||||||
}
|
});
|
||||||
return callback(null, list);
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -649,10 +648,9 @@ module.exports.update = (id, updates, callback) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
if (!list) {
|
return callback(null, list || {
|
||||||
return callback(new Error('Selected list not found'));
|
id: listId
|
||||||
}
|
});
|
||||||
return callback(null, list);
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
17
package.json
17
package.json
|
@ -38,7 +38,7 @@
|
||||||
"connect-redis": "^3.1.0",
|
"connect-redis": "^3.1.0",
|
||||||
"cookie-parser": "^1.4.3",
|
"cookie-parser": "^1.4.3",
|
||||||
"csurf": "^1.9.0",
|
"csurf": "^1.9.0",
|
||||||
"csv-parse": "^1.1.2",
|
"csv-parse": "^1.1.7",
|
||||||
"escape-html": "^1.0.3",
|
"escape-html": "^1.0.3",
|
||||||
"express": "^4.14.0",
|
"express": "^4.14.0",
|
||||||
"express-session": "^1.14.0",
|
"express-session": "^1.14.0",
|
||||||
|
@ -51,25 +51,26 @@
|
||||||
"html-to-text": "^2.1.3",
|
"html-to-text": "^2.1.3",
|
||||||
"humanize": "0.0.9",
|
"humanize": "0.0.9",
|
||||||
"is-url": "^1.2.2",
|
"is-url": "^1.2.2",
|
||||||
"isemail": "^2.2.0",
|
"isemail": "^2.2.1",
|
||||||
"jsdom": "^9.4.1",
|
"jsdom": "^9.4.1",
|
||||||
"juice": "^2.0.0",
|
"juice": "^2.0.0",
|
||||||
|
"libmime": "^2.0.3",
|
||||||
"mkdirp": "^0.5.1",
|
"mkdirp": "^0.5.1",
|
||||||
"moment-timezone": "^0.5.4",
|
"moment-timezone": "^0.5.5",
|
||||||
"morgan": "^1.7.0",
|
"morgan": "^1.7.0",
|
||||||
"multer": "^1.1.0",
|
"multer": "^1.2.0",
|
||||||
"mysql": "^2.11.1",
|
"mysql": "^2.11.1",
|
||||||
"nodemailer": "^2.5.0",
|
"nodemailer": "^2.5.0",
|
||||||
"nodemailer-openpgp": "^1.0.2",
|
"nodemailer-openpgp": "^1.0.2",
|
||||||
"npmlog": "^3.1.2",
|
"npmlog": "^4.0.0",
|
||||||
"openpgp": "^2.3.2",
|
"openpgp": "^2.3.2",
|
||||||
"passport": "^0.3.2",
|
"passport": "^0.3.2",
|
||||||
"passport-local": "^1.0.0",
|
"passport-local": "^1.0.0",
|
||||||
"request": "^2.73.0",
|
"request": "^2.74.0",
|
||||||
"serve-favicon": "^2.3.0",
|
"serve-favicon": "^2.3.0",
|
||||||
"shortid": "^2.2.6",
|
"shortid": "^2.2.6",
|
||||||
"slugify": "^0.1.1",
|
"slugify": "^1.0.2",
|
||||||
"smtp-server": "^1.11.0",
|
"smtp-server": "^1.14.0",
|
||||||
"striptags": "^2.1.1",
|
"striptags": "^2.1.1",
|
||||||
"toml": "^2.3.0"
|
"toml": "^2.3.0"
|
||||||
}
|
}
|
||||||
|
|
|
@ -171,7 +171,9 @@ router.get('/edit/:id', passport.csrfProtection, (req, res, next) => {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
if (!list) {
|
if (!list) {
|
||||||
return callback(new Error('Selected list not found'));
|
list = {
|
||||||
|
id: listId
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
fields.list(list.id, (err, fieldList) => {
|
fields.list(list.id, (err, fieldList) => {
|
||||||
|
@ -330,7 +332,9 @@ router.get('/view/:id', passport.csrfProtection, (req, res) => {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
if (!list) {
|
if (!list) {
|
||||||
return callback(new Error('Selected list not found'));
|
list = {
|
||||||
|
id: listId
|
||||||
|
};
|
||||||
}
|
}
|
||||||
subscriptions.listTestUsers(listId, (err, testUsers) => {
|
subscriptions.listTestUsers(listId, (err, testUsers) => {
|
||||||
if (err || !testUsers) {
|
if (err || !testUsers) {
|
||||||
|
@ -468,7 +472,9 @@ router.get('/status/:id/:status', passport.csrfProtection, (req, res) => {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
if (!list) {
|
if (!list) {
|
||||||
return callback(new Error('Selected list not found'));
|
list = {
|
||||||
|
id: listId
|
||||||
|
};
|
||||||
}
|
}
|
||||||
return callback(null, list);
|
return callback(null, list);
|
||||||
});
|
});
|
||||||
|
@ -506,7 +512,9 @@ router.get('/clicked/:id/:linkId', passport.csrfProtection, (req, res) => {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
if (!list) {
|
if (!list) {
|
||||||
return callback(new Error('Selected list not found'));
|
list = {
|
||||||
|
id: listId
|
||||||
|
};
|
||||||
}
|
}
|
||||||
return callback(null, list);
|
return callback(null, list);
|
||||||
});
|
});
|
||||||
|
|
|
@ -16,6 +16,7 @@ let url = require('url');
|
||||||
let htmlToText = require('html-to-text');
|
let htmlToText = require('html-to-text');
|
||||||
let request = require('request');
|
let request = require('request');
|
||||||
let caches = require('../lib/caches');
|
let caches = require('../lib/caches');
|
||||||
|
let libmime = require('libmime');
|
||||||
|
|
||||||
function findUnsent(callback) {
|
function findUnsent(callback) {
|
||||||
let returnUnsent = (row, campaign) => {
|
let returnUnsent = (row, campaign) => {
|
||||||
|
@ -307,7 +308,7 @@ function formatMessage(message, callback) {
|
||||||
}),
|
}),
|
||||||
'List-ID': {
|
'List-ID': {
|
||||||
prepared: true,
|
prepared: true,
|
||||||
value: '"' + list.name.replace(/[^a-z0-9\s'.,\-]/g, '').trim() + '" <' + list.cid + '.' + (url.parse(configItems.serviceUrl).hostname || 'localhost') + '>'
|
value: libmime.encodeWords(list.name) + ' <' + list.cid + '.' + (url.parse(configItems.serviceUrl).hostname || 'localhost') + '>'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
list: {
|
list: {
|
||||||
|
|
Loading…
Reference in a new issue