#!/usr/bin/python2.4 import cgi, sys, os, cStringIO, cgitb, Cookie cgitb.enable(display=0, logdir="./logs") _headers = {"Content-type" : ["text/html"]} outbuffer = cStringIO.StringIO() sys.stdout = outbuffer 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 k in form for v in form.getlist(k)) - \ set((k, v) for k in get for v in get[k]) post = {} #print >>sys.__stdout__, "Content-type: text/html\n\n", cgi.escape(str(s)) 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 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) 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) 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 __init__(self): pass def __del__(self): sys.stdout = sys.__stdout__ print getHeaderString() + outbuffer.getvalue() outbuffer.close() if __name__ == "__main__": import error else: _renderGuy = _renderMe()