Add Go Skype Bridge
Based on mautrix-whatsapp, as that's what the bridge software is based on.
This commit is contained in:
		
							
								
								
									
										21
									
								
								roles/matrix-bridge-go-skype-bridge/tasks/init.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								roles/matrix-bridge-go-skype-bridge/tasks/init.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| --- | ||||
| - set_fact: | ||||
|     matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-go-skype-bridge.service'] }}" | ||||
|   when: matrix_go_skype_bridge_enabled|bool | ||||
|  | ||||
| # If the matrix-synapse role is not used, these variables may not exist. | ||||
| - set_fact: | ||||
|     matrix_synapse_container_extra_arguments: > | ||||
|       {{ | ||||
|         matrix_synapse_container_extra_arguments|default([]) | ||||
|         + | ||||
|         ["--mount type=bind,src={{ matrix_go_skype_bridge_config_path }}/registration.yaml,dst=/matrix-go-skype-bridge-registration.yaml,ro"] | ||||
|       }} | ||||
|  | ||||
|     matrix_synapse_app_service_config_files: > | ||||
|       {{ | ||||
|         matrix_synapse_app_service_config_files|default([]) | ||||
|         + | ||||
|         ["/matrix-go-skype-bridge-registration.yaml"] | ||||
|       }} | ||||
|   when: matrix_go_skype_bridge_enabled|bool | ||||
							
								
								
									
										23
									
								
								roles/matrix-bridge-go-skype-bridge/tasks/main.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								roles/matrix-bridge-go-skype-bridge/tasks/main.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| --- | ||||
|  | ||||
| - import_tasks: "{{ role_path }}/tasks/init.yml" | ||||
|   tags: | ||||
|     - always | ||||
|  | ||||
| - import_tasks: "{{ role_path }}/tasks/validate_config.yml" | ||||
|   when: "run_setup|bool and matrix_go_skype_bridge_enabled|bool" | ||||
|   tags: | ||||
|     - setup-all | ||||
|     - setup-go-skype-bridge | ||||
|  | ||||
| - import_tasks: "{{ role_path }}/tasks/setup_install.yml" | ||||
|   when: "run_setup|bool and matrix_go_skype_bridge_enabled|bool" | ||||
|   tags: | ||||
|     - setup-all | ||||
|     - setup-go-skype-bridge | ||||
|  | ||||
| - import_tasks: "{{ role_path }}/tasks/setup_uninstall.yml" | ||||
|   when: "run_setup|bool and not matrix_go_skype_bridge_enabled|bool" | ||||
|   tags: | ||||
|     - setup-all | ||||
|     - setup-go-skype-bridge | ||||
							
								
								
									
										147
									
								
								roles/matrix-bridge-go-skype-bridge/tasks/setup_install.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										147
									
								
								roles/matrix-bridge-go-skype-bridge/tasks/setup_install.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,147 @@ | ||||
