mirror of
https://github.com/Mailu/Mailu.git
synced 2024-12-14 10:53:30 +02:00
34df8b3168
- fixed copy of qemu-arm-static for alpine - added 'set -eu' safeguard - silenced npm update notification - added color to webpack call - changed Admin-LTE default blue (core/admin/Dockerfile) - AdminLTE 3 style tweaks (core/admin/assets/app.css) (core/admin/mailu/ui/templates/base.html) (core/admin/mailu/ui/templates/sidebar.html) - localized datatables (core/admin/Dockerfile) (core/admin/assets/app.js) (core/admin/package.json) - moved external javascript code to vendor.js (core/admin/assets/app.js) (core/admin/assets/vendor.js) (core/admin/webpack.config.js) - added mailu logo (core/admin/assets/app.js) (core/admin/assets/app.css) (core/admin/assets/mailu.png) - moved all inline javascript to app.js (core/admin/assets/app.js) (core/admin/mailu/ui/templates/domain/create.html) (core/admin/mailu/ui/templates/user/create.html) - added iframe display of rspamd page (core/admin/assets/app.js) (core/admin/mailu/ui/views/base.py) (core/admin/mailu/ui/templates/sidebar.html) (core/admin/mailu/ui/templates/antispam.html) - updated language-selector to display full language names and use post (core/admin/assets/app.js) (core/admin/mailu/__init__.py) (core/admin/mailu/utils.py) (core/admin/mailu/ui/views/languages.py) - added fieldset to group and en/disable input fields (core/admin/assets/app.js) (core/admin/mailu/ui/templates/macros.html) (core/admin/mailu/ui/templates/user/settings.html) (core/admin/mailu/ui/templates/user/reply.html) - added clipboard copy buttons (core/admin/assets/app.js) (core/admin/assets/vendor.js) (core/admin/mailu/ui/templates/macros.html) (core/admin/mailu/ui/templates/domain/details.html) - cleaned external javascript imports (core/admin/assets/vendor.js) - pre-split first hostname for further use (core/admin/mailu/__init__.py) (core/admin/mailu/models.py) (core/admin/mailu/ui/templates/client.html) (core/admin/mailu/ui/templates/domain/signup.html) - cache dns_* properties of domain object (immutable during runtime) (core/admin/mailu/models.py) (core/admin/mailu/ui/templates/domain/details.html) - fixed and splitted dns_dkim property of domain object (space missing) - added autoconfig and tlsa properties to domain object (core/admin/mailu/models.py) - suppressed extra vertical spacing in jinja2 templates - improved accessibility for screen reader (core/admin/mailu/ui/templates/**.html) - deleted unused/broken /user/forward route (core/admin/mailu/ui/templates/user/forward.html) (core/admin/mailu/ui/views/users.py) - updated gunicorn to 20.1.0 to get rid of buffering error at startup (core/admin/requirements-prod.txt) - switched webpack to production mode (core/admin/webpack.config.js) - added css and javascript minimization - added pre-compression of assets (gzip) (core/admin/webpack.config.js) (core/admin/package.json) - removed obsolte dependencies - switched from node-sass to dart-sass (core/admin/package.json) - changed startup cleaning message from error to info (core/admin/mailu/utils.py) - move client config to "my account" section when logged in (core/admin/mailu/ui/templates/sidebar.html)
71 lines
2.0 KiB
Python
71 lines
2.0 KiB
Python
""" Mailu admin app
|
|
"""
|
|
|
|
import flask
|
|
import flask_bootstrap
|
|
|
|
from mailu import utils, debug, models, manage, configuration
|
|
|
|
import hmac
|
|
|
|
def create_app_from_config(config):
|
|
""" Create a new application based on the given configuration
|
|
"""
|
|
app = flask.Flask(__name__)
|
|
app.cli.add_command(manage.mailu)
|
|
|
|
# Bootstrap is used for error display and flash messages
|
|
app.bootstrap = flask_bootstrap.Bootstrap(app)
|
|
|
|
# Initialize application extensions
|
|
config.init_app(app)
|
|
models.db.init_app(app)
|
|
utils.session.init_app(app)
|
|
utils.limiter.init_app(app)
|
|
utils.babel.init_app(app)
|
|
utils.login.init_app(app)
|
|
utils.login.user_loader(models.User.get)
|
|
utils.proxy.init_app(app)
|
|
utils.migrate.init_app(app, models.db)
|
|
|
|
app.temp_token_key = hmac.new(bytearray(app.secret_key, 'utf-8'), bytearray('WEBMAIL_TEMP_TOKEN_KEY', 'utf-8'), 'sha256').digest()
|
|
|
|
# Initialize list of translations
|
|
config.translations = {
|
|
str(locale): locale
|
|
for locale in sorted(
|
|
utils.babel.list_translations(),
|
|
key=lambda l: l.get_language_name().title()
|
|
)
|
|
}
|
|
|
|
# Initialize debugging tools
|
|
if app.config.get("DEBUG"):
|
|
debug.toolbar.init_app(app)
|
|
# TODO: add a specific configuration variable for profiling
|
|
# debug.profiler.init_app(app)
|
|
|
|
# Inject the default variables in the Jinja parser
|
|
# TODO: move this to blueprints when needed
|
|
@app.context_processor
|
|
def inject_defaults():
|
|
signup_domains = models.Domain.query.filter_by(signup_enabled=True).all()
|
|
return dict(
|
|
signup_domains= signup_domains,
|
|
config = app.config,
|
|
)
|
|
|
|
# Import views
|
|
from mailu import ui, internal
|
|
app.register_blueprint(ui.ui, url_prefix='/ui')
|
|
app.register_blueprint(internal.internal, url_prefix='/internal')
|
|
|
|
return app
|
|
|
|
|
|
def create_app():
|
|
""" Create a new application based on the config module
|
|
"""
|
|
config = configuration.ConfigManager()
|
|
return create_app_from_config(config)
|