コード例 #1
0
ファイル: __init__.py プロジェクト: alexdeathway/FreedomBox
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)
コード例 #2
0
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)
コード例 #3
0
ファイル: views.py プロジェクト: alexdeathway/FreedomBox
    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)
コード例 #4
0
ファイル: __init__.py プロジェクト: JoKeyser/Plinth
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())
コード例 #5
0
ファイル: __init__.py プロジェクト: alexdeathway/FreedomBox
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())
コード例 #6
0
    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)
コード例 #7
0
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'))
コード例 #8
0
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'])
コード例 #9
0
def test_remove_turn_configuration(monkeypatch):
    _set_turn_configuration(monkeypatch)
    _set_turn_configuration(monkeypatch, TurnConfiguration(), False)
    _assert_conf(TurnConfiguration(), False)
コード例 #10
0
# 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
コード例 #11
0
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)