mirror of
				https://github.com/spantaleev/matrix-docker-ansible-deploy.git
				synced 2025-11-04 09:08:56 +01:00 
			
		
		
		
	Merge pull request #1338 from GoMatrixHosting/gomatrixhosting-testing
Gomatrixhosting v0.6.3 - rebased properly :)
This commit is contained in:
		
							
								
								
									
										66
									
								
								roles/matrix-awx/surveys/bridge_discord_appservice.json.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								roles/matrix-awx/surveys/bridge_discord_appservice.json.j2
									
									
									
									
									
										Normal file
									
								
							@@ -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"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										62
									
								
								roles/matrix-awx/tasks/bridge_discord_appservice.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								roles/matrix-awx/tasks/bridge_discord_appservice.yml
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user