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