Re: [viewvc-dev] viewvc-1.1.0-beta1 issue with svnauthz and username case
"C. Michael Pilato" <[email protected]> Fri, 05 Jun 2009 14:31:10 -0400
| Newsgroups | gmane.comp.version-control.cvs.viewcvs.devel |
|---|---|
| Organization | CollabNet, Inc. |
| Message-ID | <[email protected]> |
Filed issue #419: http://viewvc.tigris.org/issues/show_bug.cgi?id=419 C. Michael Pilato wrote: > Update: Subversion does, in fact, do case-sensitive comparisons. However, > there is (as of Subversion 1.6) an httpd.conf directive to force all > incoming usernames to be normalized into upper- or lower-cased form. The > right thing to do here is for ViewVC to grow support for an option that does > this kind of case transformation, too. > > I'll file an issue to track this. > > C. Michael Pilato wrote: >> Eliott, thanks for the report. >> >> I'd like to match Subversion's own authz functionality to the degree >> possible. I'm trying to recall whether it honors the case in usernames -- >> specifically whether case-differing-only names are supported or not. If >> they aren't, then obviously it makes sense to just .lower() the incoming >> username before attempting the match against the authz-file harvested >> information. >> >> eliott wrote: >>> Greetings, >>> >>> Version: >>> viewvc-1.1.0-beta1 >>> >>> >>> Problem description: >>> Our svnauthz file has usernames in Mixed_Case. The apache auth >>> passes the case to the cgi scripts (we are running viewvc as cgi). >>> However, the python ConfigParser by default does a 'lower' operation >>> on the results of cp.option(). This causes our usernames to never >>> match their permissions `as parsed` from the authz file by viewvc. >>> >>> This happens in def _process_access_section(section) around about line >>> 126 at `cp.options(section)`. >>> >>> Possible fixes: >>> I had two potential workarounds, of which I am currently utilizing the first. >>> >>> 1. lib/vcauth/svnauthz/__init__.py line 25. >>> - self.username = username >>> + self.username = username.lower() >>> >>> This forces the passed in cgi var username to lowercase. This then >>> matches the cp.option which is forced to lowercase by the >>> ConfigParser. >>> >>> 2. override the ConfigParser optionxform with a 'monkey patch'. >>> lib/vcauth/svnauthz/__init__.py line 20. >>> + ConfigParser.optionxform = str >>> >>> Another alternative would be to subclass ConfigParser and override the >>> optionxform there. That would arguably be cleaner than the monkeypatch >>> method. >>> >>> I am using the first method, because monkeypatching 'feels' a bit >>> dirty to me, I don't believe we have any case collisions with >>> usernames, and I don't know offhand if the change for #2 would have >>> any other efffects based on case handling in the existing code. >>> >>> Hope this is helpful to someone. >>> >>> ------------------------------------------------------ >>> http://viewvc.tigris.org/ds/viewMessage.do?dsForumId=4251&dsMessageId=1187483 >>> >>> To unsubscribe from this discussion, e-mail: [[email protected]]. >> > > -- C. Michael Pilato <[email protected]> CollabNet <> www.collab.net <> Distributed Development On Demand ------------------------------------------------------ http://viewvc.tigris.org/ds/viewMessage.do?dsForumId=4251&dsMessageId=2359791 To unsubscribe from this discussion, e-mail: [[email protected]].
signature.asc
(application/pgp-signature, 197 B)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEARECAAYFAkopZG4ACgkQokEGqRcG/W7UeQCfSJYSrYKE2rPHAUehklIqn2gr WsUAnjMR2cayPje31tp3sYpbQlD7uusS =KLCA -----END PGP SIGNATURE-----