Skip to content

Commit

Permalink
Add config option turn_shared_secret_path (#17690)
Browse files Browse the repository at this point in the history
Co-authored-by: Andrew Morgan <[email protected]>
  • Loading branch information
V02460 and anoadragon453 authored Sep 10, 2024
1 parent 6044105 commit e06e3c4
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 1 deletion.
1 change: 1 addition & 0 deletions changelog.d/17690.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add config option `turn_shared_secret_path`.
16 changes: 16 additions & 0 deletions docs/usage/configuration/config_documentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -2315,6 +2315,22 @@ Example configuration:
```yaml
turn_shared_secret: "YOUR_SHARED_SECRET"
```
---
### `turn_shared_secret_path`

An alternative to [`turn_shared_secret`](#turn_shared_secret):
allows the shared secret to be specified in an external file.

The file should be a plain text file, containing only the shared secret.
Synapse reads the shared secret from the given file once at startup.

Example configuration:
```yaml
turn_shared_secret_path: /path/to/secrets/file
```

_Added in Synapse 1.116.0._

---
### `turn_username` and `turn_password`

Expand Down
14 changes: 13 additions & 1 deletion synapse/config/voip.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,12 @@

from synapse.types import JsonDict

from ._base import Config
from ._base import Config, ConfigError, read_file

CONFLICTING_SHARED_SECRET_OPTS_ERROR = """\
You have configured both `turn_shared_secret` and `turn_shared_secret_path`.
These are mutually incompatible.
"""


class VoipConfig(Config):
Expand All @@ -32,6 +37,13 @@ class VoipConfig(Config):
def read_config(self, config: JsonDict, **kwargs: Any) -> None:
self.turn_uris = config.get("turn_uris", [])
self.turn_shared_secret = config.get("turn_shared_secret")
turn_shared_secret_path = config.get("turn_shared_secret_path")
if turn_shared_secret_path:
if self.turn_shared_secret:
raise ConfigError(CONFLICTING_SHARED_SECRET_OPTS_ERROR)
self.turn_shared_secret = read_file(
turn_shared_secret_path, ("turn_shared_secret_path",)
).strip()
self.turn_username = config.get("turn_username")
self.turn_password = config.get("turn_password")
self.turn_user_lifetime = self.parse_duration(
Expand Down

0 comments on commit e06e3c4

Please sign in to comment.