def get_turn_configuration() -> (List[str], str, bool): """Return TurnConfiguration if setup else empty.""" for file_path, managed in ((OVERRIDDEN_TURN_CONF_PATH, False), (TURN_CONF_PATH, True)): if is_non_empty_file(file_path): with open(file_path) as config_file: config, _, _ = load_yaml_guess_indent(config_file) return (TurnConfiguration(None, config['turn_uris'], config['turn_shared_secret']), managed) return (TurnConfiguration(), True)
def test_revert_to_managed_turn_server_configuration(monkeypatch): """Test setting and getting overridden TURN sever configuration.""" # Had to do all 3 operations because all fixtures were function-scoped _set_managed_configuration(monkeypatch) _set_overridden_configuration(monkeypatch) _set_overridden_configuration(monkeypatch, TurnConfiguration()) _assert_conf(coturn_configuration, True)
def _handle_turn_configuration(old_config, new_config): if not new_config['enable_managed_turn']: new_turn_uris = new_config['turn_uris'].splitlines() new_shared_secret = new_config['shared_secret'] turn_config_changed = \ old_config['turn_uris'] != new_turn_uris or \ old_config['shared_secret'] != new_shared_secret if turn_config_changed: matrixsynapse.update_turn_configuration(TurnConfiguration( None, new_turn_uris, new_shared_secret), managed=False) else: # Remove overridden turn configuration matrixsynapse.update_turn_configuration(TurnConfiguration(), managed=False)
def update_turn_configuration(config: TurnConfiguration, managed=True, force=False): """Update the STUN/TURN server configuration.""" if not force and app.needs_setup(): return params = ['configure-turn'] params += ['--managed'] if managed else [] actions.superuser_run('matrixsynapse', params, input=config.to_json().encode())
def update_turn_configuration(config: TurnConfiguration, managed=True, force=False): """Update the STUN/TURN server configuration.""" setup_helper = globals()['setup_helper'] if not force and setup_helper.get_state() == 'needs-setup': return params = ['configure-turn'] params += ['--managed'] if managed else [] actions.superuser_run('matrixsynapse', params, input=config.to_json().encode())
def _handle_turn_configuration(old_config, new_config): if not new_config['enable_managed_turn']: new_turn_uris = new_config['turn_uris'].splitlines() new_shared_secret = new_config['shared_secret'] turn_config_changed = \ old_config['turn_uris'] != new_turn_uris or \ old_config['shared_secret'] != new_shared_secret if turn_config_changed: ejabberd.update_turn_configuration(TurnConfiguration( None, new_turn_uris, new_shared_secret), managed=False) else: ejabberd.update_turn_configuration(coturn.get_config(), managed=True)
def turn_uris_validator(turn_uris): """Validate list of STUN/TURN Server URIs.""" if not TurnConfiguration.validate_turn_uris(turn_uris.split("\n")): raise ValidationError(_('Invalid list of STUN/TURN Server URIs'))
def get_config(): """Return the coturn server configuration.""" output = actions.superuser_run('coturn', ['get-config']) config = json.loads(output) return TurnConfiguration(config['realm'], [], config['static_auth_secret'])
def test_remove_turn_configuration(monkeypatch): _set_turn_configuration(monkeypatch) _set_turn_configuration(monkeypatch, TurnConfiguration(), False) _assert_conf(TurnConfiguration(), False)
# SPDX-License-Identifier: AGPL-3.0-or-later """ Test module for ejabberd STUN/TURN configuration. """ from unittest.mock import patch from plinth.modules import ejabberd from plinth.modules.coturn.components import TurnConfiguration managed_configuration = TurnConfiguration( 'freedombox.local', [], 'aiP02OAGyOlj6WGuCyqj7iaOsbkC7BUeKvKzhAsTZ8MEwMd3yTwpr2uvbOxgWe51') overridden_configuration = TurnConfiguration( 'public.coturn.site', [], 'BUeKvKzhAsTZ8MEwMd3yTwpr2uvbOxgWe51aiP02OAGyOlj6WGuCyqj7iaOsbkC7') def _set_turn_configuration(monkeypatch, config=managed_configuration, managed=True): monkeypatch.setattr('sys.stdin', config.to_json()) with patch('plinth.action_utils.service_is_running', return_value=False): ejabberd.update_turn_configuration(config, managed=managed) def _assert_conf(expected_configuration, expected_managed): """Assert that ejabberd TURN configuration is as expected.""" config, managed = ejabberd.get_turn_configuration() assert config.uris == expected_configuration.uris assert config.shared_secret == expected_configuration.shared_secret
def get_turn_configuration() -> (TurnConfiguration, bool): """Get the latest STUN/TURN configuration.""" json_config = actions.superuser_run('ejabberd', ['get-turn-config']) tc, managed = json.loads(json_config) return (TurnConfiguration(tc['domain'], tc['uris'], tc['shared_secret']), managed)