| --- | ||||
|  | ||||
| # If the matrix-synapse role is not used, `matrix_synapse_role_executed` won't exist. | ||||
| # We don't want to fail in such cases. | ||||
| - name: Fail if matrix-synapse role already executed | ||||
|   fail: | ||||
|     msg: >- | ||||
|       The matrix-bridge-go-skype-bridge role needs to execute before the matrix-synapse role. | ||||
|   when: "matrix_synapse_role_executed|default(False)" | ||||
|  | ||||
| - set_fact: | ||||
|     matrix_go_skype_bridge_requires_restart: false | ||||
|  | ||||
| - block: | ||||
|     - name: Check if an SQLite database already exists | ||||
|       stat: | ||||
|         path: "{{ matrix_go_skype_bridge_sqlite_database_path_local }}" | ||||
|       register: matrix_go_skype_bridge_sqlite_database_path_local_stat_result | ||||
|  | ||||
|     - block: | ||||
|         - set_fact: | ||||
|             matrix_postgres_db_migration_request: | ||||
|               src: "{{ matrix_go_skype_bridge_sqlite_database_path_local }}" | ||||
|               dst: "{{ matrix_go_skype_bridge_database_connection_string }}" | ||||
|               caller: "{{ role_path|basename }}" | ||||
|               engine_variable_name: 'matrix_go_skype_bridge_database_engine' | ||||
|               engine_old: 'sqlite' | ||||
|               systemd_services_to_stop: ['matrix-go-skype-bridge.service'] | ||||
|               pgloader_options: ['--with "quote identifiers"'] | ||||
|  | ||||
|         - import_tasks: "{{ role_path }}/../matrix-postgres/tasks/util/migrate_db_to_postgres.yml" | ||||
|  | ||||
|         - set_fact: | ||||
|             matrix_go_skype_bridge_requires_restart: true | ||||
|       when: "matrix_go_skype_bridge_sqlite_database_path_local_stat_result.stat.exists|bool" | ||||
|   when: "matrix_go_skype_bridge_database_engine == 'postgres'" | ||||
|  | ||||
|  | ||||
| - name: Ensure Go Skype Bridge paths exists | ||||
|   file: | ||||
|     path: "{{ item.path }}" | ||||
|     state: directory | ||||
|     mode: 0750 | ||||
|     owner: "{{ matrix_user_username }}" | ||||
|     group: "{{ matrix_user_groupname }}" | ||||
|   with_items: | ||||
|     - {path: "{{ matrix_go_skype_bridge_base_path }}", when: true} | ||||
|     - {path: "{{ matrix_go_skype_bridge_config_path }}", when: true} | ||||
|     - {path: "{{ matrix_go_skype_bridge_data_path }}", when: true} | ||||
|     - {path: "{{ matrix_go_skype_bridge_docker_src_files_path }}", when: "{{ matrix_go_skype_bridge_container_image_self_build }}"} | ||||
|   when: item.when|bool | ||||
|  | ||||
| - name: Ensure Go Skype Bridge image is pulled | ||||
|   docker_image: | ||||
|     name: "{{ matrix_go_skype_bridge_docker_image }}" | ||||
|     source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" | ||||
|     force_source: "{{ matrix_go_skype_bridge_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" | ||||
|     force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_go_skype_bridge_docker_image_force_pull }}" | ||||
|   when: not matrix_go_skype_bridge_container_image_self_build | ||||
|   register: result | ||||
|   retries: "{{ matrix_container_retries_count }}" | ||||
|   delay: "{{ matrix_container_retries_delay }}" | ||||
|   until: result is not failed | ||||
|  | ||||
| - name: Ensure Go Skype Bridge repository is present on self-build | ||||
|   git: | ||||
|     repo: "{{ matrix_go_skype_bridge_container_image_self_build_repo }}" | ||||
|     dest: "{{ matrix_go_skype_bridge_docker_src_files_path }}" | ||||
|     version: "{{ matrix_go_skype_bridge_container_image_self_build_branch }}" | ||||
|     force: "yes" | ||||
|   become: true | ||||
|   become_user: "{{ matrix_user_username }}" | ||||
|   register: matrix_go_skype_bridge_git_pull_results | ||||
|   when: "matrix_go_skype_bridge_container_image_self_build|bool" | ||||
|  | ||||
| - name: Ensure Go Skype Bridge Docker image is built | ||||
|   docker_image: | ||||
|     name: "{{ matrix_go_skype_bridge_docker_image }}" | ||||
|     source: build | ||||
|     force_source: "{{ matrix_go_skype_bridge_git_pull_results.changed if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" | ||||
|     force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_go_skype_bridge_git_pull_results.changed }}" | ||||
|     build: | ||||
|       dockerfile: Dockerfile | ||||
|       path: "{{ matrix_go_skype_bridge_docker_src_files_path }}" | ||||
|       pull: true | ||||
|   when: "matrix_go_skype_bridge_container_image_self_build|bool" | ||||
|  | ||||
| - name: Check if an old database file exists | ||||
|   stat: | ||||
|     path: "{{ matrix_go_skype_bridge_base_path }}/go-skype-bridge.db" | ||||
|   register: matrix_go_skype_bridge_stat_database | ||||
|  | ||||
| - name: Check if an old matrix state file exists | ||||
|   stat: | ||||
|     path: "{{ matrix_go_skype_bridge_base_path }}/mx-state.json" | ||||
|   register: matrix_go_skype_bridge_stat_mx_state | ||||
|  | ||||
| - name: (Data relocation) Ensure matrix-go-skype-bridge.service is stopped | ||||
|   service: | ||||
|     name: matrix-go-skype-bridge | ||||
|     state: stopped | ||||
|     enabled: false | ||||
|     daemon_reload: true | ||||
|   failed_when: false | ||||
|   when: "matrix_go_skype_bridge_stat_database.stat.exists" | ||||
|  | ||||
| - name: (Data relocation) Move go-skype-bridge database file to ./data directory | ||||
|   command: "mv {{ matrix_go_skype_bridge_base_path }}/go-skype-bridge.db {{ matrix_go_skype_bridge_data_path }}/go-skype-bridge.db" | ||||
|   when: "matrix_go_skype_bridge_stat_database.stat.exists" | ||||
|  | ||||
| - name: (Data relocation) Move go-skype-bridge mx-state file to ./data directory | ||||
|   command: "mv {{ matrix_go_skype_bridge_base_path }}/mx-state.json {{ matrix_go_skype_bridge_data_path }}/mx-state.json" | ||||
|   when: "matrix_go_skype_bridge_stat_mx_state.stat.exists" | ||||
|  | ||||
| - name: Ensure go-skype-bridge config.yaml installed | ||||
|   copy: | ||||
|     content: "{{ matrix_go_skype_bridge_configuration|to_nice_yaml(indent=2, width=999999) }}" | ||||
|     dest: "{{ matrix_go_skype_bridge_config_path }}/config.yaml" | ||||
|     mode: 0644 | ||||
|     owner: "{{ matrix_user_username }}" | ||||
|     group: "{{ matrix_user_groupname }}" | ||||
|  | ||||
| - name: Ensure go-skype-bridge registration.yaml installed | ||||
|   copy: | ||||
|     content: "{{ matrix_go_skype_bridge_registration|to_nice_yaml(indent=2, width=999999) }}" | ||||
|     dest: "{{ matrix_go_skype_bridge_config_path }}/registration.yaml" | ||||
|     mode: 0644 | ||||
|     owner: "{{ matrix_user_username }}" | ||||
|     group: "{{ matrix_user_groupname }}" | ||||
|  | ||||
| - name: Ensure matrix-go-skype-bridge.service installed | ||||
|   template: | ||||
|     src: "{{ role_path }}/templates/systemd/matrix-go-skype-bridge.service.j2" | ||||
|     dest: "{{ matrix_systemd_path }}/matrix-go-skype-bridge.service" | ||||
|     mode: 0644 | ||||
|   register: matrix_go_skype_bridge_systemd_service_result | ||||
|  | ||||
| - name: Ensure systemd reloaded after matrix-go-skype-bridge.service installation | ||||
|   service: | ||||
|     daemon_reload: true | ||||
|   when: "matrix_go_skype_bridge_systemd_service_result.changed" | ||||
|  | ||||
| - name: Ensure matrix-go-skype-bridge.service restarted, if necessary | ||||
|   service: | ||||
|     name: "matrix-go-skype-bridge.service" | ||||
|     state: restarted | ||||
|   when: "matrix_go_skype_bridge_requires_restart|bool" | ||||
| @@ -0,0 +1,25 @@ | ||||
| --- | ||||
|  | ||||
| - name: Check existence of matrix-go-skype-bridge service | ||||
|   stat: | ||||
|     path: "/etc/systemd/system/matrix-go-skype-bridge.service" | ||||
|   register: matrix_go_skype_bridge_service_stat | ||||
|  | ||||
| - name: Ensure matrix-go-skype-bridge is stopped | ||||
|   service: | ||||
|     name: matrix-go-skype-bridge | ||||
|     state: stopped | ||||
|     enabled: false | ||||
|     daemon_reload: true | ||||
|   when: "matrix_go_skype_bridge_service_stat.stat.exists" | ||||
|  | ||||
| - name: Ensure matrix-go-skype-bridge.service doesn't exist | ||||
|   file: | ||||
|     path: "/etc/systemd/system/matrix-go-skype-bridge.service" | ||||
|     state: absent | ||||
|   when: "matrix_go_skype_bridge_service_stat.stat.exists" | ||||
|  | ||||
| - name: Ensure systemd reloaded after matrix-go-skype-bridge.service removal | ||||
|   service: | ||||
|     daemon_reload: true | ||||
|   when: "matrix_go_skype_bridge_service_stat.stat.exists" | ||||
| @@ -0,0 +1,10 @@ | ||||
| --- | ||||
|  | ||||
| - name: Fail if required settings not defined | ||||
|   fail: | ||||
|     msg: >- | ||||
|       You need to define a required configuration setting (`{{ item }}`). | ||||
|   when: "vars[item] == ''" | ||||
|   with_items: | ||||
|     - "matrix_go_skype_bridge_appservice_token" | ||||
|     - "matrix_go_skype_bridge_homeserver_token" | ||||
		Reference in New Issue
	
	Block a user