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) {
 | 
			
		||||
                return callback(err);
 | 
			
		||||
            }
 | 
			
		||||
            if (!list) {
 | 
			
		||||
                return callback(new Error('Selected list not found'));
 | 
			
		||||
            }
 | 
			
		||||
            return callback(null, list);
 | 
			
		||||
            return callback(null, list || {
 | 
			
		||||
                id: listId
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -649,10 +648,9 @@ module.exports.update = (id, updates, callback) => {
 | 
			
		|||
            if (err) {
 | 
			
		||||
                return callback(err);
 | 
			
		||||
            }
 | 
			
		||||
            if (!list) {
 | 
			
		||||
                return callback(new Error('Selected list not found'));
 | 
			
		||||
            }
 | 
			
		||||
            return callback(null, list);
 | 
			
		||||
            return callback(null, list || {
 | 
			
		||||
                id: listId
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										17
									
								
								package.json
									
										
									
									
									
								
							
							
						
						
									
										17
									
								
								package.json
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -38,7 +38,7 @@
 | 
			
		|||
    "connect-redis": "^3.1.0",
 | 
			
		||||
    "cookie-parser": "^1.4.3",
 | 
			
		||||
    "csurf": "^1.9.0",
 | 
			
		||||
    "csv-parse": "^1.1.2",
 | 
			
		||||
    "csv-parse": "^1.1.7",
 | 
			
		||||
    "escape-html": "^1.0.3",
 | 
			
		||||
    "express": "^4.14.0",
 | 
			
		||||
    "express-session": "^1.14.0",
 | 
			
		||||
| 
						 | 
				
			
			@ -51,25 +51,26 @@
 | 
			
		|||
    "html-to-text": "^2.1.3",
 | 
			
		||||
    "humanize": "0.0.9",
 | 
			
		||||
    "is-url": "^1.2.2",
 | 
			
		||||
    "isemail": "^2.2.0",
 | 
			
		||||
    "isemail": "^2.2.1",
 | 
			
		||||
    "jsdom": "^9.4.1",
 | 
			
		||||
    "juice": "^2.0.0",
 | 
			
		||||
    "libmime": "^2.0.3",
 | 
			
		||||
    "mkdirp": "^0.5.1",
 | 
			
		||||
    "moment-timezone": "^0.5.4",
 | 
			
		||||
    "moment-timezone": "^0.5.5",
 | 
			
		||||
    "morgan": "^1.7.0",
 | 
			
		||||
    "multer": "^1.1.0",
 | 
			
		||||
    "multer": "^1.2.0",
 | 
			
		||||
    "mysql": "^2.11.1",
 | 
			
		||||
    "nodemailer": "^2.5.0",
 | 
			
		||||
    "nodemailer-openpgp": "^1.0.2",
 | 
			
		||||
    "npmlog": "^3.1.2",
 | 
			
		||||
    "npmlog": "^4.0.0",
 | 
			
		||||
    "openpgp": "^2.3.2",
 | 
			
		||||
    "passport": "^0.3.2",
 | 
			
		||||
    "passport-local": "^1.0.0",
 | 
			
		||||
    "request": "^2.73.0",
 | 
			
		||||
    "request": "^2.74.0",
 | 
			
		||||
    "serve-favicon": "^2.3.0",
 | 
			
		||||
    "shortid": "^2.2.6",
 | 
			
		||||
    "slugify": "^0.1.1",
 | 
			
		||||
    "smtp-server": "^1.11.0",
 | 
			
		||||
    "slugify": "^1.0.2",
 | 
			
		||||
    "smtp-server": "^1.14.0",
 | 
			
		||||
    "striptags": "^2.1.1",
 | 
			
		||||
    "toml": "^2.3.0"
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -171,7 +171,9 @@ router.get('/edit/:id', passport.csrfProtection, (req, res, next) => {
 | 
			
		|||
                            return callback(err);
 | 
			
		||||
                        }
 | 
			
		||||
                        if (!list) {
 | 
			
		||||
                            return callback(new Error('Selected list not found'));
 | 
			
		||||
                            list = {
 | 
			
		||||
                                id: listId
 | 
			
		||||
                            };
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        fields.list(list.id, (err, fieldList) => {
 | 
			
		||||
| 
						 | 
				
			
			@ -330,7 +332,9 @@ router.get('/view/:id', passport.csrfProtection, (req, res) => {
 | 
			
		|||
                    return callback(err);
 | 
			
		||||
                }
 | 
			
		||||
                if (!list) {
 | 
			
		||||
                    return callback(new Error('Selected list not found'));
 | 
			
		||||
                    list = {
 | 
			
		||||
                        id: listId
 | 
			
		||||
                    };
 | 
			
		||||
                }
 | 
			
		||||
                subscriptions.listTestUsers(listId, (err, testUsers) => {
 | 
			
		||||
                    if (err || !testUsers) {
 | 
			
		||||
| 
						 | 
				
			
			@ -468,7 +472,9 @@ router.get('/status/:id/:status', passport.csrfProtection, (req, res) => {
 | 
			
		|||
                    return callback(err);
 | 
			
		||||
                }
 | 
			
		||||
                if (!list) {
 | 
			
		||||
                    return callback(new Error('Selected list not found'));
 | 
			
		||||
                    list = {
 | 
			
		||||
                        id: listId
 | 
			
		||||
                    };
 | 
			
		||||
                }
 | 
			
		||||
                return callback(null, list);
 | 
			
		||||
            });
 | 
			
		||||
| 
						 | 
				
			
			@ -506,7 +512,9 @@ router.get('/clicked/:id/:linkId', passport.csrfProtection, (req, res) => {
 | 
			
		|||
                    return callback(err);
 | 
			
		||||
                }
 | 
			
		||||
                if (!list) {
 | 
			
		||||
                    return callback(new Error('Selected list not found'));
 | 
			
		||||
                    list = {
 | 
			
		||||
                        id: listId
 | 
			
		||||
                    };
 | 
			
		||||
                }
 | 
			
		||||
                return callback(null, list);
 | 
			
		||||
            });
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,6 +16,7 @@ let url = require('url');
 | 
			
		|||
let htmlToText = require('html-to-text');
 | 
			
		||||
let request = require('request');
 | 
			
		||||
let caches = require('../lib/caches');
 | 
			
		||||
let libmime = require('libmime');
 | 
			
		||||
 | 
			
		||||
function findUnsent(callback) {
 | 
			
		||||
    let returnUnsent = (row, campaign) => {
 | 
			
		||||
| 
						 | 
				
			
			@ -307,7 +308,7 @@ function formatMessage(message, callback) {
 | 
			
		|||
                                    }),
 | 
			
		||||
                                    'List-ID': {
 | 
			
		||||
                                        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: {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue