1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 from wsgi import wsgiRequest
18
19
20 -def handle(environ, start_response, server, component_type, servertype="spacewalk.server.apacheServer"):
21
22
23 replacements = {'_': '-', 'Rhn': 'RHN', 'Md5Sum': 'MD5sum', 'Xml': 'XML', 'Actualuri': 'ActualURI'}
24 for key in environ.keys():
25 if key[:5] == "HTTP_":
26 new_key = key[5:].title()
27 for k, v in replacements.items():
28 new_key = new_key.replace(k, v)
29 environ[new_key] = environ[key]
30
31 req = wsgiRequest.WsgiRequest(environ, start_response)
32 req.set_option("SERVER", server)
33 req.set_option("RHNComponentType", component_type)
34
35 parseServ = get_handle(servertype, "HeaderParserHandler")
36 ret = parseServ(req)
37
38 if len(req.output) > 0 or ret != 0:
39 if not req.sent_header:
40 req.send_http_header(status=ret)
41 return req.output
42
43 appServ = get_handle(servertype, "Handler")
44 ret = appServ(req)
45
46 if not ret:
47 ret = None
48
49 if not req.sent_header:
50 req.send_http_header(status=ret)
51
52
53 if servertype != 'spacewalk.satellite_exporter.satexport':
54 logServ = get_handle(servertype, "LogHandler")
55 logServ(req)
56 cleanServ = get_handle(servertype, "CleanupHandler")
57 cleanServ(req)
58
59 return req.output
60
61
63 handler_module = __import__(servertype, globals(), locals(), [servertype.split('.')[-1]])
64 return getattr(handler_module, name)
65