| Index: sitescripts/submit_email/web/submit_email.py |
| =================================================================== |
| --- a/sitescripts/submit_email/web/submit_email.py |
| +++ b/sitescripts/submit_email/web/submit_email.py |
| @@ -19,6 +19,7 @@ |
| import hmac |
| import hashlib |
| import wsgiref.util |
| +import ConfigParser |
| from urlparse import parse_qsl, urljoin |
| from urllib import urlencode, quote |
| @@ -26,7 +27,6 @@ |
| from sitescripts.web import url_handler, form_handler, send_simple_response |
| VERIFICATION_PATH = '/verifyEmail' |
| -DEFAULT_PRODUCT = 'adblockbrowser' |
| def sign(config, data): |
| secret = config.get('submit_email', 'secret') |
| @@ -35,6 +35,14 @@ |
| @url_handler('/submitEmail') |
| @form_handler |
| def submit_email(environ, start_response, data): |
| + config = get_config() |
| + |
| + try: |
| + product = data['product'] |
| + template = config.get('submit_email', product + '_verification_email_template') |
| + except (KeyError, ConfigParser.NoOptionError): |
| + return send_simple_response(start_response, 400, 'Unknown product') |
| + |
| email = data.get('email', '').strip() |
| try: |
| email = encode_email_address(email) |
| @@ -44,18 +52,13 @@ |
| 'Please enter a valid email address.' |
| ) |
| - config = get_config() |
| - params = [('email', email), ('signature', sign(config, email))] |
| + params = [('email', email), ('signature', sign(config, email)), ('product', product)] |
| lang = data.get('lang') |
| if lang: |
| params.append(('lang', lang)) |
| - product = data.get('product', DEFAULT_PRODUCT) |
| - email_template = product + '_verification_email_template' |
| - params.append(('product', product)) |
| - |
| sendMail( |
| - config.get('submit_email', email_template), |
| + template, |
| { |
| 'recipient': email, |
| 'verification_url': '%s?%s' % ( |
| @@ -76,6 +79,11 @@ |
| config = get_config() |
| params = dict(parse_qsl(environ.get('QUERY_STRING', ''))) |
| + try: |
| + filename = config.get('submit_email', params['product'] + '_filename') |
| + except (KeyError, ConfigParser.NoOptionError): |
| + return send_simple_response(start_response, 400, 'Unknown product') |
| + |
| email = params.get('email', '') |
| signature = params.get('signature', '') |
| if sign(config, email) != signature: |
| @@ -84,9 +92,6 @@ |
| 'Invalid signature in verification request.' |
| ) |
| - product = params.get('product', DEFAULT_PRODUCT) |
| - filename = config.get('submit_email', product + '_filename') |
| - |
| with open(filename, 'ab', 0) as file: |
| fcntl.lockf(file, fcntl.LOCK_EX) |
| try: |