Sorry for the delay. Can you possibly try mod_wsgi from subversion repository trunk.
http://code.google.com/p/modwsgi/source/checkout Graham On 31 March 2011 11:10, Graham Dumpleton <[email protected]> wrote: > 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.
