/usr/share/pyshared/paste/webkit/examples/EchoServlet.py is in python-pastewebkit 1.0-7.
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 | r"""\
Paste/WebKit application
Does things as requested. Takes variables:
header.header-name=value, like
header.location=http://yahoo.com
error=code, like
error=301 (temporary redirect)
error=assert (assertion error)
environ=true,
display all the environmental variables, like
key=str(value)\n
message=string
display string
"""
# Special WSGI version of WebKit:
from paste.webkit.wkservlet import Page
from paste import httpexceptions
class EchoServlet(Page):
def writeHTML(self):
req = self.request()
headers = {}
for key, value in req.fields().items():
if key.startswith('header.'):
name = key[len('header.'):]
self.response().setHeader(name, value)
# @@: I shouldn't have to do this:
headers[name] = value
error = req.field('error', None)
if error and error != 'iter':
if error == 'assert':
assert 0, "I am asserting zero!"
raise httpexceptions.get_exception(
int(error), headers=headers)
if req.field('environ', None):
items = req.environ().items()
items.sort()
self.response().setHeader('content-type', 'text/plain')
for name, value in items:
self.write('%s=%s\n' % (name, value))
return
if req.hasField('message'):
self.response().setHeader('content-type', 'text/plain')
self.write(req.field('message'))
return
self.write('hello world!')
|