From: Evan Broder Date: Sun, 20 Dec 2009 22:20:19 +0000 (-0500) Subject: Use separate fcgi files for the authed and unauthed site. X-Git-Tag: 0.1.0^2~6 X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-web.git/commitdiff_plain/dd0fb836097b7f9cc92f8d78c45f1bf2b59c3c1e Use separate fcgi files for the authed and unauthed site. This allows both of them to be mounted on / in their respective CherryPy apps, which in turn eliminates any discrepancy between "internal URLs" and "external URLs". svn path=/package_branches/invirt-web/cherrypy-rebased/; revision=2729 --- diff --git a/code/main.fcgi b/code/auth.fcgi similarity index 74% rename from code/main.fcgi rename to code/auth.fcgi index b20cfeb..e48729a 100755 --- a/code/main.fcgi +++ b/code/auth.fcgi @@ -1,10 +1,10 @@ #!/usr/bin/python -"""Main FastCGI entry point for web interface""" +"""Main FastCGI entry point for authenticated web interface""" import cherrypy import os import sys -from main import InvirtWeb, InvirtUnauthWeb +from main import InvirtWeb dev = False base_dir = os.path.dirname(__file__) @@ -42,14 +42,10 @@ if __name__ == "__main__": } } - authApp = cherrypy.tree.mount(InvirtWeb(), - '/auth', - app_config) - authApp.merge(conf_file) - unauthApp = cherrypy.tree.mount(InvirtUnauthWeb(), - '/unauth', - app_config) - unauthApp.merge(conf_file) + app = cherrypy.tree.mount(InvirtWeb(), + '/', + app_config) + app.merge(conf_file) cherrypy.config.update(conf_file) if dev: diff --git a/code/unauth.fcgi b/code/unauth.fcgi new file mode 100755 index 0000000..841da6a --- /dev/null +++ b/code/unauth.fcgi @@ -0,0 +1,59 @@ +#!/usr/bin/python +"""Main FastCGI entry point for unauthenticated web interface""" + +import cherrypy +import os +import sys +from main import InvirtUnauthWeb + +dev = False +base_dir = os.path.dirname(__file__) + +def usage(): + print >>sys.stderr, """%s [config] + +Run server as FastCGI, with CherryPy config from "main.conf". + +With `config`, run standalone with CherryPy config from `config`. +""" % sys.argv[0] + sys.exit(2) + +if __name__ == "__main__": + static_dir = os.path.join(base_dir, 'static') + + if len(sys.argv) > 2: + usage() + if len(sys.argv) > 1: + if sys.argv[1] in ('-h', '--help'): + usage() + conf_file = sys.argv[1] + dev = True + else: + conf_file = os.path.join(base_dir, 'main.conf') + + app_config = { + '/': { + 'tools.invirtwebstate.on': True, + }, + '/static': { + 'tools.staticdir.root': static_dir, + 'tools.staticdir.on': True, + 'tools.staticdir.dir': static_dir, + } + } + + app = cherrypy.tree.mount(InvirtUnauthWeb(), + '/', + app_config) + app.merge(conf_file) + cherrypy.config.update(conf_file) + + if dev: + cherrypy.server.quickstart() + cherrypy.engine.start() + cherrypy.engine.block() + else: + cherrypy.engine.start(blocking=False) + from flup.server.fcgi import WSGIServer + server = WSGIServer(cherrypy.tree) + server.run() diff --git a/files/etc/apache2/sites-available/default.mako b/files/etc/apache2/sites-available/default.mako index 7ec0903..ac0cf4f 100644 --- a/files/etc/apache2/sites-available/default.mako +++ b/files/etc/apache2/sites-available/default.mako @@ -23,7 +23,7 @@ NameVirtualHost *:80 RewriteRule ^/trac(.*) ${tracuri}$1 [R,L] RewriteRule ^/invirt - [L] RewriteRule ^/kill.cgi - [L] - RewriteRule ^/(.*) /var/www/invirt-web/main.fcgi/unauth/$1 [L] + RewriteRule ^/(.*) /var/www/invirt-web/unauth.fcgi/$1 [L] ErrorLog /var/log/apache2/error.log diff --git a/files/etc/apache2/sites-available/ssl.mako b/files/etc/apache2/sites-available/ssl.mako index 009b412..372563f 100644 --- a/files/etc/apache2/sites-available/ssl.mako +++ b/files/etc/apache2/sites-available/ssl.mako @@ -26,7 +26,7 @@ ${caller.body()} RewriteRule ^/admin/static(.*) /static/$1 [L] RewriteRule ^/trac(.*) ${tracuri}$1 [R,L] RewriteRule ^/kill.cgi - [L] - RewriteRule ^/(.*) /var/www/invirt-web/main.fcgi/auth/$1 [L] + RewriteRule ^/(.*) /var/www/invirt-web/auth.fcgi/$1 [L] RewriteLog /var/log/apache2/rewrite.log RewriteLogLevel 0