Implement email sending

This commit is contained in:
James Wang 2016-01-16 16:41:16 +00:00
parent f6fb0cb00a
commit f5f74540fd
4 changed files with 22 additions and 9 deletions

View file

@ -98,7 +98,7 @@ def user_info():
me = False if not("username" in session) else username.lower() == session["username"].lower() me = False if not("username" in session) else username.lower() == session["username"].lower()
user = get_user(username_lower=username.lower()).first() user = get_user(username_lower=username.lower()).first()
if user is None: if user is None:
raise WebException("User not found.") raise WebException("User not found.")
show_email = me if logged_in else False show_email = me if logged_in else False
user_in_team = in_team(user) user_in_team = in_team(user)
@ -182,7 +182,7 @@ def login_user(username, password):
token = LoginTokens(user.uid, user.username, ua=useragent, ip=ip) token = LoginTokens(user.uid, user.username, ua=useragent, ip=ip)
db.session.add(token) db.session.add(token)
db.session.commit() db.session.commit()
session["sid"] = token.sid session["sid"] = token.sid
session["username"] = token.username session["username"] = token.username
session["admin"] = user.admin == True session["admin"] = user.admin == True
@ -215,4 +215,4 @@ def validate_captcha(form):
captcha_response = form["captcha_response"] captcha_response = form["captcha_response"]
data = {"secret": "6Lc4xhMTAAAAACFaG2NyuKoMdZQtSa_1LI76BCEu", "response": captcha_response} data = {"secret": "6Lc4xhMTAAAAACFaG2NyuKoMdZQtSa_1LI76BCEu", "response": captcha_response}
response = requests.post("https://www.google.com/recaptcha/api/siteverify", data=data) response = requests.post("https://www.google.com/recaptcha/api/siteverify", data=data)
return response.json()["success"] return response.json()["success"]

View file

@ -2,10 +2,12 @@ import datetime
import json import json
import random import random
import re import re
import requests
import string import string
import traceback import traceback
import unicodedata import unicodedata
from flask import current_app as app
from functools import wraps from functools import wraps
from werkzeug.security import generate_password_hash, check_password_hash from werkzeug.security import generate_password_hash, check_password_hash
@ -33,4 +35,14 @@ def flat_multi(multidict):
for key, values in multidict.items(): for key, values in multidict.items():
value = values[0] if type(values) == list and len(values) == 1 else values value = values[0] if type(values) == list and len(values) == 1 else values
flat[key] = value.encode("utf-8") flat[key] = value.encode("utf-8")
return flat return flat
def send_email(recipient, subject, body):
api_key = app.config["MG_API_KEY"]
data = {"from": "EasyCTF Administrator <%s>" % (app.config["ADMIN_EMAIL"]),
"to": recipient,
"subject": subject,
"text": body
}
auth = ("api", api_key)
return requests.post("https://api.mailgun.net/v3/%s/messages" % (app.config["MG_HOST"]), auth=auth, data=data)

View file

@ -1,6 +1,8 @@
from argparse import ArgumentParser from argparse import ArgumentParser
from flask import Flask from flask import Flask
app = Flask(__name__)
import api import api
import config import config
import json import json
@ -8,11 +10,7 @@ import os
from api.decorators import api_wrapper from api.decorators import api_wrapper
app = Flask(__name__) app.config.from_object(config)
app.config["SQLALCHEMY_DATABASE_URI"] = config.SQLALCHEMY_DATABASE_URI
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = config.SQLALCHEMY_TRACK_MODIFICATIONS
app.config["UPLOAD_FOLDER"] = config.UPLOAD_FOLDER
if not os.path.exists(app.config["UPLOAD_FOLDER"]): if not os.path.exists(app.config["UPLOAD_FOLDER"]):
os.makedirs(app.config["UPLOAD_FOLDER"]) os.makedirs(app.config["UPLOAD_FOLDER"])

View file

@ -19,3 +19,6 @@ UPLOAD_FOLDER = os.path.normpath("../web/files")
CTF_BEGIN = 0 # To be used later CTF_BEGIN = 0 # To be used later
CTF_END = 0 # To be used later CTF_END = 0 # To be used later
MG_HOST = ""
MG_API_KEY = ""
ADMIN_EMAIL = ""