From ac8ac7c6d642c69604492636a514ee6801094e56 Mon Sep 17 00:00:00 2001 From: Andris Reinman Date: Sat, 16 Apr 2016 10:11:10 -0700 Subject: [PATCH] Send encrypted messages to users with GPG key set --- lib/mailer.js | 2 ++ lib/models/segments.js | 3 +++ package.json | 3 ++- routes/segments.js | 2 ++ services/sender.js | 9 ++++++++- views/lists/segments/rule-configure.hbs | 12 ------------ views/lists/segments/rule-edit.hbs | 12 ------------ 7 files changed, 17 insertions(+), 26 deletions(-) diff --git a/lib/mailer.js b/lib/mailer.js index dce34cb4..28a5c32c 100644 --- a/lib/mailer.js +++ b/lib/mailer.js @@ -3,6 +3,7 @@ let log = require('npmlog'); let nodemailer = require('nodemailer'); +let openpgpEncrypt = require('nodemailer-openpgp').openpgpEncrypt; let settings = require('./models/settings'); let Handlebars = require('handlebars'); let fs = require('fs'); @@ -108,6 +109,7 @@ function createMailer(callback) { rejectUnauthorized: !configItems.smtpSelfSigned } }); + module.exports.transport.use('stream', openpgpEncrypt()); return callback(null, module.exports.transport); }); diff --git a/lib/models/segments.js b/lib/models/segments.js index edd28e17..63025fb8 100644 --- a/lib/models/segments.js +++ b/lib/models/segments.js @@ -99,6 +99,9 @@ module.exports.get = (id, callback) => { segment.columns = [].concat(module.exports.defaultColumns); fieldList.forEach(field => { + if (fields.genericTypes[field.type] === 'textarea') { + return; + } if (field.column) { segment.columns.push({ column: field.column, diff --git a/package.json b/package.json index c2edc989..536cb510 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "grunt": "^1.0.1", "grunt-cli": "^1.2.0", "grunt-contrib-nodeunit": "^1.0.0", - "grunt-eslint": "^18.0.0" + "grunt-eslint": "^18.1.0" }, "dependencies": { "bcrypt-nodejs": "0.0.3", @@ -47,6 +47,7 @@ "multer": "^1.1.0", "mysql": "^2.10.2", "nodemailer": "^2.3.2", + "nodemailer-openpgp": "^1.0.1", "npmlog": "^2.0.3", "openpgp": "^2.2.1", "passport": "^0.3.2", diff --git a/routes/segments.js b/routes/segments.js index 8ce723a5..f9c5d48d 100644 --- a/routes/segments.js +++ b/routes/segments.js @@ -235,6 +235,8 @@ router.get('/:list/rules/:segment/create', passport.csrfProtection, (req, res) = } segment.csrfToken = req.csrfToken(); + + console.log(segment); segment.list = list; res.render('lists/segments/rule-create', segment); diff --git a/services/sender.js b/services/sender.js index 3388a80e..289a3956 100644 --- a/services/sender.js +++ b/services/sender.js @@ -130,10 +130,16 @@ function formatMessage(message, callback) { FULL_NAME: [].concat(message.subscription.firstName || []).concat(message.subscription.lastName || []).join(' ') }; + let encryptionKeys = []; fields.getRow(fieldList, message.subscription, true, true).forEach(field => { if (field.mergeTag) { message.subscription.mergeTags[field.mergeTag] = field.mergeValue || ''; } + + if (field.type === 'gpg' && field.value) { + encryptionKeys.push(field.value.trim()); + } + if (field.options) { field.options.forEach(subField => { if (subField.mergeTag) { @@ -206,7 +212,8 @@ function formatMessage(message, callback) { html: tools.formatMessage(configItems.serviceUrl, campaign, list, message.subscription, html), text: tools.formatMessage(configItems.serviceUrl, campaign, list, message.subscription, campaign.text), - attachments + attachments, + encryptionKeys }); }); }); diff --git a/views/lists/segments/rule-configure.hbs b/views/lists/segments/rule-configure.hbs index b2a364c7..e8509374 100644 --- a/views/lists/segments/rule-configure.hbs +++ b/views/lists/segments/rule-configure.hbs @@ -32,18 +32,6 @@ {{/if}} - {{#if columnTypeTextarea}} -
-
-
- -
-
-
- {{/if}} - {{#if columnTypeNumber}}
diff --git a/views/lists/segments/rule-edit.hbs b/views/lists/segments/rule-edit.hbs index 99cb604c..6d84ee35 100644 --- a/views/lists/segments/rule-edit.hbs +++ b/views/lists/segments/rule-edit.hbs @@ -37,18 +37,6 @@
{{/if}} - {{#if columnTypeTextarea}} -
-
-
- -
-
-
- {{/if}} - {{#if columnTypeNumber}}