diff options
author | Matthew Wild <mwild1@gmail.com> | 2022-03-19 09:28:59 +0000 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2022-03-19 09:28:59 +0000 |
commit | 8633709b9f56c5a875bb7c47a4fa5669f438882f (patch) | |
tree | c0d7d99a90ace5283e7013b0020105a7aeff6fc7 /util | |
parent | 860f7d6b7dfccfe3dee023d5cec8130379c5c85c (diff) | |
parent | d0bd1e71d926424142a139eb63ac148eb888a871 (diff) | |
download | prosody-8633709b9f56c5a875bb7c47a4fa5669f438882f.tar.gz prosody-8633709b9f56c5a875bb7c47a4fa5669f438882f.zip |
Merge 0.12->trunk
Diffstat (limited to 'util')
-rw-r--r-- | util/adminstream.lua | 9 | ||||
-rw-r--r-- | util/prosodyctl/check.lua | 18 |
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 |