diff --git a/plinth/modules/matrixsynapse/__init__.py b/plinth/modules/matrixsynapse/__init__.py index 606f6f47d..46ed62539 100644 --- a/plinth/modules/matrixsynapse/__init__.py +++ b/plinth/modules/matrixsynapse/__init__.py @@ -126,6 +126,11 @@ class MatrixSynapseApp(app_module.App): config = self.get_component('turn-matrixsynapse').get_configuration() update_turn_configuration(config, force=True) + def uninstall(self): + """De-configure and uninstall the app.""" + super().uninstall() + privileged.uninstall() + class MatrixSynapseTurnConsumer(TurnConsumer): """Component to manage Coturn configuration for Matrix Synapse.""" diff --git a/plinth/modules/matrixsynapse/privileged.py b/plinth/modules/matrixsynapse/privileged.py index 8aa6fa2a7..f5b48459d 100644 --- a/plinth/modules/matrixsynapse/privileged.py +++ b/plinth/modules/matrixsynapse/privileged.py @@ -339,3 +339,10 @@ def _generate_mac(shared_secret: str, nonce: str, user: str, password: str, mac.update(user_type.encode('utf8')) return mac.hexdigest() + + +@privileged +def uninstall(): + """Delete configuration and data directories.""" + for item in ['/etc/matrix-synapse/conf.d', '/var/lib/matrix-synapse']: + shutil.rmtree(item, ignore_errors=True) diff --git a/plinth/modules/matrixsynapse/tests/test_functional.py b/plinth/modules/matrixsynapse/tests/test_functional.py index 4d844fefd..9a57103fd 100644 --- a/plinth/modules/matrixsynapse/tests/test_functional.py +++ b/plinth/modules/matrixsynapse/tests/test_functional.py @@ -24,3 +24,9 @@ class TestMatrixSynapseApp(functional.BaseAppTests): functional.install(session_browser, self.app_name) functional.app_select_domain_name(session_browser, self.app_name, 'mydomain.example') + + def test_uninstall(self, session_browser): + """After uninstall test, after installing select the domain again.""" + super().test_uninstall(session_browser) + functional.app_select_domain_name(session_browser, self.app_name, + 'mydomain.example')