Skip to content
Snippets Groups Projects
Commit 2a2caf19 authored by kaiyou's avatar kaiyou
Browse files

Add a podop API for resolving emails

parent 0cdb11ae
No related branches found
No related tags found
No related merge requests found
......@@ -32,12 +32,13 @@ def create_app_from_config(config):
return dict(config=app.config, utils=utils)
# Import views
from hiboo import account, user, profile, service, sso
from hiboo import account, user, profile, service, sso, api
app.register_blueprint(account.blueprint, url_prefix='/account')
app.register_blueprint(user.blueprint, url_prefix='/user')
app.register_blueprint(profile.blueprint, url_prefix='/profile')
app.register_blueprint(service.blueprint, url_prefix='/service')
app.register_blueprint(sso.blueprint, url_prefix='/sso')
app.register_blueprint(api.blueprint, url_prefix='/api')
@app.route("/")
def index():
......
import flask
blueprint = flask.Blueprint("api", __name__, template_folder="templates")
from hiboo.api import views
from hiboo import models, utils, security
from hiboo.api import blueprint
import flask
@blueprint.route("/mail/resolve/<email>")
def resolve_mail(email):
""" This API endpoint behaves as a podop/postfis alias map
"""
flask.request.args["token"] == flask.current_app.config["PODOP_API_TOKEN"] or flask.abort(403)
localpart, domain = email.split("@", 1)
if domain != flask.current_app.config["MAIL_DOMAIN"]:
flask.abort(404)
user = models.User.query.filter_by(uuid=localpart).first() or flask.abort(404)
if "email" in user.contact:
return flask.jsonify(user.contact["email"])
else:
flask.abort(404)
......@@ -14,6 +14,7 @@ DEFAULT_CONFIG = {
'TEMPLATES_AUTO_RELOAD': False,
'MAIL_DOMAIN': 'tedomum.net',
'WEBSITE_NAME': 'Hiboo',
'PODOP_API_TOKEN': 'changeMe'
}
class ConfigManager(dict):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment