From a3e07514a959683d4b9ad9633e052d53564749dc Mon Sep 17 00:00:00 2001 From: =?utf8?q?Wilfried=20G=C3=B6esgens?= Date: Mon, 11 Feb 2008 21:33:35 +0000 Subject: [PATCH] * allow LMTP posting to all rooms. --- citadel/modules/smtp/serv_smtp.c | 8 ++++++-- citadel/msgbase.c | 3 ++- citadel/msgbase.h | 3 ++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/citadel/modules/smtp/serv_smtp.c b/citadel/modules/smtp/serv_smtp.c index cd858ba10..a79bd0df4 100644 --- a/citadel/modules/smtp/serv_smtp.c +++ b/citadel/modules/smtp/serv_smtp.c @@ -593,7 +593,9 @@ void smtp_rcpt(char *argbuf) { valid = validate_recipients(recp, smtp_get_Recipients (), - (CC->logged_in)? POST_LOGGED_IN:POST_EXTERNAL); + (SMTP->is_lmtp)? POST_LMTP: + (CC->logged_in)? POST_LOGGED_IN: + POST_EXTERNAL); if (valid->num_error != 0) { cprintf("550 %s\r\n", valid->errormsg); free_recipients(valid); @@ -717,7 +719,9 @@ void smtp_data(void) { /* Submit the message into the Citadel system. */ valid = validate_recipients(SMTP->recipients, smtp_get_Recipients (), - (CC->logged_in)? POST_LOGGED_IN:POST_EXTERNAL); + (SMTP->is_lmtp)? POST_LMTP: + (CC->logged_in)? POST_LOGGED_IN: + POST_EXTERNAL); /* If there are modules that want to scan this message before final * submission (such as virus checkers or spam filters), call them now diff --git a/citadel/msgbase.c b/citadel/msgbase.c index a76a24274..75f8d4366 100644 --- a/citadel/msgbase.c +++ b/citadel/msgbase.c @@ -3106,6 +3106,7 @@ int CtdlDoIHavePermissionToPostInThisRoom(char *errmsgbuf, return (0); // We're Evaling whether a recipient exists } else if (!(CC->logged_in)) { + if ((CC->room.QRflags & QR_READONLY)) { snprintf(errmsgbuf, n, "Not logged in."); return (ERROR + NOT_LOGGED_IN); @@ -3114,7 +3115,7 @@ int CtdlDoIHavePermissionToPostInThisRoom(char *errmsgbuf, snprintf(errmsgbuf, n, "Not logged in Moderation feature not yet implemented!"); return (ERROR + NOT_LOGGED_IN); } - if ((CC->room.QRflags2 & QR2_SMTP_PUBLIC) == 0) { + if ((PostPublic!=POST_LMTP) &&(CC->room.QRflags2 & QR2_SMTP_PUBLIC) == 0) { SpoolControl *sc; char filename[SIZ]; int found; diff --git a/citadel/msgbase.h b/citadel/msgbase.h index 685f8bb11..731f1bcd0 100644 --- a/citadel/msgbase.h +++ b/citadel/msgbase.h @@ -152,7 +152,8 @@ int CtdlDoIHavePermissionToDeleteMessagesFromThisRoom(void); enum { POST_LOGGED_IN, POST_EXTERNAL, - CHECK_EXISTANCE + CHECK_EXISTANCE, + POST_LMTP }; int CtdlDoIHavePermissionToPostInThisRoom(char *errmsgbuf, size_t n, -- 2.30.2