From 4754440d213e40463c4d3f4f75152825c5e702b0 Mon Sep 17 00:00:00 2001 From: Philip Hazel Date: Tue, 22 Mar 2005 15:02:34 +0000 Subject: [PATCH] Further tidies to the ${dlfunc code (thanks, Tony): redirect options are always available (but do nothing when the facility isn't compiled). Improve the NewStuff text. --- doc/doc-txt/NewStuff | 16 ++++++++++++---- src/src/routers/redirect.c | 6 +----- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/doc/doc-txt/NewStuff b/doc/doc-txt/NewStuff index 383c0f6f4..e6e55c745 100644 --- a/doc/doc-txt/NewStuff +++ b/doc/doc-txt/NewStuff @@ -1,4 +1,4 @@ -$Cambridge: exim/doc/doc-txt/NewStuff,v 1.28 2005/03/22 14:11:54 ph10 Exp $ +$Cambridge: exim/doc/doc-txt/NewStuff,v 1.29 2005/03/22 15:02:34 ph10 Exp $ New Features in Exim -------------------- @@ -46,12 +46,20 @@ PH/02 A new expansion item for dynamically loading and calling a locally- set in Local/Makefile. The facility is not included by default (a suitable error is given if you try to use it when it is not there.) - You load and call the function like this: + + If you enable EXPAND_DLFUNC, you should also be aware of the new redirect + router option forbid_filter_dlfunc. If you have unprivileged users on + your system who are permitted to create filter files, you might want to + set forbid_filter_dlfunc=true in the appropriate router, to stop them + using ${dlfunc to run code within Exim. + + You load and call an external function like this: ${dlfunc{/some/file}{function}{arg1}{arg2}...} - Once loaded, Exim remembers it so that it doesn't reload it in the same - Exim process (but of course Exim does start new processes frequently). + Once loaded, Exim remembers the dynamically loaded object so that it + doesn't reload the same object file in the same Exim process (but of + course Exim does start new processes frequently). There may be from zero to eight arguments to the function. When compiling a local function that is to be called in this way, local_scan.h should be diff --git a/src/src/routers/redirect.c b/src/src/routers/redirect.c index 65b5e4099..c0c76322c 100644 --- a/src/src/routers/redirect.c +++ b/src/src/routers/redirect.c @@ -1,4 +1,4 @@ -/* $Cambridge: exim/src/src/routers/redirect.c,v 1.7 2005/03/22 14:11:55 ph10 Exp $ */ +/* $Cambridge: exim/src/src/routers/redirect.c,v 1.8 2005/03/22 15:02:34 ph10 Exp $ */ /************************************************* * Exim - an Internet mail transport agent * @@ -45,20 +45,16 @@ optionlist redirect_router_options[] = { (void *)offsetof(redirect_router_options_block, bit_options) }, { "forbid_file", opt_bool, (void *)offsetof(redirect_router_options_block, forbid_file) }, - #ifdef EXPAND_DLFUNC { "forbid_filter_dlfunc", opt_bit | (RDON_DLFUNC << 16), (void *)offsetof(redirect_router_options_block, bit_options) }, - #endif { "forbid_filter_existstest", opt_bit | (RDON_EXISTS << 16), (void *)offsetof(redirect_router_options_block, bit_options) }, { "forbid_filter_logwrite",opt_bit | (RDON_LOG << 16), (void *)offsetof(redirect_router_options_block, bit_options) }, { "forbid_filter_lookup", opt_bit | (RDON_LOOKUP << 16), (void *)offsetof(redirect_router_options_block, bit_options) }, - #ifdef EXIM_PERL { "forbid_filter_perl", opt_bit | (RDON_PERL << 16), (void *)offsetof(redirect_router_options_block, bit_options) }, - #endif { "forbid_filter_readfile", opt_bit | (RDON_READFILE << 16), (void *)offsetof(redirect_router_options_block, bit_options) }, { "forbid_filter_readsocket", opt_bit | (RDON_READSOCK << 16), -- 2.30.2