OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # coding: utf-8 | 2 # coding: utf-8 |
3 | 3 |
4 # This file is part of the Adblock Plus web scripts, | 4 # This file is part of the Adblock Plus web scripts, |
5 # Copyright (C) 2006-2015 Eyeo GmbH | 5 # Copyright (C) 2006-2015 Eyeo GmbH |
6 # | 6 # |
7 # Adblock Plus is free software: you can redistribute it and/or modify | 7 # Adblock Plus is free software: you can redistribute it and/or modify |
8 # it under the terms of the GNU General Public License version 3 as | 8 # it under the terms of the GNU General Public License version 3 as |
9 # published by the Free Software Foundation. | 9 # published by the Free Software Foundation. |
10 # | 10 # |
11 # Adblock Plus is distributed in the hope that it will be useful, | 11 # Adblock Plus is distributed in the hope that it will be useful, |
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 # GNU General Public License for more details. | 14 # GNU General Public License for more details. |
15 # | 15 # |
16 # You should have received a copy of the GNU General Public License | 16 # You should have received a copy of the GNU General Public License |
17 # along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. | 17 # along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
18 | 18 |
19 import os, re | 19 import os, re |
20 from flup.server.fcgi import WSGIServer | 20 from flup.server.fcgi import WSGIServer |
21 from urlparse import urlparse | |
22 | 21 |
23 from sitescripts.web import handlers | 22 from sitescripts.web import multiplex |
24 | |
25 class MultiplexerApp: | |
26 def __call__(self, environ, start_response): | |
27 if 'REQUEST_URI' in environ: | |
28 request = urlparse(environ['REQUEST_URI']) | |
29 if request.path in handlers: | |
30 return handlers[request.path](environ, start_response) | |
31 | |
32 request_dir = re.sub(r'[^/]+$', '', request.path) | |
33 if request_dir in handlers: | |
34 return handlers[request_dir](environ, start_response) | |
35 | |
36 start_response('404 Not Found', [('Content-Type', 'text/html')]) | |
37 return ["Not Found"] | |
38 | 23 |
39 bindAddress = None | 24 bindAddress = None |
40 if 'FCGI_BIND_ADDRESS' in os.environ: | 25 if 'FCGI_BIND_ADDRESS' in os.environ: |
41 match = re.match(r'^(.*?):(\d+)$', os.environ['FCGI_BIND_ADDRESS']) | 26 match = re.match(r'^(.*?):(\d+)$', os.environ['FCGI_BIND_ADDRESS']) |
42 bindAddress = (match.group(1), int(match.group(2))) | 27 bindAddress = (match.group(1), int(match.group(2))) |
43 srv = WSGIServer(MultiplexerApp(), debug=False, bindAddress=bindAddress) | 28 srv = WSGIServer(multiplex, debug=False, bindAddress=bindAddress) |
44 | 29 |
45 if __name__ == '__main__': | 30 if __name__ == '__main__': |
46 srv.run() | 31 srv.run() |
47 | 32 |
OLD | NEW |