Mercurial > hg > mlmmj
changeset 386:7a484c4b7925
Add moderate tag to access rules
author | mmj |
---|---|
date | Fri, 26 Nov 2004 07:00:53 +1100 |
parents | 7af8e020f294 |
children | 76232e610354 |
files | src/mlmmj-process.c |
diffstat | 1 files changed, 28 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/mlmmj-process.c Fri Nov 26 03:04:05 2004 +1100 +++ b/src/mlmmj-process.c Fri Nov 26 07:00:53 2004 +1100 @@ -53,7 +53,8 @@ enum action { ALLOW, - DENY + DENY, + MODERATE }; @@ -191,6 +192,9 @@ } else if (strncmp(rule_ptr, "deny", 4) == 0) { rule_ptr += 4; new_rule->act = DENY; + } else if (strncmp(rule_ptr, "moderate", 8) == 0) { + rule_ptr += 8; + new_rule->act = MODERATE; } else { errno = 0; log_error(LOG_ARGS, "Unable to parse rule #%d!" @@ -260,11 +264,24 @@ } } if (match != rule->not) { + char *logstr; + errno = 0; + switch(rule->act) { + case ALLOW: + logstr = "allowed"; + break; + case MODERATE: + logstr = "moderated"; + break; + default: + case DENY: + logstr = "denied"; + break; + } + log_error(LOG_ARGS, "A mail was %s by rule #%d", - (rule->act == ALLOW) ? - "allowed" : "denied", - rule_nr); + logstr, rule_nr); ret = rule->act; free_rules(head); return ret; @@ -659,6 +676,7 @@ access_rules = ctrlvalues(listdir, "access"); if (access_rules) { + enum action accret; /* Don't send a mail about denial to the list, but silently * discard and exit */ if (strcasecmp(listaddr, fromemails.emaillist[0]) == 0) { @@ -667,7 +685,8 @@ myfree(donemailname); exit(EXIT_SUCCESS); } - if (do_access(access_rules, &allheaders) == DENY) { + accret = do_access(access_rules, &allheaders); + if (accret == DENY) { listname = genlistname(listaddr); listfqdn = genlistfqdn(listaddr); fromaddr = concatstr(3, listname, "+bounces-help@", @@ -692,10 +711,12 @@ log_error(LOG_ARGS, "execlp() of '%s' failed", mlmmjsend); exit(EXIT_FAILURE); + } else if (accret == MODERATE) { + moderated = 1; } } - + if(!moderated) moderated = statctrl(listdir, "moderated"); if(moderated) { mqueuename = concatstr(3, listdir, "/moderation/",