diff --git a/roles/matrix/defaults/main.yml b/roles/matrix/defaults/main.yml index 1f010cf2bdd16632135ab30798ebfd6c5e637dba..3db4414858a5ebbd217e2288ecb7072fe03684a9 100644 --- a/roles/matrix/defaults/main.yml +++ b/roles/matrix/defaults/main.yml @@ -2,6 +2,12 @@ matrix_max_upload_size: 50M matrix_nginx_config: + - name: mjolnir + port: 8010 + locations: + - path: "~ ^/_matrix/client/r0/rooms/([^/]*)/report/(.*)$" + pass: "/api/1/report/$1/$2" + add_cors: true - name: federation_reader port: 8011 locations: diff --git a/roles/matrix/templates/mjolnir.yaml.j2 b/roles/matrix/templates/mjolnir.yaml.j2 index 4ce40cd3388dd2f447ef0551184bf30c0c705732..897e172bca4efe05c250c97205227773ec354315 100644 --- a/roles/matrix/templates/mjolnir.yaml.j2 +++ b/roles/matrix/templates/mjolnir.yaml.j2 @@ -167,7 +167,7 @@ health: # Options for exposing web APIs. web: # Whether to enable web APIs. - enabled: false + enabled: true # The port to expose the webserver on. Defaults to 8080. port: 8010 diff --git a/roles/matrix/templates/nginx.d.conf.j2 b/roles/matrix/templates/nginx.d.conf.j2 index 9492e18f61e762de74fe6b6c09d49024ae5a0747..bf32f4e97d15e1b0040dfdd279bd3e34ab77a06d 100644 --- a/roles/matrix/templates/nginx.d.conf.j2 +++ b/roles/matrix/templates/nginx.d.conf.j2 @@ -37,10 +37,18 @@ server { {% for config in matrix_nginx_config %} # {{ config.name }} {% for location in config.locations %} - location {{ location }} { +{% if location is string %} +{% set location = { 'path': location } %} +{% endif %} + location {{ location.path }} { access_log /var/log/nginx/{{ matrix_domain }}/access.log main; access_log /var/log/nginx/{{ matrix_domain }}/access.log.json json_main; - proxy_pass http://matrix_{{ config.name }}; +{% if location.add_cors | default(false) %} + add_header Access-Control-Allow-Origin *; + add_header Access-Control-Allow-Methods "GET, HEAD, POST, PUT, DELETE, OPTIONS"; + add_header Access-Control-Allow-Headers "X-Requested-With, Content-Type, Authorization, Date"; +{% endif %} + proxy_pass http://matrix_{{ config.name }}{{ location.pass | default('') }}; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host;