source: package_branches/invirt-web/cherrypy/code/invirt.fcgi @ 2655

Last change on this file since 2655 was 2655, checked in by price, 15 years ago

Deduplicate the code in auth.fcgi and unauth.fcgi

But call the reunited code "invirt.fcgi" rather than the old "main.fcgi",
which was always annoying for tab-completion against "main.py".

File size: 1.5 KB
RevLine 
[579]1#!/usr/bin/python
[2655]2"""Main FastCGI entry point for web interface"""
[2386]3
4import cherrypy
5import os
6import sys
7
[2655]8import main
9
[2386]10dev = False
11base_dir = os.path.dirname(__file__)
12
[2521]13def usage():
14    print >>sys.stderr, """%s [config]
15
16Run server as FastCGI, with CherryPy config from "main.conf".
17
18With `config`, run standalone with CherryPy config from `config`.
[2655]19
20Run this script as either 'auth.fcgi' or 'unauth.fcgi', to get
21the authenticated or unauthenticated site respectively.
[2521]22""" % sys.argv[0]
23    sys.exit(2)
24
25if __name__ == "__main__":
26    if len(sys.argv) > 2:
27        usage()
[2386]28    if len(sys.argv) > 1:
[2521]29        if sys.argv[1] in ('-h', '--help'):
30            usage()
[2386]31        conf_file = sys.argv[1]
32        dev = True
33    else:
34        conf_file = os.path.join(base_dir, 'main.conf')
[2650]35
36    app_config = {
37        '/': {
38            'tools.invirtwebstate.on': True,
39            },
40        }
[2655]41
42    if os.path.basename(sys.argv[0]).startswith('auth'):
43        root = InvirtWeb()
44    elif os.path.basename(sys.argv[0]).startswith('unauth'):
45        root = InvirtUnauthWeb()
46    else:
47        usage()
48
49    app = cherrypy.tree.mount(root, '/', app_config)
[2651]50    app.merge(conf_file)
[2386]51    cherrypy.config.update(conf_file)
52
53    if dev:
54        cherrypy.server.quickstart()
55        cherrypy.engine.start()
56        cherrypy.engine.block()
57    else:
58        cherrypy.engine.start(blocking=False)
59        from flup.server.fcgi import WSGIServer
[2484]60        server = WSGIServer(cherrypy.tree)
[2386]61        server.run()
Note: See TracBrowser for help on using the repository browser.