diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a3e1f16f..0d71ff845 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # 2018-11-28 +## More scripts + +* matrix-remove-all allows to uninstall everything with a single command +* matrix-make-user-admin allows to upgrade a user's privileges + ## LDAP auth support via matrix-synapse-ldap3 The playbook can now install and configure [LDAP auth support](https://github.com/matrix-org/matrix-synapse-ldap3) for you. diff --git a/docs/registering-users.md b/docs/registering-users.md index b934a55aa..9822979de 100644 --- a/docs/registering-users.md +++ b/docs/registering-users.md @@ -16,4 +16,14 @@ You can do it via this Ansible playbook (make sure to edit the `` ----- -If you've just installed Matrix, **to finalize the installation process**, it's best if you proceed to [Configuring service discovery via .well-known](configuring-well-known.md) \ No newline at end of file +If you've just installed Matrix, **to finalize the installation process**, it's best if you proceed to [Configuring service discovery via .well-known](configuring-well-known.md) + +----- + +The script `/usr/local/bin/matrix-make-user-admin` may be used to upgrade a user's privileges: + +* log on to your server with ssh +* execute with the username: + + /usr/local/bin/matrix-make-user-admin + diff --git a/docs/uninstalling.md b/docs/uninstalling.md index 3693ac1bf..7acb9bcc1 100644 --- a/docs/uninstalling.md +++ b/docs/uninstalling.md @@ -18,4 +18,7 @@ However, if you've installed this on some server where you have other stuff you - uninstall Docker itself, if necessary -- delete the `/matrix` directory (`rm -rf /matrix`) \ No newline at end of file +- delete the `/matrix` directory (`rm -rf /matrix`) + +The script `/usr/local/bin/matrix-remove-all` performs all these steps (**use with caution!**). + diff --git a/roles/matrix-server/tasks/setup/setup_main.yml b/roles/matrix-server/tasks/setup/setup_main.yml index a4da6986b..a147c862d 100644 --- a/roles/matrix-server/tasks/setup/setup_main.yml +++ b/roles/matrix-server/tasks/setup/setup_main.yml @@ -53,4 +53,11 @@ - name: Create Matrix network in Docker shell: cmd: "docker network create --driver=bridge {{ matrix_docker_network }}" - when: "result_check_docker_network.stdout == ''" \ No newline at end of file + when: "result_check_docker_network.stdout == ''" + +- name: Ensure matrix-remove-all script created + template: + src: "{{ role_path }}/templates/usr-local-bin/matrix-remove-all.j2" + dest: "/usr/local/bin/matrix-remove-all" + mode: 0750 + diff --git a/roles/matrix-server/tasks/setup/setup_postgres.yml b/roles/matrix-server/tasks/setup/setup_postgres.yml index bbaebad79..fdf253be5 100644 --- a/roles/matrix-server/tasks/setup/setup_postgres.yml +++ b/roles/matrix-server/tasks/setup/setup_postgres.yml @@ -62,6 +62,12 @@ dest: "/usr/local/bin/matrix-postgres-cli" mode: 0750 +- name: Ensure matrix-make-user-admin script created + template: + src: "{{ role_path }}/templates/usr-local-bin/matrix-make-user-admin.j2" + dest: "/usr/local/bin/matrix-make-user-admin" + mode: 0750 + # # Tasks related to setting up an internal postgres server # diff --git a/roles/matrix-server/templates/usr-local-bin/matrix-make-user-admin.j2 b/roles/matrix-server/templates/usr-local-bin/matrix-make-user-admin.j2 new file mode 100644 index 000000000..37d723708 --- /dev/null +++ b/roles/matrix-server/templates/usr-local-bin/matrix-make-user-admin.j2 @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ $# -ne 1 ]; then + echo "Usage: "$0" " + exit 1 +fi + +docker run \ + -it \ + --rm \ + --env-file={{ matrix_environment_variables_data_path }}/env-postgres-pgsql-docker \ + --network {{ matrix_docker_network }} \ + {{ matrix_postgres_docker_image_to_use }} \ + psql -h {{ matrix_postgres_connection_hostname }} -c "UPDATE users set admin=1 WHERE name like '@$1:{{ host_specific_hostname_identity }}'" + diff --git a/roles/matrix-server/templates/usr-local-bin/matrix-remove-all.j2 b/roles/matrix-server/templates/usr-local-bin/matrix-remove-all.j2 new file mode 100644 index 000000000..5614b0e37 --- /dev/null +++ b/roles/matrix-server/templates/usr-local-bin/matrix-remove-all.j2 @@ -0,0 +1,34 @@ +#!/bin/bash + +if [ "$(id -u)" != "0" ]; then + echo "This script must be executed as root! Aborting." + exit 1 +fi + +echo "WARNING! You are about to remove everything the playbook installs for matrix.{{ host_specific_hostname_identity }}: matrix, docker images,..." +echo -n "If you're sure you want to do this, type: 'Yes, I really want to remove everything!'" +read sure + +if [ "$sure" != "Yes, I really want to remove everything!" ]; then + echo "Good thing I asked, exiting" + exit 0 +else + echo "Stop and remove matrix services" + for s in $(find /etc/systemd/system/ -name "matrix-*" -printf "%f\n"); do + systemctl stop $s + rm -f /etc/systemd/system/$s + done + systemctl daemon-reload + echo "Remove matrix cronjobs" + find /etc/cron.d/ -name "matrix-*" -delete + echo "Remove matrix scripts" + find /usr/local/bin/ -name "matrix-*" -delete + echo "Remove every docker images" + docker rmi $(docker images -aq) + echo "Remove docker matrix network" + docker network rm matrix + echo "Remove /matrix directory" + rm -fr /matrix + exit 0 +fi +