Revision: 22759
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at January 21, 2010 05:33 by manatlan
Initial Code
import Cookie,hashlib md5 = lambda x : hashlib.md5(x).hexdigest() class ControlAccess: def __init__(self, appReal,password): self.appReal = appReal self.password=password def __call__(self, environ, start_response): try: password = Cookie.SimpleCookie(environ.get("HTTP_COOKIE",""))["pass"].value except: password = "" if password==md5(self.password): for i in self.appReal(environ, start_response): yield i else: try: passw=environ['wsgi.input'].read(int(environ['CONTENT_LENGTH'])).split("=")[-1] except: passw="" if passw == self.password: cookie = Cookie.SimpleCookie() cookie["pass"] = md5(self.password) start_response('200 OK', [('Content-type','text/html'),('Set-Cookie',cookie["pass"].OutputString())]) yield """<html><head><meta http-equiv="refresh" content="0; url=/" /></head><body>welcome</body></html>""" else: start_response('200 OK', [('Content-type','text/html')]) yield """<form method="post"> Password <input type='password' name="password"> <input type='submit' value="ok"> </form>"""
Initial URL
Initial Description
Not very secure, but very handy ... Use like that : app = your_wsgi_app() app = ControlAccess( app, "your_password") httpserve( app ) # wsgi server
Initial Title
Simplest wsgi middleware to control access with a form/cookie
Initial Tags
python, web
Initial Language
Python