OLD | NEW |
1 # coding: utf-8 | 1 # coding: utf-8 |
2 | 2 |
3 # This file is part of the Adblock Plus web scripts, | 3 # This file is part of the Adblock Plus web scripts, |
4 # Copyright (C) 2006-2015 Eyeo GmbH | 4 # Copyright (C) 2006-2015 Eyeo GmbH |
5 # | 5 # |
6 # Adblock Plus is free software: you can redistribute it and/or modify | 6 # Adblock Plus is free software: you can redistribute it and/or modify |
7 # it under the terms of the GNU General Public License version 3 as | 7 # it under the terms of the GNU General Public License version 3 as |
8 # published by the Free Software Foundation. | 8 # published by the Free Software Foundation. |
9 # | 9 # |
10 # Adblock Plus is distributed in the hope that it will be useful, | 10 # Adblock Plus is distributed in the hope that it will be useful, |
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 # GNU General Public License for more details. | 13 # GNU General Public License for more details. |
14 # | 14 # |
15 # You should have received a copy of the GNU General Public License | 15 # You should have received a copy of the GNU General Public License |
16 # along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. | 16 # along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
17 | 17 |
18 import base64 | 18 import base64 |
19 import imp | 19 import imp |
20 import importlib | 20 import importlib |
| 21 import re |
21 from sitescripts.utils import get_config | 22 from sitescripts.utils import get_config |
22 | 23 |
23 handlers = {} | 24 handlers = {} |
24 authenticated_users = {} | 25 authenticated_users = {} |
25 | 26 |
26 def url_handler(url): | 27 def url_handler(url): |
27 def decorator(func): | 28 def decorator(func): |
28 registerUrlHandler(url, func) | 29 registerUrlHandler(url, func) |
29 return func | 30 return func |
30 return decorator | 31 return decorator |
(...skipping 20 matching lines...) Expand all Loading... |
51 expected_username = config.get(config_section, "basic_auth_username") | 52 expected_username = config.get(config_section, "basic_auth_username") |
52 expected_password = config.get(config_section, "basic_auth_password") | 53 expected_password = config.get(config_section, "basic_auth_password") |
53 if username == expected_username and password == expected_password: | 54 if username == expected_username and password == expected_password: |
54 return f(environ, start_response) | 55 return f(environ, start_response) |
55 | 56 |
56 realm = get_config().get("DEFAULT", "basic_auth_realm") | 57 realm = get_config().get("DEFAULT", "basic_auth_realm") |
57 start_response("401 UNAUTHORIZED", | 58 start_response("401 UNAUTHORIZED", |
58 [("WWW-Authenticate", 'Basic realm="%s"' % realm)]) | 59 [("WWW-Authenticate", 'Basic realm="%s"' % realm)]) |
59 return "" | 60 return "" |
60 | 61 |
| 62 def multiplex(environ, start_response): |
| 63 try: |
| 64 path = environ["PATH_INFO"] |
| 65 try: |
| 66 handler = handlers[path] |
| 67 except KeyError: |
| 68 handler = handlers[re.sub(r"[^/]+$", "", path)] |
| 69 except KeyError: |
| 70 start_response("404 Not Found", [("Content-Type", "text/plain")]) |
| 71 return ["Not Found"] |
| 72 |
| 73 return handler(environ, start_response) |
| 74 |
61 for module in set(get_config().options("multiplexer")) - set(get_config().defaul
ts()): | 75 for module in set(get_config().options("multiplexer")) - set(get_config().defaul
ts()): |
62 module_path = get_config().get("multiplexer", module) | 76 module_path = get_config().get("multiplexer", module) |
63 if module_path: | 77 if module_path: |
64 imp.load_source(module, module_path) | 78 imp.load_source(module, module_path) |
65 else: | 79 else: |
66 importlib.import_module(module) | 80 importlib.import_module(module) |
OLD | NEW |