maubot: fix trailing slash handling, add changelog entry

This commit is contained in:
Aine
2026-09-19 12:16:05 +01:00
parent 0dcce56372
commit 679c5f525e
4 changed files with 40 additions and 4 deletions
@@ -321,8 +321,10 @@
- "'traefik.http.services.matrix-bot-maubot.loadbalancer.server.port=29427' in matrix_bot_maubot_labels_lines"
- "'traefik.http.routers.matrix-bot-maubot-management.rule=Host(`maubot.molecule.local`) && PathPrefix(`/molecule-maubot`)' in matrix_bot_maubot_labels_lines"
- "'traefik.http.routers.matrix-bot-maubot-management.priority=719' in matrix_bot_maubot_labels_lines"
- "'traefik.http.middlewares.matrix-bot-maubot-management-slashless-redirect.redirectregex.regex=(/molecule-maubot)$' in matrix_bot_maubot_labels_lines"
- "'traefik.http.middlewares.matrix-bot-maubot-management-slashless-redirect.redirectregex.replacement=${1}/' in matrix_bot_maubot_labels_lines"
- "'traefik.http.middlewares.matrix-bot-maubot-management-strip-prefix.stripprefix.prefixes=/molecule-maubot' in matrix_bot_maubot_labels_lines"
- "'traefik.http.routers.matrix-bot-maubot-management.middlewares=matrix-bot-maubot-management-strip-prefix' in matrix_bot_maubot_labels_lines"
- "'traefik.http.routers.matrix-bot-maubot-management.middlewares=matrix-bot-maubot-management-slashless-redirect,matrix-bot-maubot-management-strip-prefix' in matrix_bot_maubot_labels_lines"
- "'traefik.http.routers.matrix-bot-maubot-management.entrypoints=web' in matrix_bot_maubot_labels_lines"
- "'traefik.http.routers.matrix-bot-maubot-management.tls=false' in matrix_bot_maubot_labels_lines"
- "'molecule.maubot.coverage=enabled' in matrix_bot_maubot_labels_lines"
@@ -50,3 +50,10 @@
- {'name': 'matrix_bot_maubot_homeserver_name', when: true}
- {'name': 'matrix_bot_maubot_homeserver_url', when: true}
- {'name': 'matrix_bot_maubot_initial_password', when: true}
# The prefix is used verbatim in the redirect regex, the strip prefix and the public URL.
- name: Fail if matrix_bot_maubot_path_prefix ends with a slash
ansible.builtin.fail:
msg: >-
matrix_bot_maubot_path_prefix (`{{ matrix_bot_maubot_path_prefix }}`) must either be `/` or not end with a slash (e.g. `/_matrix/maubot`).
when: "matrix_bot_maubot_path_prefix != '/' and matrix_bot_maubot_path_prefix[-1] == '/'"
@@ -20,6 +20,20 @@ traefik.http.services.matrix-bot-maubot.loadbalancer.server.port={{ matrix_bot_m
# #
############################################################
{% set middlewares = [] %}
{% if matrix_bot_maubot_container_labels_management_prefix != '/' %}
# The management UI loads its assets relative to the document URL, so the prefix needs a trailing slash.
traefik.http.middlewares.matrix-bot-maubot-management-slashless-redirect.redirectregex.regex=({{ matrix_bot_maubot_container_labels_management_prefix | quote }})$
traefik.http.middlewares.matrix-bot-maubot-management-slashless-redirect.redirectregex.replacement=${1}/
{% set middlewares = middlewares + ['matrix-bot-maubot-management-slashless-redirect'] %}
{% endif %}
{% if matrix_bot_maubot_container_labels_management_prefix != '/' %}
traefik.http.middlewares.matrix-bot-maubot-management-strip-prefix.stripprefix.prefixes={{ matrix_bot_maubot_container_labels_management_prefix }}
{% set middlewares = middlewares + ['matrix-bot-maubot-management-strip-prefix'] %}
{% endif %}
traefik.http.routers.matrix-bot-maubot-management.rule={{ matrix_bot_maubot_container_labels_management_traefik_rule }}
{% if matrix_bot_maubot_container_labels_management_traefik_priority | int > 0 %}
@@ -27,9 +41,8 @@ traefik.http.routers.matrix-bot-maubot-management.priority={{ matrix_bot_maubot_
{% endif %}
traefik.http.routers.matrix-bot-maubot-management.service=matrix-bot-maubot
{% if matrix_bot_maubot_container_labels_management_prefix != '/' %}
traefik.http.middlewares.matrix-bot-maubot-management-strip-prefix.stripprefix.prefixes={{ matrix_bot_maubot_container_labels_management_prefix }}
traefik.http.routers.matrix-bot-maubot-management.middlewares=matrix-bot-maubot-management-strip-prefix
{% if middlewares | length > 0 %}
traefik.http.routers.matrix-bot-maubot-management.middlewares={{ middlewares | join(',') }}
{% endif %}
traefik.http.routers.matrix-bot-maubot-management.entrypoints={{ matrix_bot_maubot_container_labels_management_traefik_entrypoints }}