diff --git a/admin/mailu/__init__.py b/admin/mailu/__init__.py index d6f6a457..aae26a4f 100644 --- a/admin/mailu/__init__.py +++ b/admin/mailu/__init__.py @@ -34,43 +34,66 @@ default_config = { 'FRONTEND': 'none', 'TLS_FLAVOR': 'cert', 'CERTS_PATH': '/certs', - 'PASSWORD_SCHEME': 'SHA512-CRYPT' + 'PASSWORD_SCHEME': 'SHA512-CRYPT', } # Load configuration from the environment if available for key, value in default_config.items(): app.config[key] = os.environ.get(key, value) -# Setup components +# Base application flask_bootstrap.Bootstrap(app) db = flask_sqlalchemy.SQLAlchemy(app) migrate = flask_migrate.Migrate(app, db) -login_manager = flask_login.LoginManager() -login_manager.init_app(app) -babel = flask_babel.Babel(app) -translations = list(map(str, babel.list_translations())) -scheduler = background.BackgroundScheduler({ - 'apscheduler.timezone': 'UTC' -}) # Manager commnad manager = flask_script.Manager(app) manager.add_command('db', flask_migrate.MigrateCommand) # Task scheduling +scheduler = background.BackgroundScheduler({ + 'apscheduler.timezone': 'UTC' +}) if not app.debug or os.environ.get('WERKZEUG_RUN_MAIN') == 'true': scheduler.start() from mailu import tlstasks # Babel configuration +babel = flask_babel.Babel(app) +translations = list(map(str, babel.list_translations())) + @babel.localeselector def get_locale(): return flask.request.accept_languages.best_match(translations) -# Finally setup the blueprint and redirect / -from mailu import admin -app.register_blueprint(admin.app, url_prefix='/admin') +# Login configuration +login_manager = flask_login.LoginManager() +login_manager.init_app(app) +login_manager.login_view = ".login" -@app.route("/") -def index(): - return flask.redirect("/webmail/") +@login_manager.unauthorized_handler +def handle_needs_login(): + return flask.redirect( + flask.url_for('.login', next=flask.request.endpoint) + ) + +@app.context_processor +def inject_user(): + return dict(current_user=flask_login.current_user) + +# Import views +from mailu.views import * + +# Create the prefix middleware +class PrefixMiddleware(object): + + def __init__(self, app): + self.app = app + + def __call__(self, environ, start_response): + prefix = environ.get('HTTP_X_FORWARDED_PREFIX', '') + if prefix: + environ['SCRIPT_NAME'] = prefix + return self.app(environ, start_response) + +app.wsgi_app = PrefixMiddleware(app.wsgi_app) diff --git a/admin/mailu/admin/access.py b/admin/mailu/access.py similarity index 98% rename from admin/mailu/admin/access.py rename to admin/mailu/access.py index 778423d0..b4179a53 100644 --- a/admin/mailu/admin/access.py +++ b/admin/mailu/access.py @@ -1,4 +1,4 @@ -from mailu.admin import db, models, forms +from mailu import db, models, forms import flask import flask_login diff --git a/admin/mailu/admin/__init__.py b/admin/mailu/admin/__init__.py deleted file mode 100644 index fc895134..00000000 --- a/admin/mailu/admin/__init__.py +++ /dev/null @@ -1,33 +0,0 @@ -from flask import Blueprint -from mailu import login_manager, db - -import flask_login - - -app = Blueprint( - 'admin', __name__, - template_folder='templates', - static_folder='static') - -# Import models -from mailu.admin import models - -# Register the login components -login_manager.login_view = "admin.login" -login_manager.user_loader(models.User.query.get) - -@app.context_processor -def inject_user(): - return dict(current_user=flask_login.current_user) - -# Import views -from mailu.admin.views import \ - admins, \ - managers, \ - base, \ - aliases, \ - users, \ - domains, \ - relays, \ - alternatives, \ - fetches diff --git a/admin/mailu/admin/views/__init__.py b/admin/mailu/admin/views/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/admin/mailu/admin/dkim.py b/admin/mailu/dkim.py similarity index 100% rename from admin/mailu/admin/dkim.py rename to admin/mailu/dkim.py diff --git a/admin/mailu/admin/forms.py b/admin/mailu/forms.py similarity index 100% rename from admin/mailu/admin/forms.py rename to admin/mailu/forms.py diff --git a/admin/mailu/admin/models.py b/admin/mailu/models.py similarity index 99% rename from admin/mailu/admin/models.py rename to admin/mailu/models.py index 9fcfca1d..d1c5ebb4 100644 --- a/admin/mailu/admin/models.py +++ b/admin/mailu/models.py @@ -1,5 +1,4 @@ -from mailu.admin import db, dkim -from mailu import app +from mailu import app, db, dkim, login_manager from sqlalchemy.ext import declarative from passlib import context @@ -236,6 +235,8 @@ class User(Base, Email): user = cls.query.get(email) return user if (user and user.check_password(password)) else None +login_manager.user_loader(User.query.get) + class Alias(Base, Email): """ An alias is an email address that redirects to some destination. diff --git a/admin/mailu/admin/static/adminlte/css/AdminLTE.min.css b/admin/mailu/static/adminlte/css/AdminLTE.min.css similarity index 100% rename from admin/mailu/admin/static/adminlte/css/AdminLTE.min.css rename to admin/mailu/static/adminlte/css/AdminLTE.min.css diff --git a/admin/mailu/admin/static/adminlte/css/skin-blue.min.css b/admin/mailu/static/adminlte/css/skin-blue.min.css similarity index 100% rename from admin/mailu/admin/static/adminlte/css/skin-blue.min.css rename to admin/mailu/static/adminlte/css/skin-blue.min.css diff --git a/admin/mailu/admin/static/adminlte/js/app.min.js b/admin/mailu/static/adminlte/js/app.min.js similarity index 100% rename from admin/mailu/admin/static/adminlte/js/app.min.js rename to admin/mailu/static/adminlte/js/app.min.js diff --git a/admin/mailu/admin/static/app.css b/admin/mailu/static/app.css similarity index 100% rename from admin/mailu/admin/static/app.css rename to admin/mailu/static/app.css diff --git a/admin/mailu/admin/static/bootstrap/css/bootstrap.css.map b/admin/mailu/static/bootstrap/css/bootstrap.css.map similarity index 100% rename from admin/mailu/admin/static/bootstrap/css/bootstrap.css.map rename to admin/mailu/static/bootstrap/css/bootstrap.css.map diff --git a/admin/mailu/admin/static/bootstrap/css/bootstrap.min.css b/admin/mailu/static/bootstrap/css/bootstrap.min.css similarity index 100% rename from admin/mailu/admin/static/bootstrap/css/bootstrap.min.css rename to admin/mailu/static/bootstrap/css/bootstrap.min.css diff --git a/admin/mailu/admin/static/bootstrap/fonts/glyphicons-halflings-regular.eot b/admin/mailu/static/bootstrap/fonts/glyphicons-halflings-regular.eot similarity index 100% rename from admin/mailu/admin/static/bootstrap/fonts/glyphicons-halflings-regular.eot rename to admin/mailu/static/bootstrap/fonts/glyphicons-halflings-regular.eot diff --git a/admin/mailu/admin/static/bootstrap/fonts/glyphicons-halflings-regular.svg b/admin/mailu/static/bootstrap/fonts/glyphicons-halflings-regular.svg similarity index 100% rename from admin/mailu/admin/static/bootstrap/fonts/glyphicons-halflings-regular.svg rename to admin/mailu/static/bootstrap/fonts/glyphicons-halflings-regular.svg diff --git a/admin/mailu/admin/static/bootstrap/fonts/glyphicons-halflings-regular.ttf b/admin/mailu/static/bootstrap/fonts/glyphicons-halflings-regular.ttf similarity index 100% rename from admin/mailu/admin/static/bootstrap/fonts/glyphicons-halflings-regular.ttf rename to admin/mailu/static/bootstrap/fonts/glyphicons-halflings-regular.ttf diff --git a/admin/mailu/admin/static/bootstrap/fonts/glyphicons-halflings-regular.woff b/admin/mailu/static/bootstrap/fonts/glyphicons-halflings-regular.woff similarity index 100% rename from admin/mailu/admin/static/bootstrap/fonts/glyphicons-halflings-regular.woff rename to admin/mailu/static/bootstrap/fonts/glyphicons-halflings-regular.woff diff --git a/admin/mailu/admin/static/bootstrap/fonts/glyphicons-halflings-regular.woff2 b/admin/mailu/static/bootstrap/fonts/glyphicons-halflings-regular.woff2 similarity index 100% rename from admin/mailu/admin/static/bootstrap/fonts/glyphicons-halflings-regular.woff2 rename to admin/mailu/static/bootstrap/fonts/glyphicons-halflings-regular.woff2 diff --git a/admin/mailu/admin/static/bootstrap/js/bootstrap.min.js b/admin/mailu/static/bootstrap/js/bootstrap.min.js similarity index 100% rename from admin/mailu/admin/static/bootstrap/js/bootstrap.min.js rename to admin/mailu/static/bootstrap/js/bootstrap.min.js diff --git a/admin/mailu/admin/static/jquery/js/jquery-2.2.2.min.js b/admin/mailu/static/jquery/js/jquery-2.2.2.min.js similarity index 100% rename from admin/mailu/admin/static/jquery/js/jquery-2.2.2.min.js rename to admin/mailu/static/jquery/js/jquery-2.2.2.min.js diff --git a/admin/mailu/admin/static/select2/css/select2.min.css b/admin/mailu/static/select2/css/select2.min.css similarity index 100% rename from admin/mailu/admin/static/select2/css/select2.min.css rename to admin/mailu/static/select2/css/select2.min.css diff --git a/admin/mailu/admin/static/select2/js/i18n/ar.js b/admin/mailu/static/select2/js/i18n/ar.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/ar.js rename to admin/mailu/static/select2/js/i18n/ar.js diff --git a/admin/mailu/admin/static/select2/js/i18n/az.js b/admin/mailu/static/select2/js/i18n/az.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/az.js rename to admin/mailu/static/select2/js/i18n/az.js diff --git a/admin/mailu/admin/static/select2/js/i18n/bg.js b/admin/mailu/static/select2/js/i18n/bg.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/bg.js rename to admin/mailu/static/select2/js/i18n/bg.js diff --git a/admin/mailu/admin/static/select2/js/i18n/ca.js b/admin/mailu/static/select2/js/i18n/ca.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/ca.js rename to admin/mailu/static/select2/js/i18n/ca.js diff --git a/admin/mailu/admin/static/select2/js/i18n/cs.js b/admin/mailu/static/select2/js/i18n/cs.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/cs.js rename to admin/mailu/static/select2/js/i18n/cs.js diff --git a/admin/mailu/admin/static/select2/js/i18n/da.js b/admin/mailu/static/select2/js/i18n/da.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/da.js rename to admin/mailu/static/select2/js/i18n/da.js diff --git a/admin/mailu/admin/static/select2/js/i18n/de.js b/admin/mailu/static/select2/js/i18n/de.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/de.js rename to admin/mailu/static/select2/js/i18n/de.js diff --git a/admin/mailu/admin/static/select2/js/i18n/el.js b/admin/mailu/static/select2/js/i18n/el.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/el.js rename to admin/mailu/static/select2/js/i18n/el.js diff --git a/admin/mailu/admin/static/select2/js/i18n/en.js b/admin/mailu/static/select2/js/i18n/en.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/en.js rename to admin/mailu/static/select2/js/i18n/en.js diff --git a/admin/mailu/admin/static/select2/js/i18n/es.js b/admin/mailu/static/select2/js/i18n/es.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/es.js rename to admin/mailu/static/select2/js/i18n/es.js diff --git a/admin/mailu/admin/static/select2/js/i18n/et.js b/admin/mailu/static/select2/js/i18n/et.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/et.js rename to admin/mailu/static/select2/js/i18n/et.js diff --git a/admin/mailu/admin/static/select2/js/i18n/eu.js b/admin/mailu/static/select2/js/i18n/eu.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/eu.js rename to admin/mailu/static/select2/js/i18n/eu.js diff --git a/admin/mailu/admin/static/select2/js/i18n/fa.js b/admin/mailu/static/select2/js/i18n/fa.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/fa.js rename to admin/mailu/static/select2/js/i18n/fa.js diff --git a/admin/mailu/admin/static/select2/js/i18n/fi.js b/admin/mailu/static/select2/js/i18n/fi.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/fi.js rename to admin/mailu/static/select2/js/i18n/fi.js diff --git a/admin/mailu/admin/static/select2/js/i18n/fr.js b/admin/mailu/static/select2/js/i18n/fr.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/fr.js rename to admin/mailu/static/select2/js/i18n/fr.js diff --git a/admin/mailu/admin/static/select2/js/i18n/gl.js b/admin/mailu/static/select2/js/i18n/gl.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/gl.js rename to admin/mailu/static/select2/js/i18n/gl.js diff --git a/admin/mailu/admin/static/select2/js/i18n/he.js b/admin/mailu/static/select2/js/i18n/he.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/he.js rename to admin/mailu/static/select2/js/i18n/he.js diff --git a/admin/mailu/admin/static/select2/js/i18n/hi.js b/admin/mailu/static/select2/js/i18n/hi.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/hi.js rename to admin/mailu/static/select2/js/i18n/hi.js diff --git a/admin/mailu/admin/static/select2/js/i18n/hr.js b/admin/mailu/static/select2/js/i18n/hr.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/hr.js rename to admin/mailu/static/select2/js/i18n/hr.js diff --git a/admin/mailu/admin/static/select2/js/i18n/hu.js b/admin/mailu/static/select2/js/i18n/hu.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/hu.js rename to admin/mailu/static/select2/js/i18n/hu.js diff --git a/admin/mailu/admin/static/select2/js/i18n/id.js b/admin/mailu/static/select2/js/i18n/id.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/id.js rename to admin/mailu/static/select2/js/i18n/id.js diff --git a/admin/mailu/admin/static/select2/js/i18n/is.js b/admin/mailu/static/select2/js/i18n/is.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/is.js rename to admin/mailu/static/select2/js/i18n/is.js diff --git a/admin/mailu/admin/static/select2/js/i18n/it.js b/admin/mailu/static/select2/js/i18n/it.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/it.js rename to admin/mailu/static/select2/js/i18n/it.js diff --git a/admin/mailu/admin/static/select2/js/i18n/ja.js b/admin/mailu/static/select2/js/i18n/ja.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/ja.js rename to admin/mailu/static/select2/js/i18n/ja.js diff --git a/admin/mailu/admin/static/select2/js/i18n/km.js b/admin/mailu/static/select2/js/i18n/km.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/km.js rename to admin/mailu/static/select2/js/i18n/km.js diff --git a/admin/mailu/admin/static/select2/js/i18n/ko.js b/admin/mailu/static/select2/js/i18n/ko.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/ko.js rename to admin/mailu/static/select2/js/i18n/ko.js diff --git a/admin/mailu/admin/static/select2/js/i18n/lt.js b/admin/mailu/static/select2/js/i18n/lt.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/lt.js rename to admin/mailu/static/select2/js/i18n/lt.js diff --git a/admin/mailu/admin/static/select2/js/i18n/lv.js b/admin/mailu/static/select2/js/i18n/lv.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/lv.js rename to admin/mailu/static/select2/js/i18n/lv.js diff --git a/admin/mailu/admin/static/select2/js/i18n/mk.js b/admin/mailu/static/select2/js/i18n/mk.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/mk.js rename to admin/mailu/static/select2/js/i18n/mk.js diff --git a/admin/mailu/admin/static/select2/js/i18n/ms.js b/admin/mailu/static/select2/js/i18n/ms.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/ms.js rename to admin/mailu/static/select2/js/i18n/ms.js diff --git a/admin/mailu/admin/static/select2/js/i18n/nb.js b/admin/mailu/static/select2/js/i18n/nb.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/nb.js rename to admin/mailu/static/select2/js/i18n/nb.js diff --git a/admin/mailu/admin/static/select2/js/i18n/nl.js b/admin/mailu/static/select2/js/i18n/nl.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/nl.js rename to admin/mailu/static/select2/js/i18n/nl.js diff --git a/admin/mailu/admin/static/select2/js/i18n/pl.js b/admin/mailu/static/select2/js/i18n/pl.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/pl.js rename to admin/mailu/static/select2/js/i18n/pl.js diff --git a/admin/mailu/admin/static/select2/js/i18n/pt-BR.js b/admin/mailu/static/select2/js/i18n/pt-BR.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/pt-BR.js rename to admin/mailu/static/select2/js/i18n/pt-BR.js diff --git a/admin/mailu/admin/static/select2/js/i18n/pt.js b/admin/mailu/static/select2/js/i18n/pt.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/pt.js rename to admin/mailu/static/select2/js/i18n/pt.js diff --git a/admin/mailu/admin/static/select2/js/i18n/ro.js b/admin/mailu/static/select2/js/i18n/ro.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/ro.js rename to admin/mailu/static/select2/js/i18n/ro.js diff --git a/admin/mailu/admin/static/select2/js/i18n/ru.js b/admin/mailu/static/select2/js/i18n/ru.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/ru.js rename to admin/mailu/static/select2/js/i18n/ru.js diff --git a/admin/mailu/admin/static/select2/js/i18n/sk.js b/admin/mailu/static/select2/js/i18n/sk.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/sk.js rename to admin/mailu/static/select2/js/i18n/sk.js diff --git a/admin/mailu/admin/static/select2/js/i18n/sr-Cyrl.js b/admin/mailu/static/select2/js/i18n/sr-Cyrl.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/sr-Cyrl.js rename to admin/mailu/static/select2/js/i18n/sr-Cyrl.js diff --git a/admin/mailu/admin/static/select2/js/i18n/sr.js b/admin/mailu/static/select2/js/i18n/sr.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/sr.js rename to admin/mailu/static/select2/js/i18n/sr.js diff --git a/admin/mailu/admin/static/select2/js/i18n/sv.js b/admin/mailu/static/select2/js/i18n/sv.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/sv.js rename to admin/mailu/static/select2/js/i18n/sv.js diff --git a/admin/mailu/admin/static/select2/js/i18n/th.js b/admin/mailu/static/select2/js/i18n/th.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/th.js rename to admin/mailu/static/select2/js/i18n/th.js diff --git a/admin/mailu/admin/static/select2/js/i18n/tr.js b/admin/mailu/static/select2/js/i18n/tr.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/tr.js rename to admin/mailu/static/select2/js/i18n/tr.js diff --git a/admin/mailu/admin/static/select2/js/i18n/uk.js b/admin/mailu/static/select2/js/i18n/uk.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/uk.js rename to admin/mailu/static/select2/js/i18n/uk.js diff --git a/admin/mailu/admin/static/select2/js/i18n/vi.js b/admin/mailu/static/select2/js/i18n/vi.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/vi.js rename to admin/mailu/static/select2/js/i18n/vi.js diff --git a/admin/mailu/admin/static/select2/js/i18n/zh-CN.js b/admin/mailu/static/select2/js/i18n/zh-CN.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/zh-CN.js rename to admin/mailu/static/select2/js/i18n/zh-CN.js diff --git a/admin/mailu/admin/static/select2/js/i18n/zh-TW.js b/admin/mailu/static/select2/js/i18n/zh-TW.js similarity index 100% rename from admin/mailu/admin/static/select2/js/i18n/zh-TW.js rename to admin/mailu/static/select2/js/i18n/zh-TW.js diff --git a/admin/mailu/admin/static/select2/js/select2.full.min.js b/admin/mailu/static/select2/js/select2.full.min.js similarity index 100% rename from admin/mailu/admin/static/select2/js/select2.full.min.js rename to admin/mailu/static/select2/js/select2.full.min.js diff --git a/admin/mailu/admin/static/select2/js/select2.min.js b/admin/mailu/static/select2/js/select2.min.js similarity index 100% rename from admin/mailu/admin/static/select2/js/select2.min.js rename to admin/mailu/static/select2/js/select2.min.js diff --git a/admin/mailu/admin/templates/admin/create.html b/admin/mailu/templates/admin/create.html similarity index 100% rename from admin/mailu/admin/templates/admin/create.html rename to admin/mailu/templates/admin/create.html diff --git a/admin/mailu/admin/templates/admin/list.html b/admin/mailu/templates/admin/list.html similarity index 100% rename from admin/mailu/admin/templates/admin/list.html rename to admin/mailu/templates/admin/list.html diff --git a/admin/mailu/admin/templates/alias/create.html b/admin/mailu/templates/alias/create.html similarity index 100% rename from admin/mailu/admin/templates/alias/create.html rename to admin/mailu/templates/alias/create.html diff --git a/admin/mailu/admin/templates/alias/edit.html b/admin/mailu/templates/alias/edit.html similarity index 100% rename from admin/mailu/admin/templates/alias/edit.html rename to admin/mailu/templates/alias/edit.html diff --git a/admin/mailu/admin/templates/alias/list.html b/admin/mailu/templates/alias/list.html similarity index 100% rename from admin/mailu/admin/templates/alias/list.html rename to admin/mailu/templates/alias/list.html diff --git a/admin/mailu/admin/templates/alternative/create.html b/admin/mailu/templates/alternative/create.html similarity index 100% rename from admin/mailu/admin/templates/alternative/create.html rename to admin/mailu/templates/alternative/create.html diff --git a/admin/mailu/admin/templates/alternative/list.html b/admin/mailu/templates/alternative/list.html similarity index 100% rename from admin/mailu/admin/templates/alternative/list.html rename to admin/mailu/templates/alternative/list.html diff --git a/admin/mailu/admin/templates/announcement.html b/admin/mailu/templates/announcement.html similarity index 100% rename from admin/mailu/admin/templates/announcement.html rename to admin/mailu/templates/announcement.html diff --git a/admin/mailu/admin/templates/base.html b/admin/mailu/templates/base.html similarity index 100% rename from admin/mailu/admin/templates/base.html rename to admin/mailu/templates/base.html diff --git a/admin/mailu/admin/templates/confirm.html b/admin/mailu/templates/confirm.html similarity index 100% rename from admin/mailu/admin/templates/confirm.html rename to admin/mailu/templates/confirm.html diff --git a/admin/mailu/admin/templates/docker-error.html b/admin/mailu/templates/docker-error.html similarity index 100% rename from admin/mailu/admin/templates/docker-error.html rename to admin/mailu/templates/docker-error.html diff --git a/admin/mailu/admin/templates/domain/create.html b/admin/mailu/templates/domain/create.html similarity index 100% rename from admin/mailu/admin/templates/domain/create.html rename to admin/mailu/templates/domain/create.html diff --git a/admin/mailu/admin/templates/domain/details.html b/admin/mailu/templates/domain/details.html similarity index 100% rename from admin/mailu/admin/templates/domain/details.html rename to admin/mailu/templates/domain/details.html diff --git a/admin/mailu/admin/templates/domain/edit.html b/admin/mailu/templates/domain/edit.html similarity index 100% rename from admin/mailu/admin/templates/domain/edit.html rename to admin/mailu/templates/domain/edit.html diff --git a/admin/mailu/admin/templates/domain/list.html b/admin/mailu/templates/domain/list.html similarity index 100% rename from admin/mailu/admin/templates/domain/list.html rename to admin/mailu/templates/domain/list.html diff --git a/admin/mailu/admin/templates/fetch/create.html b/admin/mailu/templates/fetch/create.html similarity index 100% rename from admin/mailu/admin/templates/fetch/create.html rename to admin/mailu/templates/fetch/create.html diff --git a/admin/mailu/admin/templates/fetch/edit.html b/admin/mailu/templates/fetch/edit.html similarity index 100% rename from admin/mailu/admin/templates/fetch/edit.html rename to admin/mailu/templates/fetch/edit.html diff --git a/admin/mailu/admin/templates/fetch/list.html b/admin/mailu/templates/fetch/list.html similarity index 100% rename from admin/mailu/admin/templates/fetch/list.html rename to admin/mailu/templates/fetch/list.html diff --git a/admin/mailu/admin/templates/form.html b/admin/mailu/templates/form.html similarity index 100% rename from admin/mailu/admin/templates/form.html rename to admin/mailu/templates/form.html diff --git a/admin/mailu/admin/templates/helpers.html b/admin/mailu/templates/helpers.html similarity index 100% rename from admin/mailu/admin/templates/helpers.html rename to admin/mailu/templates/helpers.html diff --git a/admin/mailu/admin/templates/index.html b/admin/mailu/templates/index.html similarity index 100% rename from admin/mailu/admin/templates/index.html rename to admin/mailu/templates/index.html diff --git a/admin/mailu/admin/templates/login.html b/admin/mailu/templates/login.html similarity index 100% rename from admin/mailu/admin/templates/login.html rename to admin/mailu/templates/login.html diff --git a/admin/mailu/admin/templates/macros.html b/admin/mailu/templates/macros.html similarity index 100% rename from admin/mailu/admin/templates/macros.html rename to admin/mailu/templates/macros.html diff --git a/admin/mailu/admin/templates/manager/create.html b/admin/mailu/templates/manager/create.html similarity index 100% rename from admin/mailu/admin/templates/manager/create.html rename to admin/mailu/templates/manager/create.html diff --git a/admin/mailu/admin/templates/manager/list.html b/admin/mailu/templates/manager/list.html similarity index 100% rename from admin/mailu/admin/templates/manager/list.html rename to admin/mailu/templates/manager/list.html diff --git a/admin/mailu/admin/templates/relay/create.html b/admin/mailu/templates/relay/create.html similarity index 100% rename from admin/mailu/admin/templates/relay/create.html rename to admin/mailu/templates/relay/create.html diff --git a/admin/mailu/admin/templates/relay/edit.html b/admin/mailu/templates/relay/edit.html similarity index 100% rename from admin/mailu/admin/templates/relay/edit.html rename to admin/mailu/templates/relay/edit.html diff --git a/admin/mailu/admin/templates/relay/list.html b/admin/mailu/templates/relay/list.html similarity index 100% rename from admin/mailu/admin/templates/relay/list.html rename to admin/mailu/templates/relay/list.html diff --git a/admin/mailu/admin/templates/services.html b/admin/mailu/templates/services.html similarity index 100% rename from admin/mailu/admin/templates/services.html rename to admin/mailu/templates/services.html diff --git a/admin/mailu/admin/templates/sidebar.html b/admin/mailu/templates/sidebar.html similarity index 100% rename from admin/mailu/admin/templates/sidebar.html rename to admin/mailu/templates/sidebar.html diff --git a/admin/mailu/admin/templates/user/create.html b/admin/mailu/templates/user/create.html similarity index 100% rename from admin/mailu/admin/templates/user/create.html rename to admin/mailu/templates/user/create.html diff --git a/admin/mailu/admin/templates/user/edit.html b/admin/mailu/templates/user/edit.html similarity index 100% rename from admin/mailu/admin/templates/user/edit.html rename to admin/mailu/templates/user/edit.html diff --git a/admin/mailu/admin/templates/user/forward.html b/admin/mailu/templates/user/forward.html similarity index 100% rename from admin/mailu/admin/templates/user/forward.html rename to admin/mailu/templates/user/forward.html diff --git a/admin/mailu/admin/templates/user/list.html b/admin/mailu/templates/user/list.html similarity index 100% rename from admin/mailu/admin/templates/user/list.html rename to admin/mailu/templates/user/list.html diff --git a/admin/mailu/admin/templates/user/password.html b/admin/mailu/templates/user/password.html similarity index 100% rename from admin/mailu/admin/templates/user/password.html rename to admin/mailu/templates/user/password.html diff --git a/admin/mailu/admin/templates/user/reply.html b/admin/mailu/templates/user/reply.html similarity index 100% rename from admin/mailu/admin/templates/user/reply.html rename to admin/mailu/templates/user/reply.html diff --git a/admin/mailu/admin/templates/user/settings.html b/admin/mailu/templates/user/settings.html similarity index 100% rename from admin/mailu/admin/templates/user/settings.html rename to admin/mailu/templates/user/settings.html diff --git a/admin/mailu/admin/templates/working.html b/admin/mailu/templates/working.html similarity index 100% rename from admin/mailu/admin/templates/working.html rename to admin/mailu/templates/working.html diff --git a/admin/mailu/translations/fr/LC_MESSAGES/messages.po b/admin/mailu/translations/fr/LC_MESSAGES/messages.po index b5b3d06c..c72c6136 100644 --- a/admin/mailu/translations/fr/LC_MESSAGES/messages.po +++ b/admin/mailu/translations/fr/LC_MESSAGES/messages.po @@ -3,6 +3,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.5.1\n" "X-Generator: POEditor.com\n" "Project-Id-Version: Mailu\n" "Language: fr\n" diff --git a/admin/mailu/views/__init__.py b/admin/mailu/views/__init__.py new file mode 100644 index 00000000..e4f5d7d2 --- /dev/null +++ b/admin/mailu/views/__init__.py @@ -0,0 +1 @@ +__all__ = ['admins', 'aliases', 'alternatives', 'base', 'domains', 'fetches', 'managers', 'users', 'relays'] diff --git a/admin/mailu/admin/views/admins.py b/admin/mailu/views/admins.py similarity index 96% rename from admin/mailu/admin/views/admins.py rename to admin/mailu/views/admins.py index 2027bd39..bbefaa1a 100644 --- a/admin/mailu/admin/views/admins.py +++ b/admin/mailu/views/admins.py @@ -1,4 +1,4 @@ -from mailu.admin import app, db, models, forms, access +from mailu import app, db, models, forms, access import flask import flask_login diff --git a/admin/mailu/admin/views/aliases.py b/admin/mailu/views/aliases.py similarity index 97% rename from admin/mailu/admin/views/aliases.py rename to admin/mailu/views/aliases.py index 734d61f6..c61e5715 100644 --- a/admin/mailu/admin/views/aliases.py +++ b/admin/mailu/views/aliases.py @@ -1,4 +1,4 @@ -from mailu.admin import app, db, models, forms, access +from mailu import app, db, models, forms, access import flask import wtforms_components diff --git a/admin/mailu/admin/views/alternatives.py b/admin/mailu/views/alternatives.py similarity index 97% rename from admin/mailu/admin/views/alternatives.py rename to admin/mailu/views/alternatives.py index ce237d45..aa13bd3a 100644 --- a/admin/mailu/admin/views/alternatives.py +++ b/admin/mailu/views/alternatives.py @@ -1,4 +1,4 @@ -from mailu.admin import app, db, models, forms, access +from mailu import app, db, models, forms, access import flask import wtforms_components diff --git a/admin/mailu/admin/views/base.py b/admin/mailu/views/base.py similarity index 81% rename from admin/mailu/admin/views/base.py rename to admin/mailu/views/base.py index 4ab91325..850c06ff 100644 --- a/admin/mailu/admin/views/base.py +++ b/admin/mailu/views/base.py @@ -1,5 +1,4 @@ -from mailu import dockercli, app as flask_app -from mailu.admin import app, db, models, forms, access +from mailu import dockercli, app, db, models, forms, access import flask import flask_login @@ -9,6 +8,11 @@ from email.mime import text from urllib import parse +@app.route('/home', methods=["GET"]) +def home(): + return flask.redirect('/webmail/') + + @app.route('/', methods=["GET"]) @access.authenticated def index(): @@ -22,11 +26,9 @@ def login(): user = models.User.login(form.email.data, form.pw.data) if user: flask_login.login_user(user) - redirect = flask.request.args.get('next') - parsed_redirect = parse.urlparse(redirect) - if parsed_redirect.scheme or parsed_redirect.netloc: - return flask.abort(400) - return flask.redirect(redirect or flask.url_for('.index')) + endpoint = flask.request.args.get('next') + return flask.redirect(flask.url_for(endpoint) + or flask.url_for('.index')) else: flask.flash('Wrong e-mail or password', 'error') return flask.render_template('login.html', form=form) @@ -53,7 +55,7 @@ def services(): @access.global_admin def announcement(): from_address = '{}@{}'.format( - flask_app.config['POSTMASTER'], flask_app.config['DOMAIN']) + app.config['POSTMASTER'], app.config['DOMAIN']) form = forms.AnnouncementForm() if form.validate_on_submit(): with smtplib.SMTP('smtp') as smtp: diff --git a/admin/mailu/admin/views/domains.py b/admin/mailu/views/domains.py similarity index 95% rename from admin/mailu/admin/views/domains.py rename to admin/mailu/views/domains.py index cebe5c8b..f2542d4d 100644 --- a/admin/mailu/admin/views/domains.py +++ b/admin/mailu/views/domains.py @@ -1,5 +1,4 @@ -from mailu.admin import app, db, models, forms, access -from mailu import app as flask_app +from mailu import app, db, models, forms, access import flask import wtforms_components @@ -63,7 +62,7 @@ def domain_delete(domain_name): def domain_details(domain_name): domain = models.Domain.query.get(domain_name) or flask.abort(404) return flask.render_template('domain/details.html', domain=domain, - config=flask_app.config) + config=app.config) @app.route('/domain/genkeys/', methods=['GET', 'POST']) diff --git a/admin/mailu/admin/views/fetches.py b/admin/mailu/views/fetches.py similarity index 97% rename from admin/mailu/admin/views/fetches.py rename to admin/mailu/views/fetches.py index 306fa872..e3be2bdd 100644 --- a/admin/mailu/admin/views/fetches.py +++ b/admin/mailu/views/fetches.py @@ -1,4 +1,4 @@ -from mailu.admin import app, db, models, forms, access +from mailu import app, db, models, forms, access import flask import flask_login diff --git a/admin/mailu/admin/views/managers.py b/admin/mailu/views/managers.py similarity index 97% rename from admin/mailu/admin/views/managers.py rename to admin/mailu/views/managers.py index 98b1def8..731ee1c7 100644 --- a/admin/mailu/admin/views/managers.py +++ b/admin/mailu/views/managers.py @@ -1,4 +1,4 @@ -from mailu.admin import app, db, models, forms, access +from mailu import app, db, models, forms, access import flask import flask_login diff --git a/admin/mailu/admin/views/relays.py b/admin/mailu/views/relays.py similarity index 95% rename from admin/mailu/admin/views/relays.py rename to admin/mailu/views/relays.py index 73a9ad9d..599f2514 100644 --- a/admin/mailu/admin/views/relays.py +++ b/admin/mailu/views/relays.py @@ -1,5 +1,4 @@ -from mailu.admin import app, db, models, forms, access -from mailu import app as flask_app +from mailu import app, db, models, forms, access import flask import wtforms_components diff --git a/admin/mailu/admin/views/users.py b/admin/mailu/views/users.py similarity index 99% rename from admin/mailu/admin/views/users.py rename to admin/mailu/views/users.py index 0d086e23..1e6c533a 100644 --- a/admin/mailu/admin/views/users.py +++ b/admin/mailu/views/users.py @@ -1,4 +1,4 @@ -from mailu.admin import app, db, models, forms, access +from mailu import app, db, models, forms, access import flask import flask_login diff --git a/admin/manage.py b/admin/manage.py index 252bfe0a..a9d4a020 100644 --- a/admin/manage.py +++ b/admin/manage.py @@ -1,5 +1,4 @@ -from mailu import app, manager, db -from mailu.admin import models +from mailu import app, manager, db, models @manager.command diff --git a/docker-compose.yml.dist b/docker-compose.yml.dist index 85626cc6..11b5079f 100644 --- a/docker-compose.yml.dist +++ b/docker-compose.yml.dist @@ -90,7 +90,7 @@ services: image: mailu/admin:$VERSION labels: - traefik.enable=true - - traefik.admin.frontend.rule=Host:$HOSTNAME;PathPrefix:/admin/ + - traefik.admin.frontend.rule=Host:$HOSTNAME;PathPrefixStrip:/admin/ - traefik.admin.port=80 - traefik.home.frontend.rule=Host:$HOSTNAME;Path:/ - traefik.home.port=80 @@ -109,7 +109,7 @@ services: image: "mailu/$WEBMAIL:$VERSION" labels: - traefik.enable=true - - traefik.frontend.rule=Host:$HOSTNAME;PathPrefix:/webmail/ + - traefik.frontend.rule=Host:$HOSTNAME;PathPrefixStrip:/webmail/ - traefik.port=80 restart: always env_file: .env diff --git a/rainloop/Dockerfile b/rainloop/Dockerfile index 3fed4e8e..fdc46376 100644 --- a/rainloop/Dockerfile +++ b/rainloop/Dockerfile @@ -6,8 +6,8 @@ RUN apt-get update && apt-get install -y \ ENV RAINLOOP_URL https://github.com/RainLoop/rainloop-webmail/releases/download/v1.11.1/rainloop-community-1.11.1.zip RUN rm -rf /var/www/html/ \ - && mkdir -p /var/www/html/webmail \ - && cd /var/www/html/webmail \ + && mkdir /var/www/html \ + && cd /var/www/html \ && curl -L -O ${RAINLOOP_URL} \ && unzip *.zip \ && rm -f *.zip \ @@ -16,7 +16,7 @@ RUN rm -rf /var/www/html/ \ && find . -type f -exec chmod 644 {} \; \ && chown -R www-data: * -COPY include.php /var/www/html/webmail/include.php +COPY include.php /var/www/html/include.php COPY php.ini /usr/local/etc/php/conf.d/rainloop.ini COPY config.ini /config.ini diff --git a/roundcube/Dockerfile b/roundcube/Dockerfile index 995a0c1c..eb8a1667 100644 --- a/roundcube/Dockerfile +++ b/roundcube/Dockerfile @@ -12,17 +12,16 @@ ENV ROUNDCUBE_URL https://github.com/roundcube/roundcubemail/releases/download/1 RUN echo date.timezone=UTC > /usr/local/etc/php/conf.d/timezone.ini RUN rm -rf /var/www/html/ \ - && mkdir /var/www/html \ - && cd /var/www/html \ + && cd /var/www \ && curl -L -O ${ROUNDCUBE_URL} \ && tar -xf *.tar.gz \ && rm -f *.tar.gz \ - && mv roundcubemail-* webmail \ - && cd webmail \ + && mv roundcubemail-* html \ + && cd html \ && rm -rf CHANGELOG INSTALL LICENSE README.md UPGRADING composer.json-dist installer \ && chown -R www-data: logs -COPY config.inc.php /var/www/html/webmail/config/ +COPY config.inc.php /var/www/html/config/ COPY start.sh /start.sh