make recvmail work

unlike sendmail, recvmail is always optional. this is the case because
the cloudron may not receive emails at all, so app always has to be
prepared for it.

part of #804
This commit is contained in:
Girish Ramakrishnan
2021-10-01 12:09:13 -07:00
parent aed84a6ac9
commit a3fc5f226a
7 changed files with 134 additions and 46 deletions

View File

@@ -33,6 +33,7 @@ exports = module.exports = {
setDebugMode,
setEnvironment,
setMailbox,
setInbox,
setLocation,
setDataDir,
setMounts,
@@ -369,6 +370,22 @@ async function setMailbox(req, res, next) {
next(new HttpSuccess(202, { taskId: result.taskId }));
}
async function setInbox(req, res, next) {
assert.strictEqual(typeof req.body, 'object');
assert.strictEqual(typeof req.app, 'object');
if (typeof req.body.enable !== 'boolean') return next(new HttpError(400, 'enable must be a boolean'));
if (req.body.enable) {
if (typeof req.body.inboxName !== 'string') return next(new HttpError(400, 'inboxName must be a string'));
if (typeof req.body.inboxDomain !== 'string') return next(new HttpError(400, 'inboxDomain must be a string'));
}
const [error, result] = await safe(apps.setInbox(req.app, req.body, AuditSource.fromRequest(req)));
if (error) return next(BoxError.toHttpError(error));
next(new HttpSuccess(202, { taskId: result.taskId }));
}
async function setLocation(req, res, next) {
assert.strictEqual(typeof req.body, 'object');
assert.strictEqual(typeof req.app, 'object');
@@ -621,11 +638,11 @@ function getLogStream(req, res, next) {
async function getLogs(req, res, next) {
assert.strictEqual(typeof req.app, 'object');
var lines = 'lines' in req.query ? parseInt(req.query.lines, 10) : 10;
const lines = 'lines' in req.query ? parseInt(req.query.lines, 10) : 10;
if (isNaN(lines)) return next(new HttpError(400, 'lines must be a number'));
var options = {
lines: lines,
const options = {
lines,
follow: false,
format: req.query.format || 'json'
};