This commit is contained in:
Andris Reinman 2020-07-16 16:57:13 +03:00
parent ea7d3c5655
commit 6d17dbccf3
4 changed files with 26 additions and 22 deletions

View file

@ -7,7 +7,7 @@ const fs = require('fs');
const parseMimeTree = require('../lib/indexer/parse-mime-tree');
const imapHandler = require('../lib/handler/imap-handler');
module.exports = function(options) {
module.exports = function (options) {
// This example uses global folders and subscriptions
let folders = new Map();
let subscriptions = new WeakSet();
@ -25,7 +25,9 @@ module.exports = function(options) {
flags: [],
modseq: 100,
idate: new Date('14-Sep-2013 21:22:28 -0300'),
mimeTree: parseMimeTree(Buffer.from('from: sender@example.com\r\nto: to@example.com\r\ncc: cc@example.com\r\nsubject: test\r\n\r\nzzzz\r\n'))
mimeTree: parseMimeTree(
Buffer.from('from: sender@example.com\r\nto: to@example.com\r\ncc: cc@example.com\r\nsubject: test\r\n\r\nzzzz\r\n')
)
},
{
uid: 49,
@ -44,7 +46,7 @@ module.exports = function(options) {
'From: andris@kreata.ee\r\n' +
'To: andris@tr.ee\r\n' +
'Content-Type: multipart/mixed;\r\n' +
' boundary=\'----mailcomposer-?=_1-1328088797399\'\r\n' +
" boundary='----mailcomposer-?=_1-1328088797399'\r\n" +
'Message-Id: <testmessage-for-bug>;\r\n' +
'\r\n' +
'------mailcomposer-?=_1-1328088797399\r\n' +
@ -126,7 +128,7 @@ module.exports = function(options) {
console.log('SERVER ERR\n%s', err.stack); // eslint-disable-line no-console
});
server.onAuth = function(login, session, callback) {
server.onAuth = function (login, session, callback) {
if (login.username !== 'testuser' || login.password !== 'pass') {
return callback();
}
@ -142,7 +144,7 @@ module.exports = function(options) {
// LIST "" "*"
// Returns all folders, query is informational
// folders is either an Array or a Map
server.onList = function(query, session, callback) {
server.onList = function (query, session, callback) {
this.logger.debug('[%s] LIST for "%s"', session.id, query);
callback(null, folders);
@ -151,7 +153,7 @@ module.exports = function(options) {
// LSUB "" "*"
// Returns all subscribed folders, query is informational
// folders is either an Array or a Map
server.onLsub = function(query, session, callback) {
server.onLsub = function (query, session, callback) {
this.logger.debug('[%s] LSUB for "%s"', session.id, query);
let subscribed = [];
@ -165,7 +167,7 @@ module.exports = function(options) {
};
// SUBSCRIBE "path/to/mailbox"
server.onSubscribe = function(mailbox, session, callback) {
server.onSubscribe = function (mailbox, session, callback) {
this.logger.debug('[%s] SUBSCRIBE to "%s"', session.id, mailbox);
if (!folders.has(mailbox)) {
@ -177,7 +179,7 @@ module.exports = function(options) {
};
// UNSUBSCRIBE "path/to/mailbox"
server.onUnsubscribe = function(mailbox, session, callback) {
server.onUnsubscribe = function (mailbox, session, callback) {
this.logger.debug('[%s] UNSUBSCRIBE from "%s"', session.id, mailbox);
if (!folders.has(mailbox)) {
@ -189,7 +191,7 @@ module.exports = function(options) {
};
// CREATE "path/to/mailbox"
server.onCreate = function(mailbox, session, callback) {
server.onCreate = function (mailbox, session, callback) {
this.logger.debug('[%s] CREATE "%s"', session.id, mailbox);
if (folders.has(mailbox)) {
@ -211,7 +213,7 @@ module.exports = function(options) {
// RENAME "path/to/mailbox" "new/path"
// NB! RENAME affects child and hierarchy mailboxes as well, this example does not do this
server.onRename = function(mailbox, newname, session, callback) {
server.onRename = function (mailbox, newname, session, callback) {
this.logger.debug('[%s] RENAME "%s" to "%s"', session.id, mailbox, newname);
if (!folders.has(mailbox)) {
@ -232,7 +234,7 @@ module.exports = function(options) {
};
// DELETE "path/to/mailbox"
server.onDelete = function(mailbox, session, callback) {
server.onDelete = function (mailbox, session, callback) {
this.logger.debug('[%s] DELETE "%s"', session.id, mailbox);
if (!folders.has(mailbox)) {
@ -249,7 +251,7 @@ module.exports = function(options) {
};
// SELECT/EXAMINE
server.onOpen = function(mailbox, session, callback) {
server.onOpen = function (mailbox, session, callback) {
this.logger.debug('[%s] Opening "%s"', session.id, mailbox);
if (!folders.has(mailbox)) {
@ -268,7 +270,7 @@ module.exports = function(options) {
};
// STATUS (X Y X)
server.onStatus = function(mailbox, session, callback) {
server.onStatus = function (mailbox, session, callback) {
this.logger.debug('[%s] Requested status for "%s"', session.id, mailbox);
if (!folders.has(mailbox)) {
@ -287,7 +289,7 @@ module.exports = function(options) {
};
// APPEND mailbox (flags) date message
server.onAppend = function(mailbox, flags, date, raw, session, callback) {
server.onAppend = function (mailbox, flags, date, raw, session, callback) {
this.logger.debug('[%s] Appending message to "%s"', session.id, mailbox);
if (!folders.has(mailbox)) {
@ -327,7 +329,7 @@ module.exports = function(options) {
};
// STORE / UID STORE, updates flags for selected UIDs
server.onStore = function(mailbox, update, session, callback) {
server.onStore = function (mailbox, update, session, callback) {
this.logger.debug('[%s] Updating messages in "%s"', session.id, mailbox);
if (!folders.has(mailbox)) {
@ -426,7 +428,7 @@ module.exports = function(options) {
};
// EXPUNGE deletes all messages in selected mailbox marked with \Delete
server.onExpunge = function(mailbox, update, session, callback) {
server.onExpunge = function (mailbox, update, session, callback) {
this.logger.debug('[%s] Deleting messages from "%s"', session.id, mailbox);
if (!folders.has(mailbox)) {
@ -466,7 +468,7 @@ module.exports = function(options) {
};
// COPY / UID COPY sequence mailbox
server.onCopy = function(mailbox, update, session, callback) {
server.onCopy = function (mailbox, update, session, callback) {
this.logger.debug('[%s] Copying messages from "%s" to "%s"', session.id, mailbox, update.destination);
if (!folders.has(mailbox)) {
@ -517,7 +519,7 @@ module.exports = function(options) {
};
// sends results to socket
server.onFetch = function(mailbox, options, session, callback) {
server.onFetch = function (mailbox, options, session, callback) {
this.logger.debug('[%s] Requested FETCH for "%s"', session.id, mailbox);
this.logger.debug('[%s] FETCH: %s', session.id, JSON.stringify(options.query));
if (!folders.has(mailbox)) {
@ -583,7 +585,7 @@ module.exports = function(options) {
};
// returns an array of matching UID values and the highest modseq of matching messages
server.onSearch = function(mailbox, options, session, callback) {
server.onSearch = function (mailbox, options, session, callback) {
if (!folders.has(mailbox)) {
return callback(null, 'NONEXISTENT');
}

View file

@ -493,7 +493,6 @@ module.exports = (db, server, mailboxHandler) => {
'/users/:user/mailboxes/:mailbox',
tools.asyncifyJson(async (req, res, next) => {
res.charSet('utf-8');
console.log(req.params);
const schema = Joi.object().keys({
user: Joi.string().hex().lowercase().length(24).required(),
mailbox: Joi.string().hex().lowercase().length(24).allow('resolve').required(),

View file

@ -38,6 +38,8 @@ class FilterHandler {
gfs: options.sender.gfs,
loopSecret: options.sender.loopSecret
});
this.loggelf = options.loggelf || (() => false);
}
getUserData(address, callback) {
@ -312,6 +314,7 @@ class FilterHandler {
let forwardMessage = async () => {
if (!filterActions.get('delete')) {
// forward to default recipient only if the message is not deleted
if (userData.targets && userData.targets.length) {
userData.targets.forEach(targetData => {
let key = targetData.value;

View file

@ -1,6 +1,6 @@
{
"name": "wildduck",
"version": "1.27.2",
"version": "1.27.3",
"description": "IMAP/POP3 server built with Node.js and MongoDB",
"main": "server.js",
"scripts": {
@ -73,7 +73,7 @@
"smtp-server": "3.7.0",
"speakeasy": "2.0.0",
"u2f": "0.1.3",
"unixcrypt": "^1.0.11",
"unixcrypt": "1.0.11",
"uuid": "8.2.0",
"wild-config": "1.5.1",
"yargs": "15.4.1"