From 373d4918cda240dc7b5f620f2c4eea8a0f30dff9 Mon Sep 17 00:00:00 2001 From: Jelle van der Waa <jelle@archlinux.org> Date: Mon, 5 Jul 2021 22:15:21 +0200 Subject: [PATCH] Add redirects for git.archlinux.org using a map --- roles/redirects/defaults/main.yml | 6 ++++++ roles/redirects/files/maps/cgit-migrated-repos.map | 5 +++++ roles/redirects/tasks/main.yml | 3 +++ roles/redirects/templates/nginx.d.conf.j2 | 14 +++++++++++++- tf-stage1/archlinux.tf | 1 + 5 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 roles/redirects/files/maps/cgit-migrated-repos.map diff --git a/roles/redirects/defaults/main.yml b/roles/redirects/defaults/main.yml index 84e8d2161..2df1f5917 100644 --- a/roles/redirects/defaults/main.yml +++ b/roles/redirects/defaults/main.yml @@ -2,6 +2,7 @@ # - domain: the domain to listen on # - to: the redirect target as defined by the nginx return statement # - type: HTTP status code to use (302 = temporary redirect, 301 = permanent redirect) +# - map: the mapping file redirects: - mailman: domain: mailman.archlinux.org @@ -15,3 +16,8 @@ redirects: domain: coc.archlinux.org to: https://gitlab.archlinux.org/archlinux/service-agreements/-/blob/master/code-of-conduct.md type: 302 + - cgit: + domain: git.archlinux.org + to: https://gitlab.archlinux.org + type: 301 + map: maps/cgit-migrated-repos.map diff --git a/roles/redirects/files/maps/cgit-migrated-repos.map b/roles/redirects/files/maps/cgit-migrated-repos.map new file mode 100644 index 000000000..90a26c337 --- /dev/null +++ b/roles/redirects/files/maps/cgit-migrated-repos.map @@ -0,0 +1,5 @@ +/pacman.git https://gitlab.archlinux.org/pacman/pacman; +/pacman-contrib.git https://gitlab.archlinux.org/pacman/pacman-contrib; + +/netctl.git https://gitlab.archlinux.org/archlinux/netctl; +/mkinitcpio.git https://github.com/archlinux/mkinitcpio; diff --git a/roles/redirects/tasks/main.yml b/roles/redirects/tasks/main.yml index 9efb268c6..aa0bc60e2 100644 --- a/roles/redirects/tasks/main.yml +++ b/roles/redirects/tasks/main.yml @@ -14,3 +14,6 @@ template: src=nginx.d.conf.j2 dest="/etc/nginx/nginx.d/redirects.conf" owner=root group=root mode=644 notify: reload nginx tags: ['nginx'] + +- name: copy nginx map files + copy: src=maps dest=/etc/nginx/ owner=root group=root mode=0600 diff --git a/roles/redirects/templates/nginx.d.conf.j2 b/roles/redirects/templates/nginx.d.conf.j2 index 28f391a38..dca0cf059 100644 --- a/roles/redirects/templates/nginx.d.conf.j2 +++ b/roles/redirects/templates/nginx.d.conf.j2 @@ -1,4 +1,11 @@ {% for redirect in redirects %} +{% if redirect.map is defined %} +map $uri ${{ redirect.map | hash('md5') }} { + default ""; + include {{ redirect.map }}; +} + +{% endif %} server { listen 80; listen [::]:80; @@ -17,7 +24,12 @@ server { include snippets/letsencrypt.conf; location / { - return {{ redirect.type }} {{ redirect.to }}; + {% if redirect.map is defined %} + if (${{ redirect.map | hash('md5') }} != "") { + return {{ redirect.type }} ${{ redirect.map | hash('md5') }}; + } + {% endif %} + return {{ redirect.type }} {{ redirect.to }}; } } {% endfor %} diff --git a/tf-stage1/archlinux.tf b/tf-stage1/archlinux.tf index e492af1ce..08274ee93 100644 --- a/tf-stage1/archlinux.tf +++ b/tf-stage1/archlinux.tf @@ -288,6 +288,7 @@ locals { status = { value = "stats.uptimerobot.com." } svn = { value = "gemini" } coc = { value = "redirect" } + git = { value = "redirect" } # MTA-STS mta-sts = { value = "mail" } -- GitLab