create ENCRYPTED_EMAIL and IV merge tags to use in unsubscribe link template
This commit is contained in:
parent
3b365701bb
commit
e55fa93d18
4 changed files with 21 additions and 4 deletions
|
@ -6,4 +6,4 @@ enabled=true
|
|||
host="redis"
|
||||
|
||||
[reports]
|
||||
enabled=true
|
||||
enabled=true
|
||||
|
|
|
@ -358,7 +358,8 @@ module.exports.getWithMergeTags = (listId, cid, callback) => {
|
|||
FIRST_NAME: subscription.firstName,
|
||||
LAST_NAME: subscription.lastName,
|
||||
FULL_NAME: [].concat(subscription.firstName || []).concat(subscription.lastName || []).join(' '),
|
||||
TIMEZONE: subscription.tz || ''
|
||||
TIMEZONE: subscription.tz || '',
|
||||
...tools.artstationMergeTags(subscription),
|
||||
};
|
||||
|
||||
fields.getRow(fieldList, subscription, false, true).forEach(field => {
|
||||
|
|
17
lib/tools.js
17
lib/tools.js
|
@ -14,6 +14,8 @@ let _ = require('./translate')._;
|
|||
let util = require('util');
|
||||
let createDOMPurify = require('dompurify');
|
||||
let htmlToText = require('html-to-text');
|
||||
let crypto = require('crypto')
|
||||
let process = require('process')
|
||||
|
||||
let blockedUsers = ['abuse', 'admin', 'billing', 'compliance', 'devnull', 'dns', 'ftp', 'hostmaster', 'inoc', 'ispfeedback', 'ispsupport', 'listrequest', 'list', 'maildaemon', 'noc', 'noreply', 'noreply', 'null', 'phish', 'phishing', 'postmaster', 'privacy', 'registrar', 'root', 'security', 'spam', 'support', 'sysadmin', 'tech', 'undisclosedrecipients', 'unsubscribe', 'usenet', 'uucp', 'webmaster', 'www'];
|
||||
|
||||
|
@ -30,6 +32,7 @@ module.exports = {
|
|||
prepareHtml,
|
||||
purifyHTML,
|
||||
mergeTemplateIntoLayout,
|
||||
artstationMergeTags,
|
||||
workers: new Set()
|
||||
};
|
||||
|
||||
|
@ -211,7 +214,7 @@ function formatMessage(serviceUrl, campaign, list, subscription, message, filter
|
|||
return false;
|
||||
};
|
||||
|
||||
let tagReplace = message =>
|
||||
let tagReplace = message =>
|
||||
message.replace(/\[([a-z0-9_]+)(?:\/([^\]]+))?\]/ig, (match, identifier, fallback) => {
|
||||
identifier = identifier.toUpperCase();
|
||||
let value = getTagValue(identifier);
|
||||
|
@ -321,3 +324,15 @@ function mergeTemplateIntoLayout(template, layout, callback) {
|
|||
return done(template, layout);
|
||||
}
|
||||
}
|
||||
|
||||
function artstationMergeTags(subscription) {
|
||||
const iv = crypto.randomBytes(16)
|
||||
const cipher = crypto.createCipheriv('aes-256-cbc', process.env.ARTSTATION_SECRET, iv)
|
||||
let encrypted_email = cipher.update(subscription.email, 'utf8', 'hex')
|
||||
encrypted_email += cipher.final('hex')
|
||||
|
||||
return {
|
||||
ENCRYPTED_EMAIL: encrypted_email,
|
||||
IV: iv.toString('hex'),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -328,7 +328,8 @@ function formatMessage(message, callback) {
|
|||
EMAIL: message.subscription.email,
|
||||
FIRST_NAME: message.subscription.firstName,
|
||||
LAST_NAME: message.subscription.lastName,
|
||||
FULL_NAME: [].concat(message.subscription.firstName || []).concat(message.subscription.lastName || []).join(' ')
|
||||
FULL_NAME: [].concat(message.subscription.firstName || []).concat(message.subscription.lastName || []).join(' '),
|
||||
...tools.artstationMergeTags(message.subscription),
|
||||
};
|
||||
|
||||
let encryptionKeys = [];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue