def test_safe_format(): assert safe_format("Message from {ctf_name}", ctf_name="CTF") == "Message from CTF" assert (safe_format("Message from {{ ctf_name }}", ctf_name="CTF") == "Message from CTF") assert safe_format("{{ ctf_name }} {{ctf_name}}", ctf_name="CTF") == "CTF CTF" assert (safe_format("{ ctf_name } {ctf_name} {asdf}", ctf_name="CTF") == "CTF CTF {asdf}")
def successful_registration_notification(addr): text = safe_format( get_config("successful_registration_email_body") or DEFAULT_SUCCESSFUL_REGISTRATION_EMAIL_BODY, ctf_name=get_config("ctf_name"), ctf_description=get_config("ctf_description"), url=url_for("views.static_html", _external=True), ) subject = safe_format( get_config("successful_registration_email_subject") or DEFAULT_SUCCESSFUL_REGISTRATION_EMAIL_SUBJECT, ctf_name=get_config("ctf_name"), ) return sendmail(addr=addr, text=text, subject=subject)
def forgot_password(email): text = safe_format( get_config("password_reset_body") or DEFAULT_PASSWORD_RESET_BODY, ctf_name=get_config("ctf_name"), ctf_description=get_config("ctf_description"), url=url_for("auth.reset_password", data=serialize(email), _external=True), ) subject = safe_format( get_config("password_reset_subject") or DEFAULT_PASSWORD_RESET_SUBJECT, ctf_name=get_config("ctf_name"), ) return sendmail(addr=email, text=text, subject=subject)
def password_change_alert(email): text = safe_format( get_config("password_change_alert_body") or DEFAULT_PASSWORD_CHANGE_ALERT_BODY, ctf_name=get_config("ctf_name"), ctf_description=get_config("ctf_description"), url=url_for("auth.reset_password", _external=True), ) subject = safe_format( get_config("password_change_alert_subject") or DEFAULT_PASSWORD_CHANGE_ALERT_SUBJECT, ctf_name=get_config("ctf_name"), ) return sendmail(addr=email, text=text, subject=subject)
def sendmail(addr, text, subject="Message from {ctf_name}"): subject = safe_format(subject, ctf_name=get_config("ctf_name")) provider = get_mail_provider() if provider == "smtp": return smtp.sendmail(addr, text, subject) if provider == "mailgun": return mailgun.sendmail(addr, text, subject) return False, "No mail settings configured"
def user_created_notification(addr, name, password): text = safe_format( get_config("user_creation_email_body") or DEFAULT_USER_CREATION_EMAIL_BODY, ctf_name=get_config("ctf_name"), ctf_description=get_config("ctf_description"), url=url_for("views.static_html", _external=True), name=name, password=password, ) subject = safe_format( get_config("user_creation_email_subject") or DEFAULT_USER_CREATION_EMAIL_SUBJECT, ctf_name=get_config("ctf_name"), ) return sendmail(addr=addr, text=text, subject=subject)
def verify_email_address(addr): text = safe_format( get_config("verification_email_body") or DEFAULT_VERIFICATION_EMAIL_BODY, ctf_name=get_config("ctf_name"), ctf_description=get_config("ctf_description"), url=url_for("auth.confirm", data=serialize(addr), _external=True, _method="GET"), ) subject = safe_format( get_config("verification_email_subject") or DEFAULT_VERIFICATION_EMAIL_SUBJECT, ctf_name=get_config("ctf_name"), ) return sendmail(addr=addr, text=text, subject=subject)
def format_variables(content): ctf_name = get_config("ctf_name") ctf_description = get_config("ctf_description") ctf_start = get_config("start") if ctf_start: ctf_start = isoformat(unix_time_to_utc(int(ctf_start))) ctf_end = get_config("end") if ctf_end: ctf_end = isoformat(unix_time_to_utc(int(ctf_end))) ctf_freeze = get_config("freeze") if ctf_freeze: ctf_freeze = isoformat(unix_time_to_utc(int(ctf_freeze))) content = safe_format( content, ctf_name=ctf_name, ctf_description=ctf_description, ctf_start=ctf_start, ctf_end=ctf_end, ctf_freeze=ctf_freeze, ) return content