IMPORTANT: due to a drive failure, as of 13-Mar-2021, the Mercurial repository had to be re-mirrored, which changed every commit SHA. The old SHAs and trees are backed up in the vault branches. Please migrate to the new branches as soon as you can.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
prosody/plugins/mod_turn_external.lua

42 lines
1.3 KiB

local set = require "prosody.util.set";
local secret = module:get_option_string("turn_external_secret");
local host = module:get_option_string("turn_external_host", module.host);
local user = module:get_option_string("turn_external_user");
local port = module:get_option_integer("turn_external_port", 3478, 1, 65535);
local ttl = module:get_option_period("turn_external_ttl", "1 day");
local tcp = module:get_option_boolean("turn_external_tcp", false);
local tls_port = module:get_option_integer("turn_external_tls_port", nil, 1, 65535);
if not secret then
module:log_status("error", "Failed to initialize: the 'turn_external_secret' option is not set in your configuration");
return;
end
local services = set.new({ "stun-udp"; "turn-udp" });
if tcp then
services:add("stun-tcp");
services:add("turn-tcp");
end
if tls_port then
services:add("turns-tcp");
end
module:depends "external_services";
for _, type in ipairs({ "stun"; "turn"; "turns" }) do
for _, transport in ipairs({"udp"; "tcp"}) do
if services:contains(type .. "-" .. transport) then
module:add_item("external_service", {
type = type;
transport = transport;
host = host;
port = type == "turns" and tls_port or port;
username = type == "turn" and user or nil;
secret = type == "turn" and secret or nil;
ttl = type == "turn" and ttl or nil;
})
end
end
end