From cdfef82bf60689531cbe2e7f053b8da38aab23b1 Mon Sep 17 00:00:00 2001 From: fliu <10025-fliu@users.noreply.salsa.debian.org> Date: Thu, 29 Jul 2021 21:05:17 +0000 Subject: [PATCH] email: Implement auto-discovery --- .../email-server-freedombox.conf | 15 +++++++++++++ .../modules/email_server/templates/config.xml | 22 +++++++++++++++++++ plinth/modules/email_server/urls.py | 3 +++ plinth/modules/email_server/views.py | 15 +++++++++++++ 4 files changed, 55 insertions(+) create mode 100644 plinth/modules/email_server/templates/config.xml diff --git a/plinth/modules/email_server/data/etc/apache2/conf-available/email-server-freedombox.conf b/plinth/modules/email_server/data/etc/apache2/conf-available/email-server-freedombox.conf index 82034aeda..b7ae302a2 100644 --- a/plinth/modules/email_server/data/etc/apache2/conf-available/email-server-freedombox.conf +++ b/plinth/modules/email_server/data/etc/apache2/conf-available/email-server-freedombox.conf @@ -24,3 +24,18 @@ TKTAuthToken "admin" + + + # Require SSO + Include includes/freedombox-single-sign-on.conf + + TKTAuthToken "admin" + + + + + ProxyPass http://127.0.0.1:8000/plinth/apps/email_server/config.xml + RequestHeader unset Cookie + Header unset Set-Cookie + Include includes/freedombox-robots.conf + diff --git a/plinth/modules/email_server/templates/config.xml b/plinth/modules/email_server/templates/config.xml new file mode 100644 index 000000000..4573d5339 --- /dev/null +++ b/plinth/modules/email_server/templates/config.xml @@ -0,0 +1,22 @@ + + + + {{ host }} + FreedomBox Mail + FBXMail + + {{ host }} + 993 + SSL + %EMAILLOCALPART% + password-cleartext + + + {{ host }} + 465 + SSL + %EMAILLOCALPART% + password-cleartext + + + diff --git a/plinth/modules/email_server/urls.py b/plinth/modules/email_server/urls.py index be8e8cc2e..5e12fefa1 100644 --- a/plinth/modules/email_server/urls.py +++ b/plinth/modules/email_server/urls.py @@ -1,6 +1,7 @@ # SPDX-License-Identifier: AGPL-3.0-or-later from django.urls import path from plinth.utils import non_admin_view +from stronghold.decorators import public from . import views @@ -13,4 +14,6 @@ urlpatterns = [ non_admin_view(views.MyMailView.as_view()), name='my_mail'), path('apps/email_server/my_aliases', non_admin_view(views.AliasView.as_view())), + + path('apps/email_server/config.xml', public(views.XmlView.as_view())), ] diff --git a/plinth/modules/email_server/views.py b/plinth/modules/email_server/views.py index 1b0964bdb..62e56d778 100644 --- a/plinth/modules/email_server/views.py +++ b/plinth/modules/email_server/views.py @@ -273,3 +273,18 @@ class DomainView(TabMixin, TemplateView): changed[key] = value audit.domain.set_keys(changed) return self.render_to_response(self.get_context_data()) + + +class XmlView(TemplateView): + template_name = 'config.xml' + + def render_to_response(self, *args, **kwargs): + if 200 <= kwargs.get('status', 200) < 300: + kwargs['content_type'] = 'text/xml; charset=utf-8' + response = super().render_to_response(*args, **kwargs) + return response + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['host'] = self.request.get_host() + return context