#!/usr/bin/python2.4
import cgi, sys, os, cStringIO, cgitb, Cookie
cgitb.enable(display=0, logdir="/logs")
_headers = {"Content-type" : ["text/html"]}
_buffer = cStringIO.StringIO()
sys.stdout = _buffer
cookie = {}
c = Cookie.SimpleCookie()
if "HTTP_COOKIE" in os.environ:
c.load(os.environ["HTTP_COOKIE"])
for k in c:
cookie[k] = c[k].value
del c
post = {}
get = {}
form = cgi.FieldStorage()
if "QUERY_STRING" in os.environ:
get = cgi.parse_qs(os.environ["QUERY_STRING"], True)
s = set(((k, v) for v in form.getlist(k)) for k in form) - \
set(((k, v) for v in get[k]) for k in get)
post = {}
for k, v in s:
if k not in post:
post[k] = [v]
else:
post[k].append(v)
del form, s
request = dict(post) # Make a copy of post
request.update(get)
request.update(cookie)
server = os.environ
class _renderMe:
"""This class doesn't do anything except get instantiated and then
make sure that page is sent to the client when the script finishes."""
def __del__(self):
global _buffer
sys.stdout = sys.__stdout__
print _getHeaderString() + _buffer.getvalue()
_buffer.close()
_renderGuy = _renderMe()
def _getHeaderString():
string = ""
for k in _headers:
for v in _headers[k]:
string += "%s: %s\n" % (k, v)
return string + "\n"
def header(string, replace=True):
key, val = string.split(": ", 1)
global _headers
if replace:
_headers[key] = [val]
else:
_headers[key].append(val)
def headers_list():
return list("%s: %s" % h for h in _headers.iteritems())
def setcookie(name, value="", expire=0, path="", domain="", secure=False):
c = Cookie.SimpleCookie()
c[name] = value
if expire != 0:
c[name]["expires"] = expire
if path != "":
c[name]["path"] = path
if domain != "":
c[name]["domain"] = domain
if not secure:
c[name]["secure"] = True
header(str(c), False)