From 242322f07c1733e1cc8956733a148b2771478149 Mon Sep 17 00:00:00 2001 From: Jeremy Stanley Date: Tue, 26 Nov 2024 19:30:42 +0000 Subject: [PATCH] Move OpenInfra mailing lists to new domain The OpenInfra Foundation is switching from openinfra.dev to openinfra.org, so move all the mailing lists to prefer the new addresses and URLs while still supporting the previous ones. Also add some redirect testing to exercise the Apache rewrites. Change-Id: Ic10d6519e2a1c4ddab38fdb3119cc20ee62ca741 --- inventory/service/group_vars/mailman3.yaml | 38 +++++++++++++------ .../roles/mailman3/templates/mailman.vhost.j2 | 19 +++++++++- testinfra/test_lists_opendev_org.py | 33 ++++++++++++++++ 3 files changed, 78 insertions(+), 12 deletions(-) diff --git a/inventory/service/group_vars/mailman3.yaml b/inventory/service/group_vars/mailman3.yaml index c294225266..6f4f58382d 100644 --- a/inventory/service/group_vars/mailman3.yaml +++ b/inventory/service/group_vars/mailman3.yaml @@ -11,6 +11,7 @@ letsencrypt_certs: - lists.airshipit.org - lists.katacontainers.io - lists.openinfra.dev + - lists.openinfra.org - lists.openstack.org - lists.starlingx.io - lists.zuul-ci.org @@ -81,7 +82,7 @@ exim_transports: return_path = ${local_part:$return_path}+$local_part=$domain@${domain:$return_path} # Mailman Configs mailman_multihost: true -mm_domains: 'lists.openstack.org:lists.zuul-ci.org:lists.airshipit.org:lists.starlingx.io:lists.opendev.org:lists.openinfra.dev:lists.katacontainers.io' +mm_domains: 'lists.openstack.org:lists.zuul-ci.org:lists.airshipit.org:lists.starlingx.io:lists.opendev.org:lists.openinfra.dev:lists.openinfra.org:lists.katacontainers.io' exim_local_domains: "@:{{ mm_domains }}" exim_enable_spf: true exim_aliases: @@ -121,16 +122,31 @@ exim_aliases: # But that requires updating our main exim config so that needs more thought. postorius: ':blackhole: outgoing email only from this address' exim_domain_aliases: - community@lists.openstack.org: community@lists.openinfra.dev + asia-advisory-board@lists.openinfra.dev: asia-advisory-board@lists.openinfra.org + community@lists.openinfra.dev: community@lists.openinfra.org + community@lists.openstack.org: community@lists.openinfra.org edge-computing@lists.openstack.org: edge-computing@lists.opendev.org - foundation@lists.openstack.org: foundation@lists.openinfra.dev - foundation-board@lists.openstack.org: foundation-board@lists.openinfra.dev - foundation-board-confidential@lists.openstack.org: foundation-board-confidential@lists.openinfra.dev - goldmembers@lists.openstack.org: goldmembers@lists.openinfra.dev - marketing@lists.openstack.org: marketing@lists.openinfra.dev - staff@lists.openstack.org: staff@lists.openinfra.dev - summit-programming-committee@lists.openinfra.dev: summit-track-chairs@lists.openinfra.dev - summitsponsors@lists.openstack.org: summitsponsors@lists.openinfra.dev + europe-advisory-board@lists.openinfra.dev: europe-advisory-board@lists.openinfra.org + foundation@lists.openinfra.dev: foundation@lists.openinfra.org + foundation@lists.openstack.org: foundation@lists.openinfra.org + foundation-board@lists.openinfra.dev: foundation-board@lists.openinfra.org + foundation-board@lists.openstack.org: foundation-board@lists.openinfra.org + foundation-board-confidential@lists.openinfra.dev: foundation-board-confidential@lists.openinfra.org + foundation-board-confidential@lists.openstack.org: foundation-board-confidential@lists.openinfra.org + goldmembers@lists.openinfra.dev: goldmembers@lists.openinfra.org + goldmembers@lists.openstack.org: goldmembers@lists.openinfra.org + marketing@lists.openinfra.dev: marketing@lists.openinfra.org + marketing@lists.openstack.org: marketing@lists.openinfra.org + nordix@lists.openinfra.dev: nordix@lists.openinfra.org + openinfra-asia@lists.openinfra.dev: openinfra-asia@lists.openinfra.org + openinfra-europe@lists.openinfra.dev: openinfra-europe@lists.openinfra.org + staff@lists.openinfra.dev: staff@lists.openinfra.org + staff@lists.openstack.org: staff@lists.openinfra.org + summit-track-chairs@lists.openinfra.dev: summit-track-chairs@lists.openinfra.org + summit-programming-committee@lists.openinfra.dev: summit-track-chairs@lists.openinfra.org + summitsponsors@lists.openinfra.dev: summitsponsors@lists.openinfra.org + summitsponsors@lists.openstack.org: summitsponsors@lists.openinfra.org + vmware-migration-wg@lists.openinfra.dev: vmware-migration-wg@lists.openinfra.org openinfralabs@lists.opendev.org: ':fail: this mailing list is not in use' mailman_sites: # First entry in this list is the primary web domain @@ -215,7 +231,7 @@ mailman_sites: - name: kata-hypervisor description: 'Discussion of security and virtualization targeted at container use cases' owner: 'jonathan@openstack.org' - - listdomain: lists.openinfra.dev + - listdomain: lists.openinfra.org install_languages: ['en'] lists: - name: asia-advisory-board diff --git a/playbooks/roles/mailman3/templates/mailman.vhost.j2 b/playbooks/roles/mailman3/templates/mailman.vhost.j2 index ca3bd57c85..66cf8a03a0 100644 --- a/playbooks/roles/mailman3/templates/mailman.vhost.j2 +++ b/playbooks/roles/mailman3/templates/mailman.vhost.j2 @@ -14,9 +14,17 @@ Use UserAgentFilter + RewriteEngine On + + # The lists.openinfra.dev site has moved to lists.openinfra.org + ServerAlias lists.openinfra.dev + RewriteCond %{SERVER_NAME} =lists.openinfra.dev + RewriteRule "/(.*)lists.openinfra.dev(.*)" "$1lists.openinfra.org$2" + RewriteCond %{SERVER_NAME} =lists.openinfra.dev + RewriteRule "/(.*)" "https://lists.openinfra.org/$1" [L,R=301] + # Use mod rewrite to redirect as we want to preserve the FQDN for each # mm3 vhost. - RewriteEngine On RewriteRule "/(.*)" "https://%{HTTP_HOST}/$1" [R=301] @@ -53,10 +61,19 @@ RewriteEngine On RewriteRule ^/robots.txt$ /var/www/robots/robots.txt [L] + + # Handle old Mailman v2/pipermail links RewriteRule "/pipermail/(.*)" "/var/lib/mailman/web-data/mm2archives/%{HTTP_HOST}/public/$1" RewriteRule "/cgi-bin/mailman/listinfo/(.*)" "https://%{HTTP_HOST}/mailman3/lists/$1.%{HTTP_HOST}/" RewriteRule "/cgi-bin/mailman/listinfo" "https://%{HTTP_HOST}/mailman3/lists/" + # The lists.openinfra.dev site has moved to lists.openinfra.org + ServerAlias lists.openinfra.dev + RewriteCond %{SERVER_NAME} =lists.openinfra.dev + RewriteRule "/(.*)lists.openinfra.dev(.*)" "$1lists.openinfra.org$2" + RewriteCond %{SERVER_NAME} =lists.openinfra.dev + RewriteRule "/(.*)" "https://lists.openinfra.org/$1" [L,R=301] + ProxyPassMatch ^/static/ ! ProxyPass "/" "uwsgi://localhost:8080/" diff --git a/testinfra/test_lists_opendev_org.py b/testinfra/test_lists_opendev_org.py index 8199767e73..d8aba2b66b 100644 --- a/testinfra/test_lists_opendev_org.py +++ b/testinfra/test_lists_opendev_org.py @@ -43,6 +43,30 @@ def test_robots(host): assert 'Disallow: /accounts/*' in cmd.stdout assert 'Allow: /archives/*' in cmd.stdout +def test_http_to_https_redirects(host): + cmd = host.run('curl ' + '--resolve lists.opendev.org:80:127.0.0.1 ' + 'http://lists.opendev.org/mailman3/lists/service-discuss.lists.opendev.org/') + assert '301 Moved Permanently' in cmd.stdout + assert 'https://lists.opendev.org/mailman3/lists/service-discuss.lists.opendev.org/' in cmd.stdout + +def test_domain_redirects(host): + cmd = host.run('curl ' + '--resolve lists.openinfra.dev:80:127.0.0.1 ' + 'http://lists.openinfra.dev/mailman3/lists/foundation.lists.openinfra.dev/') + assert '301 Moved Permanently' in cmd.stdout + assert 'https://lists.openinfra.org/mailman3/lists/foundation.lists.openinfra.org/' in cmd.stdout + cmd = host.run('curl --insecure ' + '--resolve lists.openinfra.dev:443:127.0.0.1 ' + 'https://lists.openinfra.dev/mailman3/lists/foundation.lists.openinfra.dev/') + assert '301 Moved Permanently' in cmd.stdout + assert 'https://lists.openinfra.org/mailman3/lists/foundation.lists.openinfra.org/' in cmd.stdout + cmd = host.run('curl --insecure ' + '--resolve lists.openinfra.dev:443:127.0.0.1 ' + 'https://lists.openinfra.dev/archives/list/foundation@lists.openinfra.dev/') + assert '301 Moved Permanently' in cmd.stdout + assert 'https://lists.openinfra.org/archives/list/foundation@lists.openinfra.org/' in cmd.stdout + def test_mailman3_screenshots(host): shots = ( ("https://lists.opendev.org:443", None, "mm3-opendev-main.png"), @@ -54,6 +78,15 @@ def test_mailman3_screenshots(host): ("https://lists.opendev.org:443" "/accounts/login/?next=/mailman3/lists/", None, "mm3-opendev-login.png"), + ("https://lists.openinfra.org:443", None, "mm3-openinfra-main.png"), + ("https://lists.openinfra.org:443/archives/", + None, "mm3-openinfra-archives.png"), + ("https://lists.openinfra.org:443" + "/archives/list/foundation@lists.openinfra.org/", + None, "mm3-openinfra-list.png"), + ("https://lists.openinfra.org:443" + "/accounts/login/?next=/mailman3/lists/", + None, "mm3-openinfra-login.png"), ("https://lists.openstack.org:443", None, "mm3-openstack-main.png"), ("https://lists.openstack.org:443/archives/", None, "mm3-openstack-archives.png"),