-
Notifications
You must be signed in to change notification settings - Fork 0
/
wsgi_server.py
59 lines (50 loc) · 2.23 KB
/
wsgi_server.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# This file is part of DQXServer - (C) Copyright 2014, Paul Vauterin, Ben Jeffery, Alistair Miles <[email protected]>
# This program is free software licensed under the GNU Affero General Public License.
# You can find a copy of this license in LICENSE in the top directory of the source code or at <http://opensource.org/licenses/AGPL-3.0>
import wsgi_api
import wsgi_general
import os
from werkzeug.wsgi import SharedDataMiddleware, DispatcherMiddleware
import config
from cas import CASMiddleware
import logging
from werkzeug.contrib.sessions import FilesystemSessionStore
from werkzeug.wrappers import Response
#logging.basicConfig(level=logging.DEBUG)
#This function is called if:
# Not authenticated
# the ignore_redirect regex matches the (full) url pattern
def ignored_callback(environ, start_response):
response = Response('{"Error":"NotAuthenticated"}')
# response.status = '401 Unauthorized'
response.status = '200 OK'
response.headers['Content-Type'] = 'application/json'
return response(environ, start_response)
general_with_static = SharedDataMiddleware(wsgi_general.application, {
'/': os.path.join(os.path.dirname(config.__file__), 'static')
})
application = DispatcherMiddleware(general_with_static, {
'/api': wsgi_api.application,
})
#Wrap in cas service if configured
try:
cas_service = config.CAS_SERVICE
except AttributeError:
cas_service = ''
try:
effective_url = config.CAS_EFFECTIVE_URL
except AttributeError:
effective_url = None
if cas_service != '':
fs_session_store = FilesystemSessionStore()
application = CASMiddleware(application,
cas_root_url = cas_service,
logout_url = config.CAS_LOGOUT_PAGE,
logout_dest = config.CAS_LOGOUT_DESTINATION,
protocol_version = config.CAS_VERSION,
casfailed_url = config.CAS_FAILURE_PAGE,
effective_url = effective_url,
entry_page = '/index.html',
session_store = fs_session_store,
ignore_redirect = '(.*)\\api?datatype=',
ignored_callback = ignored_callback)