Send encrypted messages to users with GPG key set

This commit is contained in:
Andris Reinman 2016-04-16 10:11:10 -07:00
parent 0f1bc6ab72
commit ac8ac7c6d6
7 changed files with 17 additions and 26 deletions

View file

@ -3,6 +3,7 @@
let log = require('npmlog'); let log = require('npmlog');
let nodemailer = require('nodemailer'); let nodemailer = require('nodemailer');
let openpgpEncrypt = require('nodemailer-openpgp').openpgpEncrypt;
let settings = require('./models/settings'); let settings = require('./models/settings');
let Handlebars = require('handlebars'); let Handlebars = require('handlebars');
let fs = require('fs'); let fs = require('fs');
@ -108,6 +109,7 @@ function createMailer(callback) {
rejectUnauthorized: !configItems.smtpSelfSigned rejectUnauthorized: !configItems.smtpSelfSigned
} }
}); });
module.exports.transport.use('stream', openpgpEncrypt());
return callback(null, module.exports.transport); return callback(null, module.exports.transport);
}); });

View file

@ -99,6 +99,9 @@ module.exports.get = (id, callback) => {
segment.columns = [].concat(module.exports.defaultColumns); segment.columns = [].concat(module.exports.defaultColumns);
fieldList.forEach(field => { fieldList.forEach(field => {
if (fields.genericTypes[field.type] === 'textarea') {
return;
}
if (field.column) { if (field.column) {
segment.columns.push({ segment.columns.push({
column: field.column, column: field.column,

View file

@ -22,7 +22,7 @@
"grunt": "^1.0.1", "grunt": "^1.0.1",
"grunt-cli": "^1.2.0", "grunt-cli": "^1.2.0",
"grunt-contrib-nodeunit": "^1.0.0", "grunt-contrib-nodeunit": "^1.0.0",
"grunt-eslint": "^18.0.0" "grunt-eslint": "^18.1.0"
}, },
"dependencies": { "dependencies": {
"bcrypt-nodejs": "0.0.3", "bcrypt-nodejs": "0.0.3",
@ -47,6 +47,7 @@
"multer": "^1.1.0", "multer": "^1.1.0",
"mysql": "^2.10.2", "mysql": "^2.10.2",
"nodemailer": "^2.3.2", "nodemailer": "^2.3.2",
"nodemailer-openpgp": "^1.0.1",
"npmlog": "^2.0.3", "npmlog": "^2.0.3",
"openpgp": "^2.2.1", "openpgp": "^2.2.1",
"passport": "^0.3.2", "passport": "^0.3.2",

View file

@ -235,6 +235,8 @@ router.get('/:list/rules/:segment/create', passport.csrfProtection, (req, res) =
} }
segment.csrfToken = req.csrfToken(); segment.csrfToken = req.csrfToken();
console.log(segment);
segment.list = list; segment.list = list;
res.render('lists/segments/rule-create', segment); res.render('lists/segments/rule-create', segment);

View file

@ -130,10 +130,16 @@ function formatMessage(message, callback) {
FULL_NAME: [].concat(message.subscription.firstName || []).concat(message.subscription.lastName || []).join(' ') FULL_NAME: [].concat(message.subscription.firstName || []).concat(message.subscription.lastName || []).join(' ')
}; };
let encryptionKeys = [];
fields.getRow(fieldList, message.subscription, true, true).forEach(field => { fields.getRow(fieldList, message.subscription, true, true).forEach(field => {
if (field.mergeTag) { if (field.mergeTag) {
message.subscription.mergeTags[field.mergeTag] = field.mergeValue || ''; message.subscription.mergeTags[field.mergeTag] = field.mergeValue || '';
} }
if (field.type === 'gpg' && field.value) {
encryptionKeys.push(field.value.trim());
}
if (field.options) { if (field.options) {
field.options.forEach(subField => { field.options.forEach(subField => {
if (subField.mergeTag) { if (subField.mergeTag) {
@ -206,7 +212,8 @@ function formatMessage(message, callback) {
html: tools.formatMessage(configItems.serviceUrl, campaign, list, message.subscription, html), html: tools.formatMessage(configItems.serviceUrl, campaign, list, message.subscription, html),
text: tools.formatMessage(configItems.serviceUrl, campaign, list, message.subscription, campaign.text), text: tools.formatMessage(configItems.serviceUrl, campaign, list, message.subscription, campaign.text),
attachments attachments,
encryptionKeys
}); });
}); });
}); });

View file

@ -32,18 +32,6 @@
</div> </div>
{{/if}} {{/if}}
{{#if columnTypeTextarea}}
<div class="form-group">
<div class="col-sm-offset-2 col-xs-4">
<div class="checkbox">
<label>
<input type="checkbox" name="value" {{#if value.value}} checked {{/if}}> Value exists
</label>
</div>
</div>
</div>
{{/if}}
{{#if columnTypeNumber}} {{#if columnTypeNumber}}
<div class="form-group"> <div class="form-group">
<label for="value" class="col-sm-2 control-label">Value</label> <label for="value" class="col-sm-2 control-label">Value</label>

View file

@ -37,18 +37,6 @@
</div> </div>
{{/if}} {{/if}}
{{#if columnTypeTextarea}}
<div class="form-group">
<div class="col-sm-offset-2 col-xs-4">
<div class="checkbox">
<label>
<input type="checkbox" name="value" {{#if value.value}} checked {{/if}}> Value exists
</label>
</div>
</div>
</div>
{{/if}}
{{#if columnTypeNumber}} {{#if columnTypeNumber}}
<div class="form-group"> <div class="form-group">
<label for="value" class="col-sm-2 control-label">Value</label> <label for="value" class="col-sm-2 control-label">Value</label>