| 1 | def htmlquote(text): |
| 2 | ret = "" |
| 3 | for c in text: |
| 4 | if c == '&': |
| 5 | ret += "&" |
| 6 | elif c == '<': |
| 7 | ret += "<" |
| 8 | elif c == '>': |
| 9 | ret += ">" |
| 10 | elif c == '"': |
| 11 | ret += """ |
| 12 | else: |
| 13 | ret += c |
| 14 | return ret |
| 15 | |
| 16 | def simpleerror(env, startreq, code, title, msg): |
| 17 | buf = """<?xml version="1.0" encoding="US-ASCII"?> |
| 18 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |
| 19 | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US"> |
| 20 | <head> |
| 21 | <title>%s</title> |
| 22 | </head> |
| 23 | <body> |
| 24 | <h1>%s</h1> |
| 25 | <p>%s</p> |
| 26 | </body> |
| 27 | </html>""" % (title, title, htmlquote(msg)) |
| 28 | buf = buf.encode("ascii") |
| 29 | startreq("%i %s" % (code, title), [("Content-Type", "text/html"), ("Content-Length", str(len(buf)))]) |
| 30 | return [buf] |