Further tidies to the ${dlfunc code (thanks, Tony): redirect options are
authorPhilip Hazel <ph10@hermes.cam.ac.uk>
Tue, 22 Mar 2005 15:02:34 +0000 (15:02 +0000)
committerPhilip Hazel <ph10@hermes.cam.ac.uk>
Tue, 22 Mar 2005 15:02:34 +0000 (15:02 +0000)
always available (but do nothing when the facility isn't compiled).
Improve the NewStuff text.

doc/doc-txt/NewStuff
src/src/routers/redirect.c

index 383c0f6f4fab857ac060e61b84b28d91e3f7c9d1..e6e55c7457d9b672b0955a9680b11ec221ee5786 100644 (file)
@@ -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
 --------------------
 
 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.)
 
       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}...}
 
 
         ${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
 
       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
index 65b5e40994cc75fed58eafcdc8595a2d031a4a5d..c0c76322cc9581d60c8a760b22e5e68fb93f63c9 100644 (file)
@@ -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    *
 
 /*************************************************
 *     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) },
       (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) },
   { "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) },
   { "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) },
   { "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),
   { "forbid_filter_readfile", opt_bit | (RDON_READFILE << 16),
       (void *)offsetof(redirect_router_options_block, bit_options) },
   { "forbid_filter_readsocket", opt_bit | (RDON_READSOCK << 16),