Gomatrixhosting v0.6.3 - rebased properly :)pull/1342/head
| @@ -0,0 +1,66 @@ | |||
| { | |||
| "name": "Bridge Discord Appservice", | |||
| "description": "Enables a private bridge you can use to connect Matrix rooms to Discord.", | |||
| "spec": [ | |||
| { | |||
| "question_name": "Enable Discord AppService Bridge", | |||
| "question_description": "Enables a private bridge you can use to connect Matrix rooms to Discord.", | |||
| "required": true, | |||
| "min": null, | |||
| "max": null, | |||
| "default": "{{ matrix_appservice_discord_enabled | string | lower }}", | |||
| "choices": "true\nfalse", | |||
| "new_question": true, | |||
| "variable": "matrix_appservice_discord_enabled", | |||
| "type": "multiplechoice" | |||
| }, | |||
| { | |||
| "question_name": "Discord Client ID", | |||
| "question_description": "The OAuth2 'CLIENT ID' which can be found in the 'OAuth2' tab of your new discord application: https://discord.com/developers/applications", | |||
| "required": true, | |||
| "min": 0, | |||
| "max": 128, | |||
| "default": "{{ matrix_appservice_discord_client_id | trim }}", | |||
| "choices": "", | |||
| "new_question": true, | |||
| "variable": "matrix_appservice_discord_client_id", | |||
| "type": "text" | |||
| }, | |||
| { | |||
| "question_name": "Discord Bot Token", | |||
| "question_description": "The Bot 'TOKEN' which can be found in the 'Bot' tab of your new discord application: https://discord.com/developers/applications", | |||
| "required": true, | |||
| "min": 0, | |||
| "max": 256, | |||
| "default": "{{ matrix_appservice_discord_bot_token | trim }}", | |||
| "choices": "", | |||
| "new_question": true, | |||
| "variable": "matrix_appservice_discord_bot_token", | |||
| "type": "password" | |||
| }, | |||
| { | |||
| "question_name": "Auto-Admin Matrix User", | |||
| "question_description": "The username you would like to be automatically joined and promoted to administrator (PL100) in bridged rooms. Exclude the '@' and server name postfix. So to create @stevo:example.org just enter 'stevo'.", | |||
| "required": false, | |||
| "min": 0, | |||
| "max": 1024, | |||
| "default": "", | |||
| "choices": "", | |||
| "new_question": true, | |||
| "variable": "awx_appservice_discord_admin_user", | |||
| "type": "text" | |||
| }, | |||
| { | |||
| "question_name": "Auto-Admin Rooms", | |||
| "question_description": "A list of rooms you want the user to be automatically joined and promoted to administrator (PL100) in. These should be the internal IDs (for example '!axfBUsKhfAjSMBdjKX:example.org') separated by newlines.", | |||
| "required": false, | |||
| "min": 0, | |||
| "max": 4096, | |||
| "default": "", | |||
| "choices": "", | |||
| "new_question": true, | |||
| "variable": "awx_appservice_discord_admin_rooms", | |||
| "type": "textarea" | |||
| } | |||
| ] | |||
| } | |||
| @@ -66,10 +66,10 @@ | |||
| "required": false, | |||
| "min": 0, | |||
| "max": 256, | |||
| "default": "{{ awx_corporal_http_api_auth_token }}", | |||
| "default": "{{ matrix_corporal_http_api_auth_token }}", | |||
| "choices": "", | |||
| "new_question": true, | |||
| "variable": "awx_corporal_http_api_auth_token", | |||
| "variable": "matrix_corporal_http_api_auth_token", | |||
| "type": "password" | |||
| }, | |||
| { | |||
| @@ -81,7 +81,7 @@ | |||
| "default": "{{ awx_corporal_raise_ratelimits }}", | |||
| "choices": "Normal\nRaised", | |||
| "new_question": true, | |||
| "variable": "matrix_corporal_raise_ratelimits", | |||
| "variable": "awx_corporal_raise_ratelimits", | |||
| "type": "multiplechoice" | |||
| } | |||
| ] | |||
| @@ -0,0 +1,62 @@ | |||
| - name: Record Bridge Discord AppService variables locally on AWX | |||
| delegate_to: 127.0.0.1 | |||
| lineinfile: | |||
| path: '{{ awx_cached_matrix_vars }}' | |||
| regexp: "^#? *{{ item.key | regex_escape() }}:" | |||
| line: "{{ item.key }}: {{ item.value }}" | |||
| insertafter: '# Bridge Discord AppService Start' | |||
| with_dict: | |||
| 'matrix_appservice_discord_enabled': '{{ matrix_appservice_discord_enabled }}' | |||
| 'matrix_appservice_discord_client_id': '{{ matrix_appservice_discord_client_id }}' | |||
| 'matrix_appservice_discord_bot_token': '{{ matrix_appservice_discord_bot_token }}' | |||
| - name: Collect discord bot invite link | |||
| shell: | |||
| cat /matrix/appservice-discord/config/invite_link | |||
| register: awx_discord_appservice_link | |||
| - name: If the raw inputs is not empty start constructing parsed awx_appservice_discord_admin_rooms list | |||
| set_fact: | |||
| awx_appservice_discord_admin_rooms_array: |- | |||
| {{ awx_appservice_discord_admin_rooms.splitlines() | to_json }} | |||
| when: awx_appservice_discord_admin_rooms | trim | length > 0 | |||
| - name: Promote user to administer (PL100) of each room | |||
| command: | | |||
| docker exec -i matrix-appservice-discord /bin/sh -c 'cp /cfg/registration.yaml /tmp/discord-registration.yaml && cd /tmp && node /build/tools/adminme.js -c /cfg/config.yaml -m "{{ item.1 }}" -u "@{{ awx_appservice_discord_admin_user }}:{{ matrix_domain }}" -p 100' | |||
| with_indexed_items: | |||
| - "{{ awx_appservice_discord_admin_rooms_array }}" | |||
| when: ( awx_appservice_discord_admin_rooms | trim | length > 0 ) and ( awx_appservice_discord_admin_user is defined ) | |||
| - name: Save new 'Bridge Discord Appservice' survey.json to the AWX tower, template | |||
| delegate_to: 127.0.0.1 | |||
| template: | |||
| src: 'roles/matrix-awx/surveys/bridge_discord_appservice.json.j2' | |||
| dest: '/var/lib/awx/projects/clients/{{ member_id }}/{{ subscription_id }}//bridge_discord_appservice.json' | |||
| - name: Copy new 'Bridge Discord Appservice' survey.json to target machine | |||
| copy: | |||
| src: '/var/lib/awx/projects/clients/{{ member_id }}/{{ subscription_id }}/bridge_discord_appservice.json' | |||
| dest: '/matrix/awx/bridge_discord_appservice.json' | |||
| mode: '0660' | |||
| - name: Recreate 'Bridge Discord Appservice' job template | |||
| delegate_to: 127.0.0.1 | |||
| awx.awx.tower_job_template: | |||
| name: "{{ matrix_domain }} - 3 - Bridge Discord AppService" | |||
| description: "Enables a private bridge you can use to connect Matrix rooms to Discord." | |||
| extra_vars: "{{ lookup('file', '/var/lib/awx/projects/clients/{{ member_id }}/{{ subscription_id }}/extra_vars.json') }}" | |||
| job_type: run | |||
| job_tags: "start,setup-all,bridge-discord-appservice" | |||
| inventory: "{{ member_id }}" | |||
| project: "{{ member_id }} - Matrix Docker Ansible Deploy" | |||
| playbook: setup.yml | |||
| credential: "{{ member_id }} - AWX SSH Key" | |||
| survey_enabled: true | |||
| survey_spec: "{{ lookup('file', '/var/lib/awx/projects/clients/{{ member_id }}/{{ subscription_id }}/bridge_discord_appservice.json') }}" | |||
| state: present | |||
| verbosity: 1 | |||
| tower_host: "https://{{ awx_host }}" | |||
| tower_oauthtoken: "{{ awx_session_token.ansible_facts.tower_token.token }}" | |||
| validate_certs: yes | |||
| @@ -197,6 +197,15 @@ | |||
| tags: | |||
| - setup-synapse-admin | |||
| # Additional playbook to set the variable file during Discord Appservice Bridge configuration | |||
| - include_tasks: | |||
| file: "bridge_discord_appservice.yml" | |||
| apply: | |||
| tags: bridge-discord-appservice | |||
| when: run_setup|bool and matrix_awx_enabled|bool | |||
| tags: | |||
| - bridge-discord-appservice | |||
| # Delete AWX session token | |||
| - include_tasks: | |||
| file: "delete_session_token.yml" | |||
| @@ -84,7 +84,7 @@ | |||
| when: (awx_purge_mode.find("No local users [recommended]") != -1) or (awx_purge_mode.find("Number of users [slower]") != -1) or (awx_purge_mode.find("Number of events [slower]") != -1) | |||
| - name: Purge all rooms with no local users | |||
| include_tasks: awx_purge_database_no_local.yml | |||
| include_tasks: purge_database_no_local.yml | |||
| loop: "{{ awx_room_list_no_local_users.splitlines() | flatten(levels=1) }}" | |||
| when: (awx_purge_mode.find("No local users [recommended]") != -1) or (awx_purge_mode.find("Number of users [slower]") != -1) or (awx_purge_mode.find("Number of events [slower]") != -1) | |||
| @@ -116,7 +116,7 @@ | |||
| no_log: True | |||
| - name: Purge all rooms with more then N users | |||
| include_tasks: awx_purge_database_users.yml | |||
| include_tasks: purge_database_users.yml | |||
| loop: "{{ awx_room_list_joined_members.splitlines() | flatten(levels=1) }}" | |||
| when: awx_purge_mode.find("Number of users [slower]") != -1 | |||
| @@ -141,7 +141,7 @@ | |||
| no_log: True | |||
| - name: Purge all rooms with more then N events | |||
| include_tasks: awx_purge_database_events.yml | |||
| include_tasks: purge_database_events.yml | |||
| loop: "{{ awx_room_list_state_events.splitlines() | flatten(levels=1) }}" | |||
| when: awx_purge_mode.find("Number of events [slower]") != -1 | |||
| @@ -84,14 +84,16 @@ | |||
| line: "{{ item.key }}: {{ item.value }}" | |||
| insertafter: '# Corporal Settings Start' | |||
| with_dict: | |||
| 'awx_corporal_http_api_auth_token': '{{ awx_corporal_http_api_auth_token }}' | |||
| when: awx_corporal_http_api_auth_token|length > 0 | |||
| 'matrix_corporal_http_api_auth_token': '{{ matrix_corporal_http_api_auth_token }}' | |||
| when: ( matrix_corporal_http_api_auth_token|length > 0 ) and ( awx_corporal_policy_provider_mode != "Simple Static File" ) | |||
| - name: Record 'Simple Static File' configuration variables in matrix_vars.yml | |||
| delegate_to: 127.0.0.1 | |||
| blockinfile: | |||
| path: '{{ awx_cached_matrix_vars }}' | |||
| insertafter: "# Corporal Policy Provider Settings Start" | |||
| insertbefore: "# Corporal Policy Provider Settings End" | |||
| marker_begin: "Corporal" | |||
| marker_end: "Corporal" | |||
| block: | | |||
| matrix_corporal_policy_provider_config: | | |||
| { | |||
| @@ -38,7 +38,7 @@ | |||
| set_fact: | |||
| awx_synapse_auto_join_rooms_array: |- | |||
| {{ awx_synapse_auto_join_rooms.splitlines() | to_json }} | |||
| when: awx_synapse_auto_join_rooms|length > 0 | |||
| when: awx_synapse_auto_join_rooms | length > 0 | |||
| - name: Record Synapse variable 'matrix_synapse_auto_join_rooms' locally on AWX, if it's not blank | |||
| delegate_to: 127.0.0.1 | |||
| @@ -49,7 +49,7 @@ | |||
| insertafter: '# Synapse Settings Start' | |||
| with_dict: | |||
| "matrix_synapse_auto_join_rooms": "{{ awx_synapse_auto_join_rooms_array }}" | |||
| when: awx_synapse_auto_join_rooms|length > 0 | |||
| when: awx_synapse_auto_join_rooms | length > 0 | |||
| - name: Record Synapse Shared Secret if it's defined | |||
| delegate_to: 127.0.0.1 | |||
| @@ -62,3 +62,8 @@ | |||
| group: matrix | |||
| mode: '0770' | |||
| when: awx_customise_base_domain_website is defined | |||
| - name: Print Discord AppService Bot Link for user | |||
| debug: | |||
| msg: "{{ awx_discord_appservice_link.stdout }}" | |||
| when: awx_discord_appservice_link is defined | |||