*************************************************/
/* Copyright (c) University of Cambridge 1995 - 2018 */
-/* Copyright (c) The Exim Maintainers 2020 */
+/* Copyright (c) The Exim Maintainers 2020 - 2021 */
/* See the file NOTICE for conditions of use and distribution. */
/* Code for handling Access Control Lists (ACLs) */
#include "exim.h"
+#ifndef MACRO_PREDEF
/* Default callout timeout */
[ACL_WARN] = BIT(OK)
};
+#endif
+
/* ACL condition and modifier codes - keep in step with the table that
follows.
down. */
};
+#ifdef MACRO_PREDEF
+# include "macro_predef.h"
+void
+features_acl(void)
+{
+for (condition_def * c = conditions; c < conditions + nelem(conditions); c++)
+ {
+ uschar buf[64], * p, * s;
+ int n = sprintf(CS buf, "_ACL_%s_", c->is_modifier ? "MOD" : "COND");
+ for (p = buf + n, s = c->name; *s; s++) *p++ = toupper(*s);
+ *p = '\0';
+ builtin_macro_create(buf);
+ }
+}
+#endif
+
+
+#ifndef MACRO_PREDEF
/* Return values from decode_control(); used as index so keep in step
with the controls_list table that follows! */
/* Previous success */
-if (sender_host_name != NULL) return OK;
+if (sender_host_name) return OK;
/* Previous failure */
enum { SEEN_DEFAULT, SEEN_READONLY, SEEN_WRITE };
const uschar * list = arg;
-int slash = '/', equal = '=', interval, mode = SEEN_DEFAULT, yield = FAIL;
+int slash = '/', interval, mode = SEEN_DEFAULT, yield = FAIL;
BOOL before;
int refresh = 10 * 24 * 60 * 60; /* 10 days */
const uschar * ele, * key = sender_host_address;
{
uschar * debug_tag = NULL;
uschar * debug_opts = NULL;
- BOOL kill = FALSE;
+ BOOL kill = FALSE, stop = FALSE;
while (*p == '/')
{
for (pp += 4; *pp && *pp != '/';) pp++;
kill = TRUE;
}
+ else if (Ustrncmp(pp, "stop", 4) == 0)
+ {
+ for (pp += 4; *pp && *pp != '/';) pp++;
+ stop = TRUE;
+ }
else
while (*pp && *pp != '/') pp++;
p = pp;
}
if (kill)
- debug_logging_stop();
+ debug_logging_stop(TRUE);
+ else if (stop)
+ debug_logging_stop(FALSE);
else
debug_logging_activate(debug_tag, debug_opts);
break;
fprintf(f, "-acl%c %s %d\n%s\n", name[0], name+1, Ustrlen(value), value);
}
+#endif /* !MACRO_PREDEF */
/* vi: aw ai sw=2
*/
/* End of acl.c */