From f7c3a2505297c9fe16dc18ab6066d71028b9ccd4 Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Fri, 11 Mar 2011 16:09:49 -0800 Subject: [PATCH] Change rsyncd.conf &merge directive to match *.inc. This allows the same rsyncd.d directory to be used for a set of merge files (*.inc) and a set of include files (*.conf). --- params.c | 3 ++- rsyncd.conf.yo | 19 ++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/params.c b/params.c index a14242e8..0fbd9863 100644 --- a/params.c +++ b/params.c @@ -428,6 +428,7 @@ static int name_cmp(const void *n1, const void *n2) static int include_config(char *include, int manage_globals) { STRUCT_STAT sb; + char *match = manage_globals ? "*.conf" : "*.inc"; int ret; if (do_stat(include, &sb) < 0) { @@ -457,7 +458,7 @@ static int include_config(char *include, int manage_globals) while ((di = readdir(d)) != NULL) { char *dname = d_name(di); - if (!wildmatch("*.conf", dname)) + if (!wildmatch(match, dname)) continue; bpp = EXPAND_ITEM_LIST(&conf_list, char *, 32); pathjoin(buf, sizeof buf, include, dname); diff --git a/rsyncd.conf.yo b/rsyncd.conf.yo index f7f483b5..2771041b 100644 --- a/rsyncd.conf.yo +++ b/rsyncd.conf.yo @@ -756,7 +756,8 @@ parameters in a module started in another file, can affect the defaults for other files, etc. When an bf(&include) or bf(&merge) directive refers to a directory, it will read -in all the bf(*.conf) files contained inside that directory (without any +in all the bf(*.conf) or bf(*.inc) files (respectively) that are contained inside +that directory (without any recursive scanning), with the files sorted into alpha order. So, if you have a directory named "rsyncd.d" with the files "foo.conf", "bar.conf", and "baz.conf" inside it, this directive: @@ -773,17 +774,25 @@ except that it adjusts as files are added and removed from the directory. The advantage of the bf(&include) directive is that you can define one or more modules in a separate file without worrying about unintended side-effects -between the self-contained module files. For instance, this is a useful -/etc/rsyncd.conf file: +between the self-contained module files. + +The advantage of the bf(&merge) directive is that you can load config snippets +that can be included into multiple module definitions, and you can also set +global values that will affect connections (such as bf(motd file)), or globals +that will affect other include files. + +For example, this is a useful /etc/rsyncd.conf file: verb( port = 873 log file = /var/log/rsync.log pid file = /var/lock/rsync.lock + &merge /etc/rsyncd.d &include /etc/rsyncd.d ) -The advantage of the bf(&merge) directive is that you can load config snippets -that can be included into multiple module definitions. +This file merges any /etc/rsyncd.d/*.inc files, and then includes any +/etc/rsyncd.d/*.conf files, which each include file being isolated from +the reset (so that each include's globals don't affect any others). manpagesection(AUTHENTICATION STRENGTH) -- 2.34.1