Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: sitescripts/web.py

Issue 8327353: Crawler backend (Closed)
Patch Set: Created Sept. 27, 2012, 6:22 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« sitescripts/hg/bin/irchook.py ('K') | « sitescripts/hg/bin/irchook.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # coding: utf-8 1 # coding: utf-8
2 2
3 # This Source Code is subject to the terms of the Mozilla Public License 3 # This Source Code is subject to the terms of the Mozilla Public License
4 # version 2.0 (the "License"). You can obtain a copy of the License at 4 # version 2.0 (the "License"). You can obtain a copy of the License at
5 # http://mozilla.org/MPL/2.0/. 5 # http://mozilla.org/MPL/2.0/.
6 6
7 import base64
8 from sitescripts.utils import get_config
9
7 handlers = {} 10 handlers = {}
11 authenticated_users = {}
8 12
9 def url_handler(url): 13 def url_handler(url):
10 def decorator(func): 14 def decorator(func):
11 registerUrlHandler(url, func) 15 registerUrlHandler(url, func)
12 return func 16 return func
13 return decorator 17 return decorator
14 18
15 def registerUrlHandler(url, func): 19 def registerUrlHandler(url, func):
16 if url in handlers: 20 if url in handlers:
17 raise Exception('A handler for url %s is already registered' % url) 21 raise Exception('A handler for url %s is already registered' % url)
18 handlers[url] = func 22 handlers[url] = func
19 23
24 def basic_auth(f):
Wladimir Palant 2012/09/27 07:34:17 This should accept an optional config_section para
Felix Dahlke 2012/09/27 09:26:24 Done. Somehow thought authenticate was used direct
25 return lambda environ, start_response: authenticate(f, environ, start_response )
26
27 def authenticate(f, environ, start_response, config_section = "DEFAULT"):
28 if "HTTP_AUTHORIZATION" in environ:
29 auth = environ["HTTP_AUTHORIZATION"].split()
30 if len(auth) == 2:
31 if auth[0].lower() == "basic":
32 username, password = base64.b64decode(auth[1]).split(":")
33 config = get_config()
34 expected_username = config.get(config_section, "basic_auth_username")
35 expected_password = config.get(config_section, "basic_auth_password")
36 if username == expected_username and password == expected_password:
37 return f(environ, start_response)
38
39 realm = get_config().get("DEFAULT", "basic_auth_realm")
40 start_response("401 UNAUTHORIZED",
41 [("WWW-Authenticate", 'Basic realm="%s"' % realm)])
42 return ""
43
20 import openid.web.server 44 import openid.web.server
21 import subscriptions.web.fallback 45 import subscriptions.web.fallback
46 import crashes.web.submitCrash
22 import reports.web.submitReport 47 import reports.web.submitReport
23 import reports.web.updateReport 48 import reports.web.updateReport
24 import reports.web.showDigest 49 import reports.web.showDigest
25 import extensions.web.translationCheck 50 import extensions.web.translationCheck
26 import tasks.web.tasks 51 import tasks.web.tasks
27 import formmail.web.formmail 52 import formmail.web.formmail
28 import crawler.web.crawler 53 import crawler.web.crawler
OLDNEW
« sitescripts/hg/bin/irchook.py ('K') | « sitescripts/hg/bin/irchook.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld