All pastes #362715 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-02-19 00:25 UTC
rendered paste body
#!/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)