source: trunk/packages/invirt-web/code/invirt.fcgi @ 2948

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

invirt.fcgi: Document wrapper scripts more explicitly.

  • Property svn:executable set to *
File size: 1.8 KB
Line 
1#!/usr/bin/python
2"""Main FastCGI entry point for web interface"""
3
4import cherrypy
5import os
6import sys
7
8import main
9
10dev = False
11base_dir = os.path.dirname(__file__)
12
13def usage():
14    argv0_dir = os.path.dirname(sys.argv[0])
15    print >>sys.stderr, """%s <unauth|auth> [config]
16
17Or via the provided wrapper scripts:
18%s/auth.fcgi [config]
19%s/unauth.fcgi [config]
20
21Run server as FastCGI, with CherryPy config from "main.conf".
22With `config`, run standalone with CherryPy config from `config`.
23
24Serve the authenticated site with 'auth' or under 'auth.fcgi',
25and the unauthenticated site with 'unauth' or under 'unauth.fcgi'.
26""" % (sys.argv[0], argv0_dir, argv0_dir)
27    sys.exit(2)
28
29if __name__ == "__main__":
30    if '-h' in sys.argv or '--help' in sys.argv:
31        usage()
32    if not (2 <= len(sys.argv) <= 3):
33        usage()
34
35    mode = sys.argv[1]
36    if len(sys.argv) == 3:
37        conf_file = sys.argv[2]
38        dev = True
39    else:
40        conf_file = os.path.join(base_dir, 'main.conf')
41
42    app_config = {
43        '/': {
44            'tools.invirtwebstate.on': True,
45            },
46        }
47
48    if mode.startswith('auth'):
49        root = main.InvirtWeb()
50        app_config['/']['tools.mako.module_directory'] = "/tmp/invirt-auth-web-templatecache"
51    elif mode.startswith('unauth'):
52        root = main.InvirtUnauthWeb()
53        app_config['/']['tools.mako.module_directory'] = "/tmp/invirt-unauth-web-templatecache"
54    else:
55        usage()
56
57    app = cherrypy.tree.mount(root, '/', app_config)
58    app.merge(conf_file)
59    cherrypy.config.update(conf_file)
60
61    if dev:
62        cherrypy.server.quickstart()
63        cherrypy.engine.start()
64        cherrypy.engine.block()
65    else:
66        cherrypy.engine.start(blocking=False)
67        from flup.server.fcgi import WSGIServer
68        server = WSGIServer(cherrypy.tree)
69        server.run()
Note: See TracBrowser for help on using the repository browser.