durusmail: quixote-users: Re: medusa_http.py patch for basic authentication
medusa_http.py patch for basic authentication
2004-08-07
Re: medusa_http.py patch for basic authentication
2004-08-12
2004-08-20
2004-08-20
2004-08-20
2004-08-21
2004-08-24
Re: medusa_http.py patch for basic authentication
Graham Fawcett
2004-08-12
Ken Kennedy wrote:
> I've been playing with some of the code from Andrew's Jan-04 thread on
> "Adding support for authentication"
>
> http://mail.mems-exchange.org/pipermail/quixote-users/2004-January/002462.html
>
> and to get basic authentication working with medusa_http.py, I had to
> add a line to the environ dict:
>
> ---
> /usr/lib/python2.3/site-packages/quixote/server/medusa_http_py.orig
> 2004-08-06 23:57:08.000000000 -0400
> +++ /usr/lib/python2.3/site-packages/quixote/server/medusa_http.py
>  2004-08-06 23:35:28.000000000 -0400
> @@ -64,6 +64,7 @@
>                     'SERVER_PORT':str(self.server.port),
>                     'SERVER_PROTOCOL':'HTTP/1.1',
>                     'SERVER_SOFTWARE':self.server_name,
> +                 'HTTP_AUTHORIZATION':msg.get('Authorization',None),
>                     }
>          for k,v in environ.items():
>              if v == None:


Are you running an older version of Quixote? My local version includes
the following:

         # Propagate HTTP headers - copied from twisted_http.py

         for title, header in msg.items():
             envname = title.replace('-', '_').upper()
             if title not in ('content-type', 'content-length'):
                 envname = "HTTP_" + envname
             environ[envname] = header

The "propagate headers" section should have taken care of this for you.

* * *

In re-reading this code, I'm not sure why the exception is made for
HTTP_CONTENT_TYPE and HTTP_CONTENT_LENGTH. Not a big deal, but why run
the comparison for every header entry, just to get rid of them? Seems
wasteful; and I'd recommend we shorten this to

         for title, header in msg.items():
             envname = title.replace('-', '_').upper()
             envname = "HTTP_" + envname
             environ[envname] = header

in both medusa_http and twisted_http.

-- G


reply