aboutsummaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
Diffstat (limited to 'util')
-rw-r--r--util/adminstream.lua9
-rw-r--r--util/prosodyctl/check.lua18
2 files changed, 21 insertions, 6 deletions
diff --git a/util/adminstream.lua b/util/adminstream.lua
index 703deb07..4075aa05 100644
--- a/util/adminstream.lua
+++ b/util/adminstream.lua
@@ -139,6 +139,15 @@ end
local function new_connection(socket_path, listeners)
local have_unix, unix = pcall(require, "socket.unix");
+ if have_unix and type(unix) == "function" then
+ -- COMPAT #1717
+ -- Before the introduction of datagram support, only the stream socket
+ -- constructor was exported instead of a module table. Due to the lack of a
+ -- proper release of LuaSocket, distros have settled on shipping either the
+ -- last RC tag or some commit since then.
+ -- Here we accomodate both variants.
+ unix = { stream = unix };
+ end
if type(unix) ~= "table" then
have_unix = false;
end
diff --git a/util/prosodyctl/check.lua b/util/prosodyctl/check.lua
index 354cc3c3..fc12caaa 100644
--- a/util/prosodyctl/check.lua
+++ b/util/prosodyctl/check.lua
@@ -62,9 +62,7 @@ local function check_probe(base_url, probe_module, target)
end
local function check_turn_service(turn_service, ping_service)
- local array = require "util.array";
local ip = require "util.ip";
- local set = require "util.set";
local stun = require "net.stun";
-- Create UDP socket for communication with the server
@@ -251,9 +249,17 @@ local function check_turn_service(turn_service, ping_service)
return result;
end
- local relayed_address_set = set.new(array.pluck(result.relayed_addresses, "address"));
- if not relayed_address_set:contains(result.external_ip_pong.address) then
+ local relay_address_found, relay_port_matches;
+ for _, relayed_address in ipairs(result.relayed_addresses) do
+ if relayed_address.address == result.external_ip_pong.address then
+ relay_address_found = true;
+ relay_port_matches = result.external_ip_pong.port == relayed_address.port;
+ end
+ end
+ if not relay_address_found then
table.insert(result.warnings, "TURN external IP vs relay address mismatch! Is the TURN server behind a NAT and misconfigured?");
+ elseif not relay_port_matches then
+ table.insert(result.warnings, "External port does not match reported relay port! This is probably caused by a NAT in front of the TURN server.");
end
--
@@ -661,7 +667,7 @@ local function check(arg)
end
end
end
- for host, host_config in enabled_hosts() do
+ for host, host_config in it.filter(skip_bare_jid_hosts, enabled_hosts()) do
local is_component = not not host_config.component_module;
if is_component then
local parent_domain = host:match("^[^.]+%.(.+)$");
@@ -1284,7 +1290,7 @@ local function check(arg)
end
end
if result.external_ip_pong then
- print(("TURN external IP: %s"):format(result.external_ip_pong.address));
+ print(("TURN external address: %s:%d"):format(result.external_ip_pong.address, result.external_ip_pong.port));
end
end