# HG changeset patch # User Dennis Fink # Date 2015-02-16 18:08:58 # Node ID 7d58100a9a7fc2f6b572231f011b359d51895abf # Parent 69c54ea559da25be3d69b232ad424deba1978b70 added gnupg support diff --git a/ennstatus/__init__.py b/ennstatus/__init__.py --- a/ennstatus/__init__.py +++ b/ennstatus/__init__.py @@ -6,6 +6,8 @@ from flask.ext.compress import Compress from werkzeug.contrib.fixers import ProxyFix +import gnupg + bootstrap = Bootstrap() compress = Compress() @@ -43,6 +45,12 @@ def create_app(): from .log import init_logging init_logging(app) + if 'ENNSTATUS_GPG_HOME' in app.config: + gpg = gnupg.GPG(gnupghome=app.config['ENNSTATUS_GPG_HOME']) + app.extensions['gnupg'] = gpg + else: + app.extensions['gnupg'] = False + @app.errorhandler(404) def page_not_found(e): return render_template('errorpages/404.html') diff --git a/ennstatus/root/functions.py b/ennstatus/root/functions.py --- a/ennstatus/root/functions.py +++ b/ennstatus/root/functions.py @@ -8,21 +8,29 @@ from ennstatus.status.functions import m def send_membership_mail(form): try: msg = Message('New membership application', sender='ennstatus@enn.lu') - msg.add_recipient(current_app.config['ENNSTATUS_MEMBERSHIP_MAIL']) + + recipient = current_app.config['ENNSTATUS_MEMBERSHIP_MAIL'] + msg.add_recipient(recipient) - msg.body = render_template('root/membership_mail.txt', - username=form.username.data, - email=form.email.data, - membership=form.membership.data, - c3l=form.c3l.data, - firstname=form.firstname.data, - surname=form.surname.data, - street=form.street.data, - zip=form.zip.data, - city=form.city.data, - country=form.country.data, - gpg=form.gpg.data - ) + body = render_template('root/membership_mail.txt', + username=form.username.data, + email=form.email.data, + membership=form.membership.data, + c3l=form.c3l.data, + firstname=form.firstname.data, + surname=form.surname.data, + street=form.street.data, + zip=form.zip.data, + city=form.city.data, + country=form.country.data, + gpg=form.gpg.data + ) + + if current_app.extensions['gnupg']: + body = current_app.extensions['gnupg'].encrypt(body, recipient, + always_trust=True) + msg.body = body + mail.send(msg) flash('Application successfully sended!', 'success') except KeyError: @@ -32,5 +40,5 @@ def send_membership_mail(form): pass except Exception as e: flash('Internal server error! Please get in touch with us at info@enn.lu!', 'error') - current_app.logger.error('Unexpecter error: %s' % e, + current_app.logger.error('Unexpected error: %s' % e, exc_info=True) diff --git a/ennstatus/status/functions.py b/ennstatus/status/functions.py --- a/ennstatus/status/functions.py +++ b/ennstatus/status/functions.py @@ -20,9 +20,17 @@ def _send_mail(server_name, last_updated subject = '[Ennstatus] %s went offline' msg = Message(subject % server_name, sender='ennstatus@enn.lu') - msg.add_recipient(current_app.config['SERVER_ADMINS'][server_name]) - msg.body = ('%s went offline. I received the last update at %s' - % (server_name, last_updated)) + recipient = current_app.config['SERVER_ADMINS'][server_name] + msg.add_recipient(recipient) + + body = ('%s went offline. I received the last update at %s' + % (server_name, last_updated)) + + if current_app.extensions['gnupg']: + body = current_app.extensions['gnupg'].encrypt(body, recipient, + always_trust=True) + msg.body = body + mail.send(msg) except KeyError: current_app.logger.error('Admin for %s not found!' % server_name)