Follow-up to r29036: Now that the "mergeinfo" transaction file is no
[svn.git] / contrib / server-side / mod_dontdothat / README
blobe93c405ff43f8acdb6699b76efba3aab141547a5
1 mod_dontdothat is an Apache module that allows you to block specific types
2 of Subversion requests.  Specifically, it's designed to keep users from doing
3 things that are particularly hard on the server, like checking out the root
4 of the tree, or the tags or branches directories.  It works by sticking an
5 input filter in front of all REPORT requests and looking for dangerous types
6 of requests.  If it finds any, it returns a 403 Forbidden error.
8 You can compile and install it via apxs:
10 $ apxs -c \
11        -I$PREFIX/include/subversion-1 \
12        -L$PREFIX/lib -lsvn_subr-1 
13        mod_dontdothat.c
15 $ apxs -i -n dontdothat mod_dontdothat.la
17 It is enabled via single httpd.conf directive, DontDoThatConfigFile:
19 <Location /svn>
20   DAV svn
21   SVNParentPath /path/to/repositories
22   DontDoThatConfigFile /path/to/config.file
23 </Location>
25 The file you give to DontDoThatConfigFile is a Subversion configuration file
26 that contains the following sections.
28 [recursive-actions]
29 /*/trunk = allow
30 / = deny
31 /* = deny
32 /*/tags = deny
33 /*/branches = deny
34 /*/* = deny
35 /*/*/tags = deny
36 /*/*/branches = deny
38 As you might guess, this defines a set of patterns that control what the
39 user is not allowed to do.  Anything with a 'deny' after it is denied, and
40 as a fallback mechanism anything with an 'allow' after it is special cased
41 to be allowed, even if it matches something that is denied.
43 Note that the wildcard portions of a rule only swallow a single directory,
44 so /* will match /foo, but not /foo/bar.  They also must be at the end of
45 a directory segment, so /foo* or /* are valid, but /*foo is not.
47 These rules are applied to any recursive action, which basically means any
48 Subversion command that goes through the update-report, like update, diff,
49 checkout, merge, etc.