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/",