var nodemailer = require('nodemailer'); var nconf = require('nconf'); var crypto = require('crypto'); var path = require("path"); module.exports.ga = undefined; // set Google Analytics on nconf init module.exports.sendEmail = function(mailData) { var smtpTransport = nodemailer.createTransport("SMTP",{ service: nconf.get('SMTP_SERVICE'), auth: { user: nconf.get('SMTP_USER'), pass: nconf.get('SMTP_PASS') } }); smtpTransport.sendMail(mailData, function(error, response){ var logging = require('./logging'); if(error) logging.error(error); else logging.info("Message sent: " + response.message); smtpTransport.close(); // shut down the connection pool, no more messages }); } // Encryption using http://dailyjs.com/2010/12/06/node-tutorial-5/ // Note: would use [password-hash](https://github.com/davidwood/node-password-hash), but we need to run // model.query().equals(), so it's a PITA to work in their verify() function module.exports.encryptPassword = function(password, salt) { return crypto.createHmac('sha1', salt).update(password).digest('hex'); } module.exports.makeSalt = function() { var len = 10; return crypto.randomBytes(Math.ceil(len / 2)).toString('hex').substring(0, len); } /** * Load nconf and define default configuration values if config.json or ENV vars are not found */ module.exports.setupConfig = function(){ nconf.argv() .env() //.file('defaults', path.join(path.resolve(__dirname, '../config.json.example'))) .file('user', path.join(path.resolve(__dirname, '../config.json'))); if (nconf.get('NODE_ENV') === "development") Error.stackTraceLimit = Infinity; if (nconf.get('NODE_ENV') === 'production') require('newrelic'); module.exports.ga = require('universal-analytics')(nconf.get('GA_ID')); };