diff --git a/src/routes/mail.js b/src/routes/mail.js index b1c896fbf..72581c239 100644 --- a/src/routes/mail.js +++ b/src/routes/mail.js @@ -4,6 +4,7 @@ exports = module.exports = { get: get, add: add, + getStats: getStats, update: update, del: del, @@ -34,7 +35,11 @@ var assert = require('assert'), mail = require('../mail.js'), MailError = mail.MailError, HttpError = require('connect-lastmile').HttpError, - HttpSuccess = require('connect-lastmile').HttpSuccess; + HttpSuccess = require('connect-lastmile').HttpSuccess, + middleware = require('../middleware/index.js'), + url = require('url'); + +var mailProxy = middleware.proxy(url.parse('http://127.0.0.1:2020')); function get(req, res, next) { assert.strictEqual(typeof req.params.domain, 'string'); @@ -61,6 +66,19 @@ function add(req, res, next) { }); } +function getStats(req, res, next) { + assert.strictEqual(typeof req.params.domain, 'string'); + + var parsedUrl = url.parse(req.url, true /* parseQueryString */); + delete parsedUrl.query['access_token']; + delete req.headers['authorization']; + delete req.headers['cookies']; + + req.url = url.format({ pathname: req.params.domain, query: parsedUrl.query }); + + mailProxy(req, res, next); +} + function update(req, res, next) { assert.strictEqual(typeof req.body, 'object'); assert.strictEqual(typeof req.params.domain, 'string'); diff --git a/src/server.js b/src/server.js index 344618542..4f8e996ed 100644 --- a/src/server.js +++ b/src/server.js @@ -217,6 +217,7 @@ function initializeExpressSync() { router.get ('/api/v1/mail/:domain', settingsScope, routes.user.requireAdmin, routes.mail.get); router.post('/api/v1/mail/:domain', settingsScope, routes.user.requireAdmin, routes.mail.update); router.post('/api/v1/mail', settingsScope, routes.user.requireAdmin, routes.mail.add); + router.get ('/api/v1/mail/:domain/stats', settingsScope, routes.user.requireAdmin, routes.user.verifyPassword, routes.mail.getStats); router.del ('/api/v1/mail/:domain', settingsScope, routes.user.requireAdmin, routes.user.verifyPassword, routes.mail.del); router.get ('/api/v1/mail/:domain/status', settingsScope, routes.user.requireAdmin, routes.mail.getStatus); router.post('/api/v1/mail/:domain/mail_from_validation', settingsScope, routes.user.requireAdmin, routes.mail.setMailFromValidation);