| @@ -5930,6 +5930,8 @@ matrix_static_files_file_matrix_client_property_org_matrix_msc4143_rtc_foci_auto | |||||
| matrix_static_files_file_matrix_server_property_m_server: "{{ matrix_server_fqn_matrix_federation }}:{{ matrix_federation_public_port }}" | matrix_static_files_file_matrix_server_property_m_server: "{{ matrix_server_fqn_matrix_federation }}:{{ matrix_federation_public_port }}" | ||||
| matrix_static_files_file_element_element_json_property_call_widget_url: "{{ matrix_element_call_public_url if matrix_element_call_enabled else '' }}" | |||||
| matrix_static_files_scheme: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}" | matrix_static_files_scheme: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}" | ||||
| matrix_static_files_self_check_hostname_matrix: "{{ matrix_server_fqn_matrix }}" | matrix_static_files_self_check_hostname_matrix: "{{ matrix_server_fqn_matrix }}" | ||||
| @@ -6044,10 +6046,12 @@ traefik_certs_dumper_ssl_dir_path: "{{ traefik_ssl_dir_path if traefik_enabled e | |||||
| # # | # # | ||||
| ######################################################################## | ######################################################################## | ||||
| # Matrix Element Call Configuration | |||||
| matrix_element_call_enabled: false # Default is false; should be enabled in host_vars as needed | |||||
| matrix_element_call_enabled: false | |||||
| matrix_element_call_scheme: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}" | |||||
| matrix_element_call_version: "latest" # Default version; can be overridden in host_vars | matrix_element_call_version: "latest" # Default version; can be overridden in host_vars | ||||
| matrix_element_call_scheme: "https" # Scheme for Element Call (e.g., https) | |||||
| matrix_element_call_hostname: "call.{{ matrix_domain }}" # Default hostname; should be overridden in host_vars if different | matrix_element_call_hostname: "call.{{ matrix_domain }}" # Default hostname; should be overridden in host_vars if different | ||||
| matrix_element_call_path_prefix: "/" # Path prefix for Element Call | matrix_element_call_path_prefix: "/" # Path prefix for Element Call | ||||
| matrix_element_call_base_path: "{{ matrix_base_data_path }}/element-call" # Base path for storing Element Call-related files | matrix_element_call_base_path: "{{ matrix_base_data_path }}/element-call" # Base path for storing Element Call-related files | ||||
| @@ -77,12 +77,3 @@ | |||||
| owner: "{{ matrix_user_username }}" | owner: "{{ matrix_user_username }}" | ||||
| group: "{{ matrix_user_groupname }}" | group: "{{ matrix_user_groupname }}" | ||||
| when: matrix_element_call_enabled | bool | when: matrix_element_call_enabled | bool | ||||
| # Create .well-known/element/element.json for Element Call | |||||
| - name: Create the well-known element.json file | |||||
| ansible.builtin.template: | |||||
| src: "{{ role_path }}/templates/well_known_element.json.j2" | |||||
| dest: "{{ matrix_base_data_path }}/static-files/public/.well-known/element/element.json" | |||||
| mode: '0644' | |||||
| owner: "{{ matrix_user_username }}" | |||||
| group: "{{ matrix_user_groupname }}" | |||||
| @@ -1,5 +0,0 @@ | |||||
| { | |||||
| "call": { | |||||
| "widget_url": "https://{{ matrix_element_call_hostname }}" | |||||
| } | |||||
| } | |||||
| @@ -15,6 +15,7 @@ matrix_static_files_config_path: "{{ matrix_static_files_base_path }}/config" | |||||
| matrix_static_files_public_path: "{{ matrix_static_files_base_path }}/public" | matrix_static_files_public_path: "{{ matrix_static_files_base_path }}/public" | ||||
| matrix_static_files_public_well_known_path: "{{ matrix_static_files_public_path }}/.well-known" | matrix_static_files_public_well_known_path: "{{ matrix_static_files_public_path }}/.well-known" | ||||
| matrix_static_files_public_well_known_matrix_path: "{{ matrix_static_files_public_well_known_path }}/matrix" | matrix_static_files_public_well_known_matrix_path: "{{ matrix_static_files_public_well_known_path }}/matrix" | ||||
| matrix_static_files_public_well_known_element_path: "{{ matrix_static_files_public_well_known_path }}/element" | |||||
| # List of systemd services that matrix-static-files.service depends on | # List of systemd services that matrix-static-files.service depends on | ||||
| matrix_static_files_systemd_required_services_list: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" | matrix_static_files_systemd_required_services_list: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}" | ||||
| @@ -360,6 +361,56 @@ matrix_static_files_file_matrix_support_configuration: "{{ matrix_static_files_f | |||||
| ######################################################################## | ######################################################################## | ||||
| ######################################################################## | |||||
| # # | |||||
| # Related to /.well-known/element/element.json # | |||||
| # # | |||||
| ######################################################################## | |||||
| # Controls whether a `/.well-known/element/element.json` file is generated and used at all. | |||||
| matrix_static_files_file_element_element_json_enabled: true | |||||
| # Controls the call.widget_url property in the /.well-known/element/element.json file | |||||
| matrix_static_files_file_element_element_json_property_call_widget_url: '' | |||||
| # Default /.well-known/element/element.json configuration template which covers the generic use case. | |||||
| # You can customize it by controlling the various variables inside it. | |||||
| # | |||||
| # For a more advanced customization, you can extend the default (see `matrix_static_files_file_matrix_support_configuration_extension_json`) | |||||
| # or completely replace this variable with your own template. | |||||
| matrix_static_files_file_element_element_json_configuration_json: "{{ lookup('template', 'templates/public/.well-known/element/element.json.j2') }}" | |||||
| # Your custom JSON configuration for /.well-known/element/element.json should go to `matrix_static_files_file_element_element_json_configuration_extension_json`. | |||||
| # This configuration extends the default starting configuration (`matrix_static_files_file_matrix_support_configuration_extension_json`). | |||||
| # | |||||
| # You can override individual variables from the default configuration, or introduce new ones. | |||||
| # | |||||
| # If you need something more special, you can take full control by | |||||
| # completely redefining `matrix_static_files_file_matrix_support_configuration_json`. | |||||
| # | |||||
| # Example configuration extension follows: | |||||
| # | |||||
| # matrix_static_files_file_element_element_json_configuration_extension_json: | | |||||
| # { | |||||
| # "call": { | |||||
| # "url": "value" | |||||
| # } | |||||
| # } | |||||
| matrix_static_files_file_element_element_json_configuration_extension_json: '{}' | |||||
| matrix_static_files_file_element_element_json_configuration_extension: "{{ matrix_static_files_file_element_element_json_configuration_extension_json | from_json if matrix_static_files_file_element_element_json_configuration_extension_json | from_json is mapping else {} }}" | |||||
| # Holds the final /.well-known/matrix/support configuration (a combination of the default and its extension). | |||||
| # You most likely don't need to touch this variable. Instead, see `matrix_static_files_file_element_element_json_configuration_json` or `matrix_static_files_file_element_element_json_configuration_extension_json`. | |||||
| matrix_static_files_file_element_element_json_configuration: "{{ matrix_static_files_file_element_element_json_configuration_json | combine(matrix_static_files_file_element_element_json_configuration_extension, recursive=True) }}" | |||||
| ######################################################################## | |||||
| # # | |||||
| # /Related to /.well-known/element/element.json # | |||||
| # # | |||||
| ######################################################################## | |||||
| ######################################################################## | ######################################################################## | ||||
| # # | # # | ||||
| # Related to index.html # | # Related to index.html # | ||||
| @@ -2,17 +2,19 @@ | |||||
| - name: Ensure matrix-static-files paths exist | - name: Ensure matrix-static-files paths exist | ||||
| ansible.builtin.file: | ansible.builtin.file: | ||||
| path: "{{ item }}" | |||||
| path: "{{ item.path }}" | |||||
| state: directory | state: directory | ||||
| mode: 0750 | mode: 0750 | ||||
| owner: "{{ matrix_user_username }}" | owner: "{{ matrix_user_username }}" | ||||
| group: "{{ matrix_user_groupname }}" | group: "{{ matrix_user_groupname }}" | ||||
| with_items: | with_items: | ||||
| - "{{ matrix_static_files_base_path }}" | |||||
| - "{{ matrix_static_files_config_path }}" | |||||
| - "{{ matrix_static_files_public_path }}" | |||||
| - "{{ matrix_static_files_public_well_known_path }}" | |||||
| - "{{ matrix_static_files_public_well_known_matrix_path }}" | |||||
| - {path: "{{ matrix_static_files_base_path }}", when: true} | |||||
| - {path: "{{ matrix_static_files_config_path }}", when: true} | |||||
| - {path: "{{ matrix_static_files_public_path }}", when: true} | |||||
| - {path: "{{ matrix_static_files_public_well_known_path }}", when: true} | |||||
| - {path: "{{ matrix_static_files_public_well_known_matrix_path }}", when: true} | |||||
| - {path: "{{ matrix_static_files_public_well_known_element_path }}", when: true} | |||||
| when: "item.when | bool" | |||||
| - name: Ensure matrix-static-files is configured | - name: Ensure matrix-static-files is configured | ||||
| ansible.builtin.template: | ansible.builtin.template: | ||||
| @@ -52,6 +54,10 @@ | |||||
| dest: "{{ matrix_static_files_public_well_known_matrix_path }}/support" | dest: "{{ matrix_static_files_public_well_known_matrix_path }}/support" | ||||
| when: "{{ matrix_static_files_file_matrix_support_enabled }}" | when: "{{ matrix_static_files_file_matrix_support_enabled }}" | ||||
| - content: "{{ matrix_static_files_file_element_element_json_configuration | to_nice_json }}" | |||||
| dest: "{{ matrix_static_files_public_well_known_element_path }}/element.json" | |||||
| when: "{{ matrix_static_files_file_element_element_json_enabled }}" | |||||
| # This one will not be deleted if `matrix_static_files_file_index_html_enabled` flips to `false`. | # This one will not be deleted if `matrix_static_files_file_index_html_enabled` flips to `false`. | ||||
| # See the comment for `matrix_static_files_file_index_html_enabled` to learn why. | # See the comment for `matrix_static_files_file_index_html_enabled` to learn why. | ||||
| - content: "{{ matrix_static_files_file_index_html_template }}" | - content: "{{ matrix_static_files_file_index_html_template }}" | ||||
| @@ -70,6 +76,12 @@ | |||||
| state: absent | state: absent | ||||
| when: "not matrix_static_files_file_matrix_support_enabled | bool" | when: "not matrix_static_files_file_matrix_support_enabled | bool" | ||||
| - name: Ensure /.well-known/element/element.json file deleted if not enabled | |||||
| ansible.builtin.file: | |||||
| path: "{{ matrix_static_files_public_well_known_element_path }}/element.json" | |||||
| state: absent | |||||
| when: "not matrix_static_files_file_element_element_json_enabled | bool" | |||||
| - name: Ensure matrix-static-files container image is pulled | - name: Ensure matrix-static-files container image is pulled | ||||
| community.docker.docker_image: | community.docker.docker_image: | ||||
| name: "{{ matrix_static_files_container_image }}" | name: "{{ matrix_static_files_container_image }}" | ||||
| @@ -0,0 +1,7 @@ | |||||
| { | |||||
| {% if matrix_static_files_file_element_element_json_property_call_widget_url %} | |||||
| "call": { | |||||
| "widget_url": {{ matrix_static_files_file_element_element_json_property_call_widget_url | to_json }} | |||||
| } | |||||
| {% endif %} | |||||
| } | |||||