mod_turn_external/mod_turn_external.lua
author Kim Alvefur <zash@zash.se>
Tue, 15 Feb 2022 21:51:52 +0100
changeset 4899 2542fd80cd15
parent 4898 bfa2cca2bdd5
permissions -rw-r--r--
mod_turn_external: Fix type of config option (thanks mirux) There was a separate boolean option to enable TLS before, but it was merged with the port number option and it seems the typed API interface got confused. Backport of trunk rev aa7a8aa64d3f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4898
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     1
local set = require "util.set";
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     2
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     3
local secret = module:get_option_string("turn_external_secret");
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     4
local host = module:get_option_string("turn_external_host", module.host);
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     5
local user = module:get_option_string("turn_external_user");
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     6
local port = module:get_option_number("turn_external_port", 3478);
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     7
local ttl = module:get_option_number("turn_external_ttl", 86400);
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     8
local tcp = module:get_option_boolean("turn_external_tcp", false);
4899
2542fd80cd15 mod_turn_external: Fix type of config option (thanks mirux)
Kim Alvefur <zash@zash.se>
parents: 4898
diff changeset
     9
local tls_port = module:get_option_number("turn_external_tls_port");
4898
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    10
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    11
if not secret then error("mod_" .. module.name .. " requires that 'turn_external_secret' be set") end
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    12
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    13
local services = set.new({ "stun-udp"; "turn-udp" });
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    14
if tcp then
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    15
	services:add("stun-tcp");
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    16
	services:add("turn-tcp");
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    17
end
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    18
if tls_port then
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    19
	services:add("turns-tcp");
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    20
end
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    21
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    22
module:depends "external_services";
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    23
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    24
for _, type in ipairs({ "stun"; "turn"; "turns" }) do
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    25
	for _, transport in ipairs({"udp"; "tcp"}) do
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    26
		if services:contains(type .. "-" .. transport) then
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    27
			module:add_item("external_service", {
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    28
				type = type;
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    29
				transport = transport;
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    30
				host = host;
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    31
				port = type == "turns" and tls_port or port;
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    32
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    33
				username = type == "turn" and user or nil;
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    34
				secret = type == "turn" and secret or nil;
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    35
				ttl = type == "turn" and ttl or nil;
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    36
			})
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    37
		end
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    38
	end
bfa2cca2bdd5 mod_turn_external: Import from prosody trunk @ ed23bbf3b946
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    39
end