index.cgi
author Tero Marttila <terom@fixme.fi>
Mon, 16 Feb 2009 01:03:23 +0200
changeset 133 088aa2da1340
parent 125 45e56cbf9086
child 134 fbccc1648d79
permissions -rwxr-xr-x
our own CGI error handler
6
5565d94da522 start breaking everything
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
#!/usr/bin/python2.5
5565d94da522 start breaking everything
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
7
d6a8258bd90e YES YES MOAR WSGI - Hello World
Tero Marttila <terom@fixme.fi>
parents: 6
diff changeset
     3
"""
125
45e56cbf9086 modify index.cgi to use qmsk.web.cgi_main
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
     4
    CGI mode using qmsk.web.cgi
7
d6a8258bd90e YES YES MOAR WSGI - Hello World
Tero Marttila <terom@fixme.fi>
parents: 6
diff changeset
     5
"""
6
5565d94da522 start breaking everything
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
133
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
     7
def error () :
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
     8
    """
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
     9
        Dumps out a raw traceback of the current exception to stdout, call from except
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    10
    """
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    11
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    12
    import traceback, sys
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    13
    
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    14
    # HTTP headers
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    15
    sys.stdout.write('Status: 500 Internal Server Error\r\n')
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    16
    sys.stdout.write('Content-type: text/html\r\n')
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    17
    sys.stdout.write('\r\n')
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    18
    sys.stdout.write("""\
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    19
<html><head><title>500 Internal Server Error</title></head><body>
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    20
<h1>Oops!</h1>
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    21
<p>
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    22
    An error occured, which was not logged, and will not be reported to anybody. It might be your fault, or it might be
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    23
    the programmer's, but it's probably not mine. If you think you really care, you can try poking the administrator of
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    24
    this site to see if they respond. 
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    25
</p>
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    26
<p>
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    27
    If you do so, please include the following information:
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    28
</p>
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    29
<h2>Details:</h2>
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    30
<pre>%(traceback)s</pre>
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    31
</body></html>
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    32
""" % dict(traceback=traceback.format_exc()))
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    33
    
125
45e56cbf9086 modify index.cgi to use qmsk.web.cgi_main
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
    34
def main () :
16
4a40718c7b4b better error handling of import errors in CGI, and split PageTree out from page.py into page_tree.py and tree_parse.py
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
    35
    """
125
45e56cbf9086 modify index.cgi to use qmsk.web.cgi_main
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
    36
        Build our wsgi.Application and run
7
d6a8258bd90e YES YES MOAR WSGI - Hello World
Tero Marttila <terom@fixme.fi>
parents: 6
diff changeset
    37
    """
11
fa216534ae45 funky PageTree stuff
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    38
fa216534ae45 funky PageTree stuff
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    39
    try :
125
45e56cbf9086 modify index.cgi to use qmsk.web.cgi_main
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
    40
        from qmsk.web import wsgi, cgi_main
46
185504387370 reduce to irclogs.qmsk.net site
Tero Marttila <terom@fixme.fi>
parents: 31
diff changeset
    41
        import urls
16
4a40718c7b4b better error handling of import errors in CGI, and split PageTree out from page.py into page_tree.py and tree_parse.py
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
    42
31
107062ebb6f9 bloat code with even more layers of indirection, split off the filesystem-based stuff into a separate lib.filesystem package (next, move it to sites/www.qmsk.net)
Tero Marttila <terom@fixme.fi>
parents: 16
diff changeset
    43
        # create app
46
185504387370 reduce to irclogs.qmsk.net site
Tero Marttila <terom@fixme.fi>
parents: 31
diff changeset
    44
        app = wsgi.Application(urls.mapper)
16
4a40718c7b4b better error handling of import errors in CGI, and split PageTree out from page.py into page_tree.py and tree_parse.py
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
    45
        
4a40718c7b4b better error handling of import errors in CGI, and split PageTree out from page.py into page_tree.py and tree_parse.py
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
    46
        # run once
125
45e56cbf9086 modify index.cgi to use qmsk.web.cgi_main
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
    47
        cgi_main.run(app)
11
fa216534ae45 funky PageTree stuff
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    48
fa216534ae45 funky PageTree stuff
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    49
    except :
125
45e56cbf9086 modify index.cgi to use qmsk.web.cgi_main
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
    50
        # display error on stdout
133
088aa2da1340 our own CGI error handler
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
    51
        error()
7
d6a8258bd90e YES YES MOAR WSGI - Hello World
Tero Marttila <terom@fixme.fi>
parents: 6
diff changeset
    52
    
d6a8258bd90e YES YES MOAR WSGI - Hello World
Tero Marttila <terom@fixme.fi>
parents: 6
diff changeset
    53
if __name__ == '__main__' :
125
45e56cbf9086 modify index.cgi to use qmsk.web.cgi_main
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
    54
    main()
45e56cbf9086 modify index.cgi to use qmsk.web.cgi_main
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
    55