Example #1
0
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}")
Example #2
0
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)
Example #3
0
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)
Example #4
0
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)
Example #5
0
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"
Example #6
0
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)
Example #7
0
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)
Example #8
0
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