mod_external_services
mod_external_services allows clients to discover external services via XEP-0215: External Service Discovery. This is most commonly used to provide access to STUN and TURN services for use with Jingle.
This module is not yet included with Prosody, it’s currently only available in trunk builds and will be in the next major release.
Usage
= {
modules_enabled -- Other modules
"external_services"
}
-- list of services
= {
external_services {
type = "stun",
= "udp",
transport = "stun.example.com",
host = 9876
port }, {
type = "turn",
= "udp",
transport = "turn.example.com",
host = 9876,
port = "hemligt"
secret }
}
Configuration
Services are listed as items in external_services
. Each item can have the a number of properties.
Basic properties
type
- Type of service.
stun
,turn
are common values. transport
- Which transport protocol the service is using.
udp
ortcp
are common values. host
- DNS hostname or IP address where the service is provided. If missing, the config option
external_service_host
(defaults to the VirtualHost name) is used instead. port
- Service port. If missing, the config option
external_service_port
is used instead. restricted
- Boolean used to indicate that credentials are needed to access the service. Set automatically if
password
orsecret
is set.
Static credentials
If the service is to be provided with login credentials that are the same for everyone, they can be set with the properties username
and password
.
Dynamic credentials
The secret used to generate password per TURN REST API is specified with secret
.
If a username prefix is needed, it is set in the username
property.
The ttl
property can be used to specify for how long the credentials are valid. Default is 1 day (86400 seconds).
Defaults
To reduce repetition, host
, port
, ttl
and secret
can be specified once using the options external_service_host
, external_service_port
, external_service_ttl
and external_service_secret
. To indicate where to use the secret, secret = true
is used.
Thus these two examples are equivalent:
= {
external_services {
type = "stun",
= "udp",
transport = "proxy.example.com",
host = 9876
port }, {
type = "turn",
= "udp",
transport = "proxy.example.com",
host = 9876,
port = "hemligt"
secret }
}
---
= "proxy.example.com"
external_service_host = 9876
external_service_port = "hemligt"
external_service_secret = {
external_services {type = "stun", transport = "udp"},
{type = "turn", transport = "udp", secret = true}
}