X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=util%2Fdependencies.lua;h=5e3b03d833c63c8723b5853053a2cfed16439557;hb=5ef2d6d938a181d40ef444845f4ec3d136d9842d;hp=109a3332e9180c50dcc0915cd4d3af0d53340584;hpb=a62a2572d37cc8f9cbde0f7cf680690987d13ffb;p=prosody.git diff --git a/util/dependencies.lua b/util/dependencies.lua index 109a3332..5e3b03d8 100644 --- a/util/dependencies.lua +++ b/util/dependencies.lua @@ -6,16 +6,14 @@ -- COPYING file in the source package for more information. -- -module("dependencies", package.seeall) - -function softreq(...) local ok, lib = pcall(require, ...); if ok then return lib; else return nil, lib; end end +local function softreq(...) local ok, lib = pcall(require, ...); if ok then return lib; else return nil, lib; end end -- Required to be able to find packages installed with luarocks if not softreq "luarocks.loader" then -- LuaRocks 2.x softreq "luarocks.require"; -- LuaRocks <1.x end -function missingdep(name, sources, msg) +local function missingdep(name, sources, msg) print(""); print("**************************"); print("Prosody was unable to find "..tostring(name)); @@ -48,7 +46,15 @@ package.preload["util.ztact"] = function () end end; -function check_dependencies() +local function check_dependencies() + if _VERSION < "Lua 5.1" then + print "***********************************" + print("Unsupported Lua version: ".._VERSION); + print("At least Lua 5.1 is required."); + print "***********************************" + return false; + end + local fatal; local lxp = softreq "lxp" @@ -129,21 +135,39 @@ function check_dependencies() return not fatal; end -function log_warnings() +local function log_warnings() + if _VERSION > "Lua 5.1" then + log("warn", "Support for %s is experimental, please report any issues", _VERSION); + end + local ssl = softreq"ssl"; if ssl then local major, minor, veryminor, patched = ssl._VERSION:match("(%d+)%.(%d+)%.?(%d*)(M?)"); if not major or ((tonumber(major) == 0 and (tonumber(minor) or 0) <= 3 and (tonumber(veryminor) or 0) <= 2) and patched ~= "M") then log("error", "This version of LuaSec contains a known bug that causes disconnects, see http://prosody.im/doc/depends"); end end + local lxp = softreq"lxp"; if lxp then if not pcall(lxp.new, { StartDoctypeDecl = false }) then log("error", "The version of LuaExpat on your system leaves Prosody " .."vulnerable to denial-of-service attacks. You should upgrade to " - .."LuaExpat 1.1.1 or higher as soon as possible. See " + .."LuaExpat 1.3.0 or higher as soon as possible. See " + .."http://prosody.im/doc/depends#luaexpat for more information."); + end + if not lxp.new({}).getcurrentbytecount then + log("error", "The version of LuaExpat on your system does not support " + .."stanza size limits, which may leave servers on untrusted " + .."networks (e.g. the internet) vulnerable to denial-of-service " + .."attacks. You should upgrade to LuaExpat 1.3.0 or higher as " + .."soon as possible. See " .."http://prosody.im/doc/depends#luaexpat for more information."); end end end -return _M; +return { + softreq = softreq; + missingdep = missingdep; + check_dependencies = check_dependencies; + log_warnings = log_warnings; +};