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: |