plugins/mod_turn_external.lua
author Kim Alvefur <zash@zash.se>
Sat, 27 Apr 2024 15:55:23 +0200
branch0.12
changeset 13491 84fa880bf476
parent 12441 9f5d0b77e3df
child 12981 74b9e05af71e
permissions -rw-r--r--
mod_blocklist: Drop blocked messages without error, option to restore compliant behavior From XEP-0191: > For message stanzas, the server SHOULD return an error, which SHOULD > be <service-unavailable/>. Following this may leak to a blocked JID that they have been blocked, which seems contrary to the goal of pretending to be perpetually offline.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12286
fe5a87b5972f mod_turn_external: Simplify configuration
Kim Alvefur <zash@zash.se>
parents: 11603
diff changeset
     1
local set = require "util.set";
fe5a87b5972f mod_turn_external: Simplify configuration
Kim Alvefur <zash@zash.se>
parents: 11603
diff changeset
     2
11603
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     3
local secret = module:get_option_string("turn_external_secret");
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     4
local host = module:get_option_string("turn_external_host", module.host);
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     5
local user = module:get_option_string("turn_external_user");
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     6
local port = module:get_option_number("turn_external_port", 3478);
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     7
local ttl = module:get_option_number("turn_external_ttl", 86400);
12286
fe5a87b5972f mod_turn_external: Simplify configuration
Kim Alvefur <zash@zash.se>
parents: 11603
diff changeset
     8
local tcp = module:get_option_boolean("turn_external_tcp", false);
12294
aa7a8aa64d3f mod_turn_external: Fix type of config option (thanks mirux)
Kim Alvefur <zash@zash.se>
parents: 12287
diff changeset
     9
local tls_port = module:get_option_number("turn_external_tls_port");
11603
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    10
12441
9f5d0b77e3df mod_turn_external: Update status and friendlier handling of missing secret option (fixes #1727)
Matthew Wild <mwild1@gmail.com>
parents: 12294
diff changeset
    11
if not secret then
9f5d0b77e3df mod_turn_external: Update status and friendlier handling of missing secret option (fixes #1727)
Matthew Wild <mwild1@gmail.com>
parents: 12294
diff changeset
    12
	module:log_status("error", "Failed to initialize: the 'turn_external_secret' option is not set in your configuration");
9f5d0b77e3df mod_turn_external: Update status and friendlier handling of missing secret option (fixes #1727)
Matthew Wild <mwild1@gmail.com>
parents: 12294
diff changeset
    13
	return;
9f5d0b77e3df mod_turn_external: Update status and friendlier handling of missing secret option (fixes #1727)
Matthew Wild <mwild1@gmail.com>
parents: 12294
diff changeset
    14
end
11603
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    15
12286
fe5a87b5972f mod_turn_external: Simplify configuration
Kim Alvefur <zash@zash.se>
parents: 11603
diff changeset
    16
local services = set.new({ "stun-udp"; "turn-udp" });
fe5a87b5972f mod_turn_external: Simplify configuration
Kim Alvefur <zash@zash.se>
parents: 11603
diff changeset
    17
if tcp then
fe5a87b5972f mod_turn_external: Simplify configuration
Kim Alvefur <zash@zash.se>
parents: 11603
diff changeset
    18
	services:add("stun-tcp");
fe5a87b5972f mod_turn_external: Simplify configuration
Kim Alvefur <zash@zash.se>
parents: 11603
diff changeset
    19
	services:add("turn-tcp");
fe5a87b5972f mod_turn_external: Simplify configuration
Kim Alvefur <zash@zash.se>
parents: 11603
diff changeset
    20
end
12287
b5686debb497 mod_turn_external: Add option to enable TURN over TLS
Kim Alvefur <zash@zash.se>
parents: 12286
diff changeset
    21
if tls_port then
b5686debb497 mod_turn_external: Add option to enable TURN over TLS
Kim Alvefur <zash@zash.se>
parents: 12286
diff changeset
    22
	services:add("turns-tcp");
b5686debb497 mod_turn_external: Add option to enable TURN over TLS
Kim Alvefur <zash@zash.se>
parents: 12286
diff changeset
    23
end
12286
fe5a87b5972f mod_turn_external: Simplify configuration
Kim Alvefur <zash@zash.se>
parents: 11603
diff changeset
    24
11603
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    25
module:depends "external_services";
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    26
12287
b5686debb497 mod_turn_external: Add option to enable TURN over TLS
Kim Alvefur <zash@zash.se>
parents: 12286
diff changeset
    27
for _, type in ipairs({ "stun"; "turn"; "turns" }) do
11603
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    28
	for _, transport in ipairs({"udp"; "tcp"}) do
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    29
		if services:contains(type .. "-" .. transport) then
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    30
			module:add_item("external_service", {
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    31
				type = type;
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    32
				transport = transport;
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    33
				host = host;
12287
b5686debb497 mod_turn_external: Add option to enable TURN over TLS
Kim Alvefur <zash@zash.se>
parents: 12286
diff changeset
    34
				port = type == "turns" and tls_port or port;
11603
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    35
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    36
				username = type == "turn" and user or nil;
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    37
				secret = type == "turn" and secret or nil;
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    38
				ttl = type == "turn" and ttl or nil;
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    39
			})
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    40
		end
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    41
	end
ed405b6357a8 mod_turn_external: Simple module to offer TURN(+STUN) via mod_external_services
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    42
end