From 5d0c9d3b73024710f55cd220bfca4a5b622861ff Mon Sep 17 00:00:00 2001
From: Kristian Klausen <kristian@klausen.dk>
Date: Sat, 30 Apr 2022 17:15:27 +0200
Subject: [PATCH] mailman: Add map for redirecting migrated lists to the ml3
 interface

---
 roles/mailman/files/migrated-lists.map  | 0
 roles/mailman/tasks/main.yml            | 4 ++++
 roles/mailman/templates/nginx.d.conf.j2 | 8 ++++++++
 3 files changed, 12 insertions(+)
 create mode 100644 roles/mailman/files/migrated-lists.map

diff --git a/roles/mailman/files/migrated-lists.map b/roles/mailman/files/migrated-lists.map
new file mode 100644
index 000000000..e69de29bb
diff --git a/roles/mailman/tasks/main.yml b/roles/mailman/tasks/main.yml
index 800a41a04..0b6497435 100644
--- a/roles/mailman/tasks/main.yml
+++ b/roles/mailman/tasks/main.yml
@@ -49,6 +49,10 @@
 - name: make nginx log dir
   file: path=/var/log/nginx/{{ lists_domain }} state=directory owner=root group=root mode=0755
 
+- name: install nginx mailman2->mailman3 redirect map
+  copy: src=migrated-lists.map dest=/etc/nginx/maps/ owner=root group=root mode=0644
+  notify: reload nginx
+
 - name: set up nginx
   template: src=nginx.d.conf.j2 dest="/etc/nginx/nginx.d/mailman.conf" owner=root group=root mode=644
   notify: reload nginx
diff --git a/roles/mailman/templates/nginx.d.conf.j2 b/roles/mailman/templates/nginx.d.conf.j2
index d292d493f..e8cd51c88 100644
--- a/roles/mailman/templates/nginx.d.conf.j2
+++ b/roles/mailman/templates/nginx.d.conf.j2
@@ -15,6 +15,10 @@ server {
     }
 }
 
+map $uri $migrated_uri {
+    include maps/migrated-lists.map;
+}
+
 server {
     listen       443 ssl http2;
     listen       [::]:443 ssl http2;
@@ -28,6 +32,10 @@ server {
     ssl_certificate_key  /etc/letsencrypt/live/{{ lists_domain }}/privkey.pem;
     ssl_trusted_certificate /etc/letsencrypt/live/{{ lists_domain }}/chain.pem;
 
+    if ($migrated_uri) {
+        return 302 $migrated_uri;
+    }
+
     # redirect old urls
     location /mailman/ {
         rewrite ^/mailman/(.*) /$1 permanent;
-- 
GitLab