2 import pprint
3 penv = pprint.pformat(environ)
4 return msg + '\n\n' + penv
5
6 -def deny(start_response, environ, msg):
7 ct = 'text/plain'
8 msg = tack_environ(environ, msg)
9 cl = str(len(msg))
10 start_response('401 Unauthorized',
11 [ ('Content-Type', ct),
12 ('Content-Length', cl) ],
13 )
14
15 -def allow(start_response, environ, msg):
16 ct = 'text/plain'
17 msg = tack_environ(environ, msg)
18 cl = str(len(msg))
19 start_response('200 OK',
20 [ ('Content-Type', ct),
21 ('Content-Length', cl) ],
22 )
23 return [msg]
24
25 -def app(environ, start_response):
26 path_info = environ['PATH_INFO']
27 remote_user = environ.get('REMOTE_USER')
28 if path_info.endswith('/shared'):
29 if not remote_user:
30 return deny(start_response, environ, 'You cant do that')
31 else:
32 return allow(start_response, environ,
33 'Welcome to the shared area, %s' % remote_user)
34 elif path_info.endswith('/admin'):
35 if remote_user != 'admin':
36 return deny(start_response, environ, 'Only admin can do that')
37 else:
38 return allow(start_response, environ, 'Hello, admin!')
39 elif path_info.endswith('/chris'):
40 if remote_user != 'chris':
41 return deny(start_response, environ, 'Only chris can do that')
42 else:
43 return allow(start_response, environ, 'Hello, chris!')
44 else:
45 return allow(start_response, environ, 'Unprotected page')
46
49