source: main/waeup.cas/trunk/waeup/cas/server.py @ 10371

Last change on this file since 10371 was 10351, checked in by uli, 11 years ago

Add a db_path option for CAS server.

File size: 1.4 KB
Line 
1"""A WSGI app for serving CAS.
2"""
3import os
4import tempfile
5from webob import exc, Response
6from webob.dec import wsgify
7
8template_dir = os.path.join(os.path.dirname(__file__), 'templates')
9
10
11class CASServer(object):
12    """A WSGI CAS server.
13
14    This CAS server stores credential data (tickets, etc.) in a local
15    sqlite3 database file.
16
17    `db_path` -
18       The filesystem path to the database to use. If none is given
19       CAS server will create a new one in some new, temporary
20       directory. Please note that credentials will be lost after a
21       CAS server restart.
22
23       If the path is given and the file exists already, it will be
24       used.
25
26       If the database file does not exist, it will be created.
27    """
28    def __init__(self, db_path=None):
29        if db_path is None:
30            db_path = os.path.join(tempfile.mkdtemp(), 'cas.db')
31        self.db_path = db_path
32
33    @wsgify
34    def __call__(self, req):
35        if req.path in ['/login', '/validate', '/logout']:
36            return getattr(self, req.path[1:])(req)
37        return exc.HTTPNotFound()
38
39    def login(self, req):
40        return Response(
41            open(os.path.join(template_dir, 'login.html'), 'r').read())
42
43    def validate(self, req):
44        return exc.HTTPNotImplemented()
45
46    def logout(self, req):
47        return exc.HTTPNotImplemented()
48
49cas_server = CASServer
50
51
52def make_cas_server(global_conf, **local_conf):
53    return CASServer(**local_conf)
Note: See TracBrowser for help on using the repository browser.