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