Okay, subversion must be triggering sub requests to generate the GET
based on the content of the original client request.

Give me a little while and I will send you a patch to try which
exposes SCRIPT_NAME/PATH_INFO in AAA handlers.

Graham

On 31 March 2011 10:23, Brian Wasserman <[email protected]> wrote:
> Here are my logs.  I also made sure that I only used the access methods to
> reduce the number of requests.
> Thanks,
> Brian
> mod_python
> svn.log
> 30/Mar/2011:18:59:44 OPTIONS /project/trunk
> 30/Mar/2011:18:59:44 PROPFIND /project/trunk
> 30/Mar/2011:18:59:44 PROPFIND /project/trunk
> 30/Mar/2011:18:59:44 PROPFIND /project/trunk
> 30/Mar/2011:18:59:44 OPTIONS /project/trunk
> 30/Mar/2011:18:59:44 PROPFIND /project/trunk
> 30/Mar/2011:18:59:44 PROPFIND /project/trunk
> 30/Mar/2011:18:59:44 PROPFIND /project/trunk
> 30/Mar/2011:18:59:44 GET /project/!svn/ver/2/trunk
> 30/Mar/2011:18:59:44 GET /project/!svn/ver/2/trunk/b.txt
> 30/Mar/2011:18:59:44 GET /project/!svn/ver/2/trunk/c
> 30/Mar/2011:18:59:44 GET /project/!svn/ver/2/trunk/c/ac.txt
> 30/Mar/2011:18:59:44 GET /project/!svn/ver/2/trunk/a.txt
> access_log
> 127.0.0.1 - - [30/Mar/2011:18:59:43 -0400] "OPTIONS /svn/project/trunk
> HTTP/1.1" 200 2165 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:18:59:44 -0400] "PROPFIND /svn/project/trunk
> HTTP/1.1" 207 692 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:18:59:44 -0400] "PROPFIND
> /svn/project/!svn/vcc/default HTTP/1.1" 207 580 "-" "SVN/1.6.6 (r40053)
> neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:18:59:44 -0400] "PROPFIND /svn/project/!svn/bln/2
> HTTP/1.1" 207 596 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:18:59:44 -0400] "PROPFIND /svn/project/trunk
> HTTP/1.1" 207 692 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:18:59:44 -0400] "PROPFIND
> /svn/project/!svn/vcc/default HTTP/1.1" 207 580 "-" "SVN/1.6.6 (r40053)
> neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:18:59:44 -0400] "PROPFIND /svn/project/!svn/bln/2
> HTTP/1.1" 207 596 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:18:59:44 -0400] "PROPFIND /svn/project/trunk
> HTTP/1.1" 207 692 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:18:59:44 -0400] "PROPFIND
> /svn/project/!svn/vcc/default HTTP/1.1" 207 596 "-" "SVN/1.6.6 (r40053)
> neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:18:59:44 -0400] "PROPFIND
> /svn/project/!svn/bc/2/trunk HTTP/1.1" 207 692 "-" "SVN/1.6.6 (r40053)
> neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:18:59:44 -0400] "OPTIONS /svn/project/trunk
> HTTP/1.1" 200 2165 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:18:59:44 -0400] "PROPFIND /svn/project/trunk
> HTTP/1.1" 207 692 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:18:59:44 -0400] "PROPFIND /svn/project/trunk
> HTTP/1.1" 207 692 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:18:59:44 -0400] "PROPFIND
> /svn/project/!svn/vcc/default HTTP/1.1" 207 580 "-" "SVN/1.6.6 (r40053)
> neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:18:59:44 -0400] "PROPFIND /svn/project/!svn/bln/2
> HTTP/1.1" 207 596 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:18:59:44 -0400] "PROPFIND /svn/project/trunk
> HTTP/1.1" 207 692 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:18:59:44 -0400] "PROPFIND
> /svn/project/!svn/vcc/default HTTP/1.1" 207 580 "-" "SVN/1.6.6 (r40053)
> neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:18:59:44 -0400] "PROPFIND /svn/project/!svn/bln/2
> HTTP/1.1" 207 596 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:18:59:44 -0400] "REPORT
> /svn/project/!svn/vcc/default HTTP/1.1" 200 1058 "-" "SVN/1.6.6 (r40053)
> neon/0.29.0"
>
> mod_wsgi
> svn.log
> 30/Mar/2011:19:19:23 OPTIONS /svn/project
> 30/Mar/2011:19:19:23 PROPFIND /svn/project
> 30/Mar/2011:19:19:23 PROPFIND /svn/!svn/vcc/default
> 30/Mar/2011:19:19:23 PROPFIND /svn/!svn/bln/6
> 30/Mar/2011:19:19:23 PROPFIND /svn/project
> 30/Mar/2011:19:19:23 PROPFIND /svn/!svn/vcc/default
> 30/Mar/2011:19:19:23 PROPFIND /svn/!svn/bln/6
> 30/Mar/2011:19:19:23 PROPFIND /svn/project
> 30/Mar/2011:19:19:23 PROPFIND /svn/!svn/vcc/default
> 30/Mar/2011:19:19:23 PROPFIND /svn/!svn/bc/6/project
> 30/Mar/2011:19:19:23 OPTIONS /svn/project
> 30/Mar/2011:19:19:23 PROPFIND /svn/project
> 30/Mar/2011:19:19:23 PROPFIND /svn/project
> 30/Mar/2011:19:19:23 PROPFIND /svn/!svn/vcc/default
> 30/Mar/2011:19:19:23 PROPFIND /svn/!svn/bln/6
> 30/Mar/2011:19:19:23 PROPFIND /svn/project
> 30/Mar/2011:19:19:23 PROPFIND /svn/!svn/vcc/default
> 30/Mar/2011:19:19:23 PROPFIND /svn/!svn/bln/6
> 30/Mar/2011:19:19:23 REPORT /svn/!svn/vcc/default
> 30/Mar/2011:19:19:23 GET /svn/!svn/vcc/default
> 30/Mar/2011:19:19:23 GET /svn/!svn/vcc/default
> 30/Mar/2011:19:19:23 GET /svn/!svn/vcc/default
> 30/Mar/2011:19:19:23 GET /svn/!svn/vcc/default
> 30/Mar/2011:19:19:23 GET /svn/!svn/vcc/default
> access_log
> 127.0.0.1 - - [30/Mar/2011:19:19:23 -0400] "OPTIONS /svn/project HTTP/1.1"
> 200 867 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:19:19:23 -0400] "PROPFIND /svn/project HTTP/1.1"
> 207 557 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:19:19:23 -0400] "PROPFIND /svn/!svn/vcc/default
> HTTP/1.1" 207 446 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:19:19:23 -0400] "PROPFIND /svn/!svn/bln/6
> HTTP/1.1" 207 460 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:19:19:23 -0400] "PROPFIND /svn/project HTTP/1.1"
> 207 557 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:19:19:23 -0400] "PROPFIND /svn/!svn/vcc/default
> HTTP/1.1" 207 446 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:19:19:23 -0400] "PROPFIND /svn/!svn/bln/6
> HTTP/1.1" 207 460 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:19:19:23 -0400] "PROPFIND /svn/project HTTP/1.1"
> 207 557 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:19:19:23 -0400] "PROPFIND /svn/!svn/vcc/default
> HTTP/1.1" 207 466 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:19:19:23 -0400] "PROPFIND /svn/!svn/bc/6/project
> HTTP/1.1" 207 561 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:19:19:23 -0400] "OPTIONS /svn/project HTTP/1.1"
> 200 867 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:19:19:23 -0400] "PROPFIND /svn/project HTTP/1.1"
> 207 557 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:19:19:23 -0400] "PROPFIND /svn/project HTTP/1.1"
> 207 557 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:19:19:23 -0400] "PROPFIND /svn/!svn/vcc/default
> HTTP/1.1" 207 446 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:19:19:23 -0400] "PROPFIND /svn/!svn/bln/6
> HTTP/1.1" 207 460 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:19:19:23 -0400] "PROPFIND /svn/project HTTP/1.1"
> 207 557 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:19:19:23 -0400] "PROPFIND /svn/!svn/vcc/default
> HTTP/1.1" 207 446 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:19:19:23 -0400] "PROPFIND /svn/!svn/bln/6
> HTTP/1.1" 207 460 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> 127.0.0.1 - - [30/Mar/2011:19:19:23 -0400] "REPORT /svn/!svn/vcc/default
> HTTP/1.1" 200 849 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
> On Wed, Mar 30, 2011 at 5:48 PM, Graham Dumpleton
> <[email protected]> wrote:
>>
>> Add date/time stamps to what you log from access script. The entries
>> in the log file snippets don't appear to correspond to what you are
>> outputing, ie., not GET's in one.
>>
>> Graham
>>
>> On 30 March 2011 03:33, Brian <[email protected]> wrote:
>> > Graham,
>> >
>> > Thanks for your response.  Here's some more info on my test scenario.
>> > It includes Apache access logs and debug output for an access handler
>> > for mod_wsgi vs mod_python.  Even though the access_log resulting from
>> > methods does not show anything from which an actual path or filename
>> > can be determined, for some reason mod_python has access to this
>> > data.  Is it possible that in mod_wsgi I have to use <LimitExcept>
>> > blocks and rewrite the config file instead of doing this exclusively
>> > via custom code?
>> >
>> > Thanks again!
>> > Brian
>> >
>> > localhost:~$ svn co  http://localhost/svn/project
>> >
>> > svn response:
>> > A    project/b.txt
>> > A    project/c
>> > A    project/c/ac.txt
>> > A    project/a.txt
>> > Checked out revision 6.
>> >
>> > ---------- Apache log from mod_wsgi ----------
>> > 127.0.0.1 - - [29/Mar/2011:10:55:01 -0400] "OPTIONS /svn/project HTTP/
>> > 1.1" 401 673 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:07 -0400] "OPTIONS /svn/
>> > project HTTP/1.1" 200 866 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:07 -0400] "PROPFIND /svn/
>> > project HTTP/1.1" 207 557 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:08 -0400] "PROPFIND /svn/!svn/
>> > vcc/default HTTP/1.1" 207 446 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:08 -0400] "PROPFIND /svn/!svn/
>> > bln/6 HTTP/1.1" 207 460 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:09 -0400] "PROPFIND /svn/
>> > project HTTP/1.1" 207 557 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:09 -0400] "PROPFIND /svn/!svn/
>> > vcc/default HTTP/1.1" 207 446 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:09 -0400] "PROPFIND /svn/!svn/
>> > bln/6 HTTP/1.1" 207 460 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:09 -0400] "PROPFIND /svn/
>> > project HTTP/1.1" 207 557 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:09 -0400] "PROPFIND /svn/!svn/
>> > vcc/default HTTP/1.1" 207 466 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:09 -0400] "PROPFIND /svn/!svn/
>> > bc/6/project HTTP/1.1" 207 561 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - - [29/Mar/2011:10:55:09 -0400] "OPTIONS /svn/project HTTP/
>> > 1.1" 401 673 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:09 -0400] "OPTIONS /svn/
>> > project HTTP/1.1" 200 866 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:09 -0400] "PROPFIND /svn/
>> > project HTTP/1.1" 207 557 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:10 -0400] "PROPFIND /svn/
>> > project HTTP/1.1" 207 557 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:10 -0400] "PROPFIND /svn/!svn/
>> > vcc/default HTTP/1.1" 207 446 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:10 -0400] "PROPFIND /svn/!svn/
>> > bln/6 HTTP/1.1" 207 460 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:10 -0400] "PROPFIND /svn/
>> > project HTTP/1.1" 207 557 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:10 -0400] "PROPFIND /svn/!svn/
>> > vcc/default HTTP/1.1" 207 446 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:10 -0400] "PROPFIND /svn/!svn/
>> > bln/6 HTTP/1.1" 207 460 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:10 -0400] "REPORT /svn/!svn/
>> > vcc/default HTTP/1.1" 200 570 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - - [29/Mar/2011:10:55:21 -0400] "OPTIONS /svn/project HTTP/
>> > 1.1" 401 673 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:23 -0400] "OPTIONS /svn/
>> > project HTTP/1.1" 200 866 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:23 -0400] "PROPFIND /svn/
>> > project HTTP/1.1" 207 557 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:23 -0400] "PROPFIND /svn/!svn/
>> > vcc/default HTTP/1.1" 207 446 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:23 -0400] "PROPFIND /svn/!svn/
>> > bln/6 HTTP/1.1" 207 460 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:24 -0400] "PROPFIND /svn/
>> > project HTTP/1.1" 207 557 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:24 -0400] "PROPFIND /svn/!svn/
>> > vcc/default HTTP/1.1" 207 446 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:24 -0400] "PROPFIND /svn/!svn/
>> > bln/6 HTTP/1.1" 207 460 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:24 -0400] "PROPFIND /svn/
>> > project HTTP/1.1" 207 557 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:24 -0400] "PROPFIND /svn/!svn/
>> > vcc/default HTTP/1.1" 207 466 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - - [29/Mar/2011:10:55:24 -0400] "OPTIONS /svn/project HTTP/
>> > 1.1" 401 673 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:24 -0400] "OPTIONS /svn/
>> > project HTTP/1.1" 200 866 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:24 -0400] "PROPFIND /svn/
>> > project HTTP/1.1" 207 557 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:24 -0400] "PROPFIND /svn/!svn/
>> > bc/6/project HTTP/1.1" 207 561 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:24 -0400] "PROPFIND /svn/
>> > project HTTP/1.1" 207 557 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:24 -0400] "PROPFIND /svn/!svn/
>> > vcc/default HTTP/1.1" 207 446 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:24 -0400] "PROPFIND /svn/!svn/
>> > bln/6 HTTP/1.1" 207 460 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:24 -0400] "PROPFIND /svn/
>> > project HTTP/1.1" 207 557 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:24 -0400] "PROPFIND /svn/!svn/
>> > vcc/default HTTP/1.1" 207 446 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:24 -0400] "PROPFIND /svn/!svn/
>> > bln/6 HTTP/1.1" 207 460 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> > 127.0.0.1 - testuser [29/Mar/2011:10:55:24 -0400] "REPORT /svn/!svn/
>> > vcc/default HTTP/1.1" 200 849 "-" "SVN/1.6.12 (r955767) neon/0.29.3"
>> >
>> > ----------
>> >
>> > Here's code I am using to dump the path from the WSGIAccessScript.
>> > def allow_access(environ, host):
>> >        path = environ['REQUEST_URI']
>> >        method = environ['REQUEST_METHOD']
>> >
>> >        f = open('/tmp/svn.log', 'a')
>> >        f.write('access path = %s\nmethod = %s\n\n' % (path, method))
>> >        f.close()
>> >        return True
>> >
>> > ---------- mod_wsgi svn.log dump ----------
>> > access path = /svn/project
>> > method = OPTIONS
>> >
>> > access path = /svn/project
>> > method = PROPFIND
>> >
>> > access path = /svn/!svn/vcc/default
>> > method = PROPFIND
>> >
>> > access path = /svn/!svn/bln/6
>> > method = PROPFIND
>> >
>> > access path = /svn/project
>> > method = PROPFIND
>> >
>> > access path = /svn/!svn/vcc/default
>> > method = PROPFIND
>> >
>> > access path = /svn/!svn/bln/6
>> > method = PROPFIND
>> >
>> > access path = /svn/project
>> > method = PROPFIND
>> >
>> > access path = /svn/!svn/vcc/default
>> > method = PROPFIND
>> >
>> > access path = /svn/!svn/bc/6/project
>> > method = PROPFIND
>> >
>> > access path = /svn/project
>> > method = OPTIONS
>> >
>> > access path = /svn/project
>> > method = PROPFIND
>> >
>> > access path = /svn/project
>> > method = PROPFIND
>> >
>> > access path = /svn/!svn/vcc/default
>> > method = PROPFIND
>> >
>> > access path = /svn/!svn/bln/6
>> > method = PROPFIND
>> >
>> > access path = /svn/project
>> > method = PROPFIND
>> >
>> > access path = /svn/!svn/vcc/default
>> > method = PROPFIND
>> >
>> > access path = /svn/!svn/bln/6
>> > method = PROPFIND
>> >
>> > access path = /svn/!svn/vcc/default
>> > method = REPORT
>> >
>> > access path = /svn/!svn/vcc/default
>> > method = GET
>> >
>> > access path = /svn/!svn/vcc/default
>> > method = GET
>> >
>> > access path = /svn/!svn/vcc/default
>> > method = GET
>> >
>> > access path = /svn/!svn/vcc/default
>> > method = GET
>> >
>> > access path = /svn/!svn/vcc/default
>> > method = GET
>> >
>> > ---------- Apache log for mod_python for the same repo ----------
>> > 127.0.0.1 - - [29/Mar/2011:11:59:37 -0400] "OPTIONS /svn/project/trunk
>> > HTTP/1.1" 401 1957 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
>> > 127.0.0.1 - testuser [29/Mar/2011:11:59:39 -0400] "OPTIONS /svn/
>> > project/trunk HTTP/1.1" 200 996 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
>> > 127.0.0.1 - testuser [29/Mar/2011:11:59:39 -0400] "PROPFIND /svn/
>> > project/trunk HTTP/1.1" 207 692 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
>> > 127.0.0.1 - - [29/Mar/2011:11:59:39 -0400] "PROPFIND /svn/project/!svn/
>> > vcc/default HTTP/1.1" 207 580 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
>> > 127.0.0.1 - - [29/Mar/2011:11:59:39 -0400] "PROPFIND /svn/project/!svn/
>> > bln/2 HTTP/1.1" 207 596 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
>> > 127.0.0.1 - testuser [29/Mar/2011:11:59:39 -0400] "PROPFIND /svn/
>> > project/trunk HTTP/1.1" 207 692 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
>> > 127.0.0.1 - - [29/Mar/2011:11:59:39 -0400] "PROPFIND /svn/project/!svn/
>> > vcc/default HTTP/1.1" 207 580 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
>> > 127.0.0.1 - - [29/Mar/2011:11:59:39 -0400] "PROPFIND /svn/project/!svn/
>> > bln/2 HTTP/1.1" 207 596 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
>> > 127.0.0.1 - LOCAL\\test [29/Mar/2011:11:59:39 -0400] "PROPFIND /svn/
>> > project/trunk HTTP/1.1" 207 692 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
>> > 127.0.0.1 - - [29/Mar/2011:11:59:39 -0400] "PROPFIND /svn/project/!svn/
>> > vcc/default HTTP/1.1" 207 596 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
>> > 127.0.0.1 - - [29/Mar/2011:11:59:39 -0400] "PROPFIND /svn/project/!svn/
>> > bc/2/trunk HTTP/1.1" 207 692 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
>> > 127.0.0.1 - - [29/Mar/2011:11:59:39 -0400] "OPTIONS /svn/project/trunk
>> > HTTP/1.1" 401 1957 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
>> > 127.0.0.1 - testuser [29/Mar/2011:11:59:39 -0400] "OPTIONS /svn/
>> > project/trunk HTTP/1.1" 200 996 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
>> > 127.0.0.1 - testuser [29/Mar/2011:11:59:39 -0400] "PROPFIND /svn/
>> > project/trunk HTTP/1.1" 207 692 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
>> > 127.0.0.1 - testuser [29/Mar/2011:11:59:39 -0400] "PROPFIND /svn/
>> > project/trunk HTTP/1.1" 207 692 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
>> > 127.0.0.1 - - [29/Mar/2011:11:59:39 -0400] "PROPFIND /svn/project/!svn/
>> > vcc/default HTTP/1.1" 207 580 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
>> > 127.0.0.1 - - [29/Mar/2011:11:59:39 -0400] "PROPFIND /svn/project/!svn/
>> > bln/2 HTTP/1.1" 207 596 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
>> > 127.0.0.1 - testuser [29/Mar/2011:11:59:39 -0400] "PROPFIND /svn/
>> > project/trunk HTTP/1.1" 207 692 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
>> > 127.0.0.1 - - [29/Mar/2011:11:59:39 -0400] "PROPFIND /svn/project/!svn/
>> > vcc/default HTTP/1.1" 207 580 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
>> > 127.0.0.1 - - [29/Mar/2011:11:59:39 -0400] "PROPFIND /svn/project/!svn/
>> > bln/2 HTTP/1.1" 207 596 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
>> > 127.0.0.1 - - [29/Mar/2011:11:59:39 -0400] "REPORT /svn/project/!svn/
>> > vcc/default HTTP/1.1" 200 1058 "-" "SVN/1.6.6 (r40053) neon/0.29.0"
>> > ----------
>> > This is the mod_python acces handler:
>> > def access(req):
>> >    f = open('/tmp/svn.log', 'a')
>> >    f.write('access path = %s\nmethod = %s\n\n' % (req.path_info,
>> > req.method))
>> >    f.close()
>> >    return apache.OK
>> >
>> > ---------- mod_python svn.log dump ----------
>> > access path = /project/trunk
>> > method = OPTIONS
>> >
>> > access path = /project/trunk
>> > method = OPTIONS
>> >
>> > access path = /project/trunk
>> > method = PROPFIND
>> >
>> > access path = /project/trunk
>> > method = PROPFIND
>> >
>> > access path = /project/trunk
>> > method = PROPFIND
>> >
>> > access path = /project/trunk
>> > method = OPTIONS
>> >
>> > access path = /project/trunk
>> > method = OPTIONS
>> >
>> > access path = /project/trunk
>> > method = PROPFIND
>> >
>> > access path = /project/trunk
>> > method = PROPFIND
>> >
>> > access path = /project/trunk
>> > method = PROPFIND
>> >
>> > access path = /project/!svn/ver/2/trunk
>> > method = GET
>> >
>> > access path = /project/!svn/ver/2/trunk/b.txt
>> > method = GET
>> >
>> > access path = /project/!svn/ver/2/trunk/c
>> > method = GET
>> >
>> > access path = /project/!svn/ver/2/trunk/c/ac.txt
>> > method = GET
>> >
>> > access path = /project/!svn/ver/2/trunk/a.txt
>> > method = GET
>> >
>> >
>> > Graham Dumpleton wrote:
>> >> On 29 March 2011 08:00, Brian <[email protected]> wrote:
>> >> > I currently use mod_python to manage permissions for a svn
>> >> > repository.  The
>> >> > key part of my apache2 config looks like this:
>> >> >
>> >> > PythonAccessHandler MyProject.svn_authz::access
>> >> > PythonAuthenHandler MyProject.auth::authenticate
>> >> > PythonAuthzHandler MyProject.svn_authz::authorize
>> >> >
>> >> > I have made attempts to replace this with mod_wsgi, like this:
>> >> >
>> >> > WSGIAccessScript /usr/local/myproject/auth.wsgi
>> >> > WSGIAuthUserScript /usr/local/myproject/auth.wsgi
>> >> >
>> >> > In general, this works.  I can allow control to the repository by
>> >> > user or
>> >> > allow anonymous access, but unfortunately I want to be able to allow
>> >> > some
>> >> > parts of the repo to be public and grant permissions by path.  Even
>> >> > though
>> >> > the access_log looks the same between mod_python and mod_wsgi, in
>> >> > mod_python
>> >> > the request object had access to path_info, which would contain the
>> >> > path to
>> >> > the file being accessed.  With mod_wsgi I seem to only have access to
>> >> > the
>> >> > environment variables, with only REQUEST_METHOD and REQUEST_URI being
>> >> > potentially useful.  Through inspection I see REQUEST_URI first
>> >> > contains the
>> >> > requested path, like when doing a checkout.  Each subsequent request
>> >> > in the
>> >> > same checkout action only has /svn/!svn/vcc/default or similar URIs,
>> >> > which
>> >> > is what I see in the access_log both with mod_python and mod_wsgi.
>> >> >  For some
>> >> > reason the path_info element in mod_python always had some flavor of
>> >> > the
>> >> > filename.  Without being able to know the path in mod_wsgi, I'm not
>> >> > sure how
>> >> > I can use WSGIAccessScript and WSGIAuthUserScript to manage
>> >> > fine-grained
>> >> > permissions in svn.
>> >>
>> >> PATH_INFO is derived from whatever is in REQUEST_URI. The only
>> >> additional thing with PATH_INFO is that it would have been normalised
>> >> for bit a subversion client it should be using well formed URI so what
>> >> you extract from REQUEST_URI should be fine, although might still be a
>> >> good idea to do some sanity checks on it. Either way, the information
>> >> to do it should be there.
>> >>
>> >> Alternatively and depending on what operations you want to block then
>> >> you do it at Apache configuration level. For example the following
>> >> Apache configuration duplicates the listed thing from subversion
>> >> authnz file.
>> >>
>> >> # [Project1:/]
>> >> # vishwajeet = rw
>> >>
>> >> <Location /svn/Project1/!svn/*/*/*>
>> >> Require user vishwajeet
>> >> </Location>
>> >>
>> >> # [Project2:/]
>> >> # vishwajeet = r
>> >>
>> >> <Location /svn/Project2/!svn/*/*/*>
>> >> Require user vishwajeet
>> >> <LimitExcept OPTIONS GET PROPFIND REPORT COPY>
>> >> deny from all
>> >> </LimitExcept>
>> >> </Location>
>> >>
>> >> You could also start to tie this in with WSGIAuthGroupScript and have
>> >> what groups users are in defined by Python code. For example with
>> >> Location with path have:
>> >>
>> >> Require wsgi-group svn_read
>> >> <LimitExcept GET PROPFIND OPTIONS REPORT>
>> >>   Require wsgi-group svn_write
>> >> </LimitExcept>
>> >>
>> >> Where for Django Python code behind might be:
>> >>
>> >> def groups_for_user(environ, user):
>> >>    db.reset_queries()
>> >>
>> >>    kwargs = {'username': req.user, 'is_active': True}
>> >>
>> >>    try:
>> >>        try:
>> >>            user = User.objects.get(**kwargs)
>> >>        except User.DoesNotExist:
>> >>            return None
>> >>
>> >>         return user.groups
>> >>
>> >>    finally:
>> >>        db.connection.close()
>> >>
>> >> BTW, just a warning. WSGIAuthUserScript/WSGIAuthGroupScript are called
>> >> on every request when HTTP Basic authentication is being used. In high
>> >> volume sites the overhead of this can be noticeable if you have to go
>> >> back to a database to authenticate/authorise every time. You might
>> >> want to look at some level of caching and credential expiration within
>> >> the process to avoid going to the database all the time.
>> >>
>> >> That is probably all I can say at the moment without seeing the
>> >> specific values of REQUEST_METHOD and REQUEST_URI you are getting for
>> >> the request  you think you are getting the wrong information for.
>> >>
>> >> Graham
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> > Groups "modwsgi" group.
>> > To post to this group, send email to [email protected].
>> > To unsubscribe from this group, send email to
>> > [email protected].
>> > For more options, visit this group at
>> > http://groups.google.com/group/modwsgi?hl=en.
>> >
>> >
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "modwsgi" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group at
>> http://groups.google.com/group/modwsgi?hl=en.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "modwsgi" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/modwsgi?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"modwsgi" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/modwsgi?hl=en.

Reply via email to