2016-01-06 23:26:29 -05:00
|
|
|
# Copyright 2014-2016 OpenMarket Ltd
|
2014-09-23 12:16:13 -04:00
|
|
|
#
|
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
# you may not use this file except in compliance with the License.
|
|
|
|
# You may obtain a copy of the License at
|
|
|
|
#
|
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
#
|
|
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
# See the License for the specific language governing permissions and
|
|
|
|
# limitations under the License.
|
|
|
|
|
2022-04-11 12:07:23 -04:00
|
|
|
from typing import Any
|
|
|
|
|
|
|
|
from synapse.types import JsonDict
|
|
|
|
|
2014-09-23 12:16:13 -04:00
|
|
|
from ._base import Config
|
|
|
|
|
|
|
|
|
|
|
|
class VoipConfig(Config):
|
2019-10-10 04:39:35 -04:00
|
|
|
section = "voip"
|
|
|
|
|
2022-04-11 12:07:23 -04:00
|
|
|
def read_config(self, config: JsonDict, **kwargs: Any) -> None:
|
2015-04-29 23:24:44 -04:00
|
|
|
self.turn_uris = config.get("turn_uris", [])
|
2017-01-19 08:08:20 -05:00
|
|
|
self.turn_shared_secret = config.get("turn_shared_secret")
|
|
|
|
self.turn_username = config.get("turn_username")
|
|
|
|
self.turn_password = config.get("turn_password")
|
2019-03-19 06:06:40 -04:00
|
|
|
self.turn_user_lifetime = self.parse_duration(
|
2019-06-20 05:32:02 -04:00
|
|
|
config.get("turn_user_lifetime", "1h")
|
2019-03-19 06:06:40 -04:00
|
|
|
)
|
2017-03-15 08:40:13 -04:00
|
|
|
self.turn_allow_guests = config.get("turn_allow_guests", True)
|
2015-04-29 23:24:44 -04:00
|
|
|
|
2022-04-11 12:07:23 -04:00
|
|
|
def generate_config_section(self, **kwargs: Any) -> str:
|
2015-04-29 23:24:44 -04:00
|
|
|
return """\
|
2019-02-19 08:54:29 -05:00
|
|
|
## TURN ##
|
2015-04-29 23:24:44 -04:00
|
|
|
|
|
|
|
# The public URIs of the TURN server to give to clients
|
2019-02-19 08:54:29 -05:00
|
|
|
#
|
2018-07-11 10:45:44 -04:00
|
|
|
#turn_uris: []
|
2015-04-29 23:24:44 -04:00
|
|
|
|
|
|
|
# The shared secret used to compute passwords for the TURN server
|
2019-02-19 08:54:29 -05:00
|
|
|
#
|
2018-07-11 10:45:44 -04:00
|
|
|
#turn_shared_secret: "YOUR_SHARED_SECRET"
|
2015-04-29 23:24:44 -04:00
|
|
|
|
2017-01-19 08:35:55 -05:00
|
|
|
# The Username and password if the TURN server needs them and
|
|
|
|
# does not use a token
|
2019-02-19 08:54:29 -05:00
|
|
|
#
|
2017-01-19 08:35:55 -05:00
|
|
|
#turn_username: "TURNSERVER_USERNAME"
|
|
|
|
#turn_password: "TURNSERVER_PASSWORD"
|
|
|
|
|
2015-04-29 23:24:44 -04:00
|
|
|
# How long generated TURN credentials last
|
2019-02-19 08:54:29 -05:00
|
|
|
#
|
2019-03-19 06:06:40 -04:00
|
|
|
#turn_user_lifetime: 1h
|
2017-03-15 08:22:18 -04:00
|
|
|
|
|
|
|
# Whether guests should be allowed to use the TURN server.
|
2017-03-15 08:40:42 -04:00
|
|
|
# This defaults to True, otherwise VoIP will be unreliable for guests.
|
2017-03-15 08:22:18 -04:00
|
|
|
# However, it does introduce a slight security risk as it allows users to
|
|
|
|
# connect to arbitrary endpoints without having first signed up for a
|
|
|
|
# valid account (e.g. by passing a CAPTCHA).
|
2019-02-19 08:54:29 -05:00
|
|
|
#
|
2019-10-23 08:22:54 -04:00
|
|
|
#turn_allow_guests: true
|
2015-04-29 23:24:44 -04:00
|
|
|
"""
|