Skip to content

Commit

Permalink
be able to set valid message ids
Browse files Browse the repository at this point in the history
  • Loading branch information
nathan.vangheem committed Jan 27, 2016
1 parent 8352255 commit ae85f9b
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 8 deletions.
5 changes: 5 additions & 0 deletions CHANGES.rst
@@ -1,6 +1,11 @@
Changelog
=========

4.0.4 (2016-01-27)
------------------

- be able to set valid message ids

4.0.3 (2015-06-08)
------------------

Expand Down
10 changes: 8 additions & 2 deletions factored/plugins.py
Expand Up @@ -21,7 +21,7 @@
from factored.utils import get_mailer
from factored.utils import make_random_code
from factored.utils import generate_url

from factored.utils import create_message_id

_auth_plugins = []

Expand Down Expand Up @@ -310,6 +310,9 @@ def send_code_reminder(self, user):
appname = self.req.registry['settings']['appname']
message['body'] = message['body'].replace(
'{code}', get_barcode_image(username, user.secret, appname))
message['extra_headers'] = {
'Message-ID': create_message_id()
}
mailer.send_immediately(Message(**message))

def check_code(self, user):
Expand Down Expand Up @@ -444,7 +447,10 @@ def user_form_submitted_successfully(self, user):
'body': settings['body'].replace('{code}', user.generated_code)
.replace('{url}', url),
'subject': settings['subject'],
'sender': settings['sender']
'sender': settings['sender'],
'extra_headers': {
'Message-ID': create_message_id()
}
}
mailer.send_immediately(Message(**message))

Expand Down
26 changes: 20 additions & 6 deletions factored/utils.py
@@ -1,9 +1,13 @@
import time
from datetime import datetime
import base64
import struct
import hmac
from datetime import datetime
from hashlib import sha256 as sha
import hashlib
import hmac
import struct
import time

from pyramid.threadlocal import get_current_registry

try:
from urllib import urlencode
except:
Expand All @@ -16,8 +20,6 @@
except NotImplementedError:
using_sysrandom = False

from hashlib import sha256 as sha


# generated when process started, hard to guess
SECRET = random.randint(0, 1000000)
Expand Down Expand Up @@ -183,3 +185,15 @@ def generate_url(req, path, params={}):
if params:
url += '?' + urlencode(params)
return url


def create_message_id(_id=''):
registry = get_current_registry()
domain = 'localhost'
if registry:
domain = registry.settings.get('mail.domain', domain)
if not _id:
_id = '%s-%s' % (
str(time.time()),
get_random_string(20))
return '%s@%s' % (_id, domain)

0 comments on commit ae85f9b

Please sign in to comment.