2015-06-22 22:47:27 +02:00
|
|
|
"""
|
|
|
|
.. module: lemur
|
|
|
|
:platform: Unix
|
|
|
|
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
|
|
|
:license: Apache, see LICENSE for more details.
|
|
|
|
|
|
|
|
.. moduleauthor:: Kevin Glisson <kglisson@netflix.com>
|
|
|
|
|
|
|
|
|
|
|
|
"""
|
2015-12-01 18:44:41 +01:00
|
|
|
from __future__ import absolute_import, division, print_function
|
|
|
|
|
2015-06-22 22:47:27 +02:00
|
|
|
from lemur import factory
|
2016-04-02 01:54:33 +02:00
|
|
|
from lemur.extensions import metrics
|
2015-06-22 22:47:27 +02:00
|
|
|
|
2015-06-29 22:51:52 +02:00
|
|
|
from lemur.users.views import mod as users_bp
|
|
|
|
from lemur.roles.views import mod as roles_bp
|
|
|
|
from lemur.auth.views import mod as auth_bp
|
|
|
|
from lemur.domains.views import mod as domains_bp
|
2015-07-11 02:06:57 +02:00
|
|
|
from lemur.destinations.views import mod as destinations_bp
|
2015-06-29 22:51:52 +02:00
|
|
|
from lemur.authorities.views import mod as authorities_bp
|
|
|
|
from lemur.certificates.views import mod as certificates_bp
|
2015-09-05 00:52:56 +02:00
|
|
|
from lemur.defaults.views import mod as defaults_bp
|
2015-07-11 02:06:57 +02:00
|
|
|
from lemur.plugins.views import mod as plugins_bp
|
2015-07-30 02:13:06 +02:00
|
|
|
from lemur.notifications.views import mod as notifications_bp
|
2015-08-02 00:29:34 +02:00
|
|
|
from lemur.sources.views import mod as sources_bp
|
|
|
|
|
2015-12-01 18:44:41 +01:00
|
|
|
from lemur.__about__ import (
|
|
|
|
__author__, __copyright__, __email__, __license__, __summary__, __title__,
|
|
|
|
__uri__, __version__
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
__all__ = [
|
|
|
|
"__title__", "__summary__", "__uri__", "__version__", "__author__",
|
|
|
|
"__email__", "__license__", "__copyright__",
|
|
|
|
]
|
2015-06-22 22:47:27 +02:00
|
|
|
|
|
|
|
LEMUR_BLUEPRINTS = (
|
2015-06-29 22:51:52 +02:00
|
|
|
users_bp,
|
|
|
|
roles_bp,
|
|
|
|
auth_bp,
|
|
|
|
domains_bp,
|
2015-07-11 02:06:57 +02:00
|
|
|
destinations_bp,
|
2015-06-29 22:51:52 +02:00
|
|
|
authorities_bp,
|
|
|
|
certificates_bp,
|
2015-09-05 00:52:56 +02:00
|
|
|
defaults_bp,
|
2015-07-11 02:06:57 +02:00
|
|
|
plugins_bp,
|
2015-07-30 02:13:06 +02:00
|
|
|
notifications_bp,
|
2015-08-02 00:29:34 +02:00
|
|
|
sources_bp
|
2015-06-22 22:47:27 +02:00
|
|
|
)
|
|
|
|
|
2015-07-21 22:06:13 +02:00
|
|
|
|
2015-06-22 22:47:27 +02:00
|
|
|
def create_app(config=None):
|
|
|
|
app = factory.create_app(app_name=__name__, blueprints=LEMUR_BLUEPRINTS, config=config)
|
|
|
|
configure_hook(app)
|
|
|
|
return app
|
|
|
|
|
|
|
|
|
|
|
|
def configure_hook(app):
|
|
|
|
"""
|
|
|
|
|
|
|
|
:param app:
|
|
|
|
:return:
|
|
|
|
"""
|
|
|
|
from flask.ext.principal import PermissionDenied
|
|
|
|
from lemur.decorators import crossdomain
|
|
|
|
if app.config.get('CORS'):
|
|
|
|
@app.after_request
|
2015-08-12 00:43:59 +02:00
|
|
|
@crossdomain(origin=u"http://localhost:3000", methods=['PUT', 'HEAD', 'GET', 'POST', 'OPTIONS', 'DELETE'])
|
2015-06-22 22:47:27 +02:00
|
|
|
def after(response):
|
|
|
|
return response
|
|
|
|
|
2016-04-02 01:54:33 +02:00
|
|
|
@app.errorhandler(500)
|
|
|
|
def internal_error(error):
|
|
|
|
metrics.send('500_status_code', 'counter', 1)
|
|
|
|
|
|
|
|
@app.errorhandler(400)
|
|
|
|
def response_error(error):
|
|
|
|
metrics.send('400_status_code', 'counter', 1)
|
|
|
|
|
2015-06-22 22:47:27 +02:00
|
|
|
@app.errorhandler(PermissionDenied)
|
2016-04-02 01:54:33 +02:00
|
|
|
def permission_denied_error(error):
|
|
|
|
metrics.send('403_status_code', 'counter', 1)
|
2015-06-22 22:47:27 +02:00
|
|
|
response = {'message': 'You are not allow to access this resource'}
|
|
|
|
response.status_code = 403
|
|
|
|
return response
|