source: gutenbach-web/middleware.py @ b748ed1

debianmacno-cupsweb
Last change on this file since b748ed1 was b748ed1, checked in by Edward Z. Yang <edwardzyang@…>, 16 years ago

Make keytab optional.

Signed-off-by: Edward Z. Yang <edwardzyang@…>

  • Property mode set to 100644
File size: 1.8 KB
Line 
1"""TurboGears middleware initialization"""
2from sipbmp3web.config.app_cfg import base_config
3from sipbmp3web.config.environment import load_environment
4import subprocess, os
5from pylons import config
6
7#Use base_config to setup the necessary WSGI App factory.
8#make_base_app will wrap the TG2 app with all the middleware it needs.
9make_base_app = base_config.setup_tg_wsgi_app(load_environment)
10
11class FastCGIFixMiddleware(object):
12    """Remove dispatch.fcgi from the SCRIPT_NAME
13   
14    mod_rewrite doesn't do a perfect job of hiding it's actions to the
15    underlying script, which causes TurboGears to get confused and tack
16    on dispatch.fcgi when it really shouldn't. This fixes that problem as a
17    Middleware that fiddles with the appropriate environment variable
18    before any processing takes place.
19    """
20    def __init__(self, app, global_conf=None):
21        self.app = app
22    def __call__(self, environ, start_response):
23        environ['SCRIPT_NAME'] = environ['SCRIPT_NAME'].replace('/dispatch.fcgi', '')
24        return self.app(environ, start_response)
25
26class KinitMiddleware(object):
27    """Performs Kerberos authentication with a keytab"""
28    def __init__(self, app, global_conf=None):
29        self.app = app
30        try:
31            self.keytab = config["keytab"]
32        except KeyError:
33            self.keytab = None
34    def __call__(self, environ, start_response):
35        if self.keytab:
36            subprocess.call(["/usr/kerberos/bin/kinit", "ezyang/extra", "-k", "-t", self.keytab])
37        return self.app(environ, start_response)
38
39def make_app(global_conf, full_stack=True, **app_conf):
40    app = make_base_app(global_conf, full_stack=True, **app_conf)
41    app = FastCGIFixMiddleware(app, global_conf)
42    app = KinitMiddleware(app, global_conf)
43    return app
44
45
Note: See TracBrowser for help on using the repository browser.