source: gutenbach-web/middleware.py @ edb8b23

debianmacno-cupsweb
Last change on this file since edb8b23 was edb8b23, checked in by root <root@…>, 16 years ago

Make krbname in config file.
Signed-off-by: root <root@…>

  • 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            self.krbname = config["krbname"]
33        except KeyError:
34            self.keytab = None
35    def __call__(self, environ, start_response):
36        if self.keytab:
37            subprocess.call(["kinit", self.krbname, "-k", "-t", self.keytab])
38        return self.app(environ, start_response)
39
40def make_app(global_conf, full_stack=True, **app_conf):
41    app = make_base_app(global_conf, full_stack=True, **app_conf)
42    app = FastCGIFixMiddleware(app, global_conf)
43    app = KinitMiddleware(app, global_conf)
44    return app
45
46
Note: See TracBrowser for help on using the repository browser.