/usr/share/pyshared/dhm/cgiutils.py is in python-dhm 0.6-3build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 | # cgiutils.py
#
# Copyright 2001,2002 Wichert Akkerman <wichert@deephackmode.org>
#
# This file is free software; you can redistribute it and/or modify it
# under the terms of version 2 of the GNU General Public License as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# Calculate shared library dependencies
"""Utility functions to make writing CGI scripts in python easier.
"""
__docformat__ = "epytext en"
# Import all system packages we need
import os, sys, types, cgi, re, Cookie
def setcookie(key, value):
"""Output HTTP header to store a cookie
@param key: cookie name
@type key: string
@param value: data to store in the cookie
@type value: string
"""
c=Cookie.SimpleCookie()
c[key]=value
print c
def extractcookies(dict):
"""Extract HTTP cookies.
Extract all http cookies that the browser passed to use and merge them
in a dictionary.
@param dict: dictionary to store cookies in
@type dict: dictionary"""
return dict.update(GetCookies())
def extractcgiparams(dict):
"""Extract form parameters
Extract all CGI parameters that the browser passed to use and merge
them in a dictionary.
@param dict: dictionary to store CGI PUT/POST parameters in
@type dict: dictionary.
"""
dict.update(GetParameters())
def GetCookies():
"""Extract HTTP cookies.
Extract all http cookies that the browser passed to use and return
them as a dictionary.
@return: cookies
@rtype: dictionary
"""
dict={}
if os.environ.has_key("HTTP_COOKIE"):
c=Cookie.SimpleCookie(os.environ.get("HTTP_COOKIE"))
for key in c.keys():
dict[key]=c[key].value
return dict
def GetParameters():
"""Extract CGI parameters.
Extract all CGI parameters that the browser passed to use and
return them as a dictionary.
@return: CGI parameters
@rtype: dictionary
"""
dict={}
form=cgi.FieldStorage()
for frm in form.keys():
if type(form[frm]) is types.ListType:
dict[frm]=map(lambda x: x.value, form[frm])
else:
dict[frm]=form[frm].value
return dict
def scriptname(script):
"""Return a link to another CGI script in the same directory.
The SCRIPT_NAME environment variable is used to determine the
location of the current CGI.
@param script: name of CGI script to link to
@type script: string
@return: relative URL to CGI
@rtype: string
"""
if os.environ.has_key("SCRIPT_NAME"):
base=re.sub("[^/]*$", script, os.environ["SCRIPT_NAME"])
else:
base=script
return base
def redirect(url):
"""Output redirector.
Generate HTTP headers and a XHTML page to redirect a browser to
another URL.
@param url: URL to redirect to
@type url: string
"""
print "Content-Type: text/html"
print "Location: %s" % url
print "Status: 302\n"
print '''<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>Redirecting</title>
</head>
<body>
<p>
Redirecting. If this does not work automatically please go to
<a href="%s">%s</a> manually.
</p>
</body>
</html>
''' % (url, url)
def getsessionkey(Parameters):
"""Extract a session key.
This function should not exist.
"""
if Parameters.has_key("SESSION"):
return Parameters["SESSION"]
redirect("/nocookies.xhtml")
sys.exit(0)
class Request:
"""CGI request object.
This class extracts all the available information about a CGI requests
and stores that in its instance.
"""
def __init__(self):
self.params=GetParameters()
self.cookies=GetCookies()
for key in [ "SERVER_PROTOCOL", "SERVER_PORT", "REQUEST_URI",
"REQUEST_METHOD", "PATH_INFO", "PATH_TRANSLATED",
"SCRIPT_NAME", "QUERY_STRING", "REMOTE_HOST",
"REMOTE_ADDR", "AUTH_TYPE", "REMOTE_USER",
"REMOTE_IDENT", "CONTENT_TYPE", "CONTENT_LENGTH" ] :
if os.environ.has_key(key):
setattr(self, key.lower(), os.environ[key])
self.headers={}
for key in filter(lambda x: x.startswith("HTTP_"), os.environ.keys()):
self.headers[key[5:].lower().replace("_", "-")]=os.environ[key]
|