Software /
code /
prosody
Annotate
util/dependencies.lua @ 11576:fbd1ebd86369
teal: Add new util.hashes APIs
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 20 May 2021 23:09:45 +0200 |
parent | 11141:a5acd6354845 |
child | 11958:31f83a645ce6 |
rev | line source |
---|---|
1523
841d61be198f
Remove version number from copyright headers
Matthew Wild <mwild1@gmail.com>
parents:
896
diff
changeset
|
1 -- Prosody IM |
2923
b7049746bd29
Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents:
2815
diff
changeset
|
2 -- Copyright (C) 2008-2010 Matthew Wild |
b7049746bd29
Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents:
2815
diff
changeset
|
3 -- Copyright (C) 2008-2010 Waqas Hussain |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
4426
diff
changeset
|
4 -- |
758 | 5 -- This project is MIT/X11 licensed. Please see the |
6 -- COPYING file in the source package for more information. | |
519
cccd610a0ef9
Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents:
449
diff
changeset
|
7 -- |
cccd610a0ef9
Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents:
449
diff
changeset
|
8 |
6777
5de6b93d0190
util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents:
6067
diff
changeset
|
9 local function softreq(...) local ok, lib = pcall(require, ...); if ok then return lib; else return nil, lib; end end |
10906
a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
Matthew Wild <mwild1@gmail.com>
parents:
10535
diff
changeset
|
10 local platform_table = require "util.human.io".table({ { width = 15, align = "right" }, { width = "100%" } }); |
408
eb1a0960cefb
Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 |
2513
a8aa7616b154
util.dependencies: Load luarocks.loader/luarocks.require
Matthew Wild <mwild1@gmail.com>
parents:
2510
diff
changeset
|
12 -- Required to be able to find packages installed with luarocks |
a8aa7616b154
util.dependencies: Load luarocks.loader/luarocks.require
Matthew Wild <mwild1@gmail.com>
parents:
2510
diff
changeset
|
13 if not softreq "luarocks.loader" then -- LuaRocks 2.x |
a8aa7616b154
util.dependencies: Load luarocks.loader/luarocks.require
Matthew Wild <mwild1@gmail.com>
parents:
2510
diff
changeset
|
14 softreq "luarocks.require"; -- LuaRocks <1.x |
a8aa7616b154
util.dependencies: Load luarocks.loader/luarocks.require
Matthew Wild <mwild1@gmail.com>
parents:
2510
diff
changeset
|
15 end |
408
eb1a0960cefb
Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 |
10535
29c1a3bf1d29
util.dependencies: Pass require error to error formatting function
Kim Alvefur <zash@zash.se>
parents:
10406
diff
changeset
|
17 local function missingdep(name, sources, msg, err) -- luacheck: ignore err |
29c1a3bf1d29
util.dependencies: Pass require error to error formatting function
Kim Alvefur <zash@zash.se>
parents:
10406
diff
changeset
|
18 -- TODO print something about the underlying error, useful for debugging |
409
2269e9cbe153
Add MD5 to the list of checked dependencies
Matthew Wild <mwild1@gmail.com>
parents:
408
diff
changeset
|
19 print(""); |
2269e9cbe153
Add MD5 to the list of checked dependencies
Matthew Wild <mwild1@gmail.com>
parents:
408
diff
changeset
|
20 print("**************************"); |
408
eb1a0960cefb
Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 print("Prosody was unable to find "..tostring(name)); |
eb1a0960cefb
Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 print("This package can be obtained in the following ways:"); |
eb1a0960cefb
Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 print(""); |
10906
a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
Matthew Wild <mwild1@gmail.com>
parents:
10535
diff
changeset
|
24 for _, row in ipairs(sources) do |
a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
Matthew Wild <mwild1@gmail.com>
parents:
10535
diff
changeset
|
25 print(platform_table(row)); |
408
eb1a0960cefb
Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 end |
410
5ce6801ad2e4
Trivial whitespace fix in the missing dependency message
Matthew Wild <mwild1@gmail.com>
parents:
409
diff
changeset
|
27 print(""); |
408
eb1a0960cefb
Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 print(msg or (name.." is required for Prosody to run, so we will now exit.")); |
7359
a5a080c12c96
Update every link to the documentation to use HTTPS
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
7264
diff
changeset
|
29 print("More help can be found on our website, at https://prosody.im/doc/depends"); |
409
2269e9cbe153
Add MD5 to the list of checked dependencies
Matthew Wild <mwild1@gmail.com>
parents:
408
diff
changeset
|
30 print("**************************"); |
2269e9cbe153
Add MD5 to the list of checked dependencies
Matthew Wild <mwild1@gmail.com>
parents:
408
diff
changeset
|
31 print(""); |
408
eb1a0960cefb
Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
32 end |
eb1a0960cefb
Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
33 |
6777
5de6b93d0190
util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents:
6067
diff
changeset
|
34 local function check_dependencies() |
6778
4009ae66e0f0
util.dependencies: Only abort on Lua versions before 5.1, log a warning about 5.2 and above for now
Kim Alvefur <zash@zash.se>
parents:
6777
diff
changeset
|
35 if _VERSION < "Lua 5.1" then |
6065
9ab23488a17c
util.dependencies: Check for Lua 5.1. We don't currently support any other versions. LuaJIT identifies as 5.1.
Waqas Hussain <waqas20@gmail.com>
parents:
6043
diff
changeset
|
36 print "***********************************" |
9ab23488a17c
util.dependencies: Check for Lua 5.1. We don't currently support any other versions. LuaJIT identifies as 5.1.
Waqas Hussain <waqas20@gmail.com>
parents:
6043
diff
changeset
|
37 print("Unsupported Lua version: ".._VERSION); |
6778
4009ae66e0f0
util.dependencies: Only abort on Lua versions before 5.1, log a warning about 5.2 and above for now
Kim Alvefur <zash@zash.se>
parents:
6777
diff
changeset
|
38 print("At least Lua 5.1 is required."); |
6065
9ab23488a17c
util.dependencies: Check for Lua 5.1. We don't currently support any other versions. LuaJIT identifies as 5.1.
Waqas Hussain <waqas20@gmail.com>
parents:
6043
diff
changeset
|
39 print "***********************************" |
9ab23488a17c
util.dependencies: Check for Lua 5.1. We don't currently support any other versions. LuaJIT identifies as 5.1.
Waqas Hussain <waqas20@gmail.com>
parents:
6043
diff
changeset
|
40 return false; |
9ab23488a17c
util.dependencies: Check for Lua 5.1. We don't currently support any other versions. LuaJIT identifies as 5.1.
Waqas Hussain <waqas20@gmail.com>
parents:
6043
diff
changeset
|
41 end |
9ab23488a17c
util.dependencies: Check for Lua 5.1. We don't currently support any other versions. LuaJIT identifies as 5.1.
Waqas Hussain <waqas20@gmail.com>
parents:
6043
diff
changeset
|
42 |
2510
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
43 local fatal; |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
4426
diff
changeset
|
44 |
10535
29c1a3bf1d29
util.dependencies: Pass require error to error formatting function
Kim Alvefur <zash@zash.se>
parents:
10406
diff
changeset
|
45 local lxp, err = softreq "lxp" |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
4426
diff
changeset
|
46 |
2510
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
47 if not lxp then |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
48 missingdep("luaexpat", { |
10906
a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
Matthew Wild <mwild1@gmail.com>
parents:
10535
diff
changeset
|
49 { "Debian/Ubuntu", "sudo apt-get install lua-expat" }; |
a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
Matthew Wild <mwild1@gmail.com>
parents:
10535
diff
changeset
|
50 { "luarocks", "luarocks install luaexpat" }; |
a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
Matthew Wild <mwild1@gmail.com>
parents:
10535
diff
changeset
|
51 { "Source", "http://matthewwild.co.uk/projects/luaexpat/" }; |
10535
29c1a3bf1d29
util.dependencies: Pass require error to error formatting function
Kim Alvefur <zash@zash.se>
parents:
10406
diff
changeset
|
52 }, nil, err); |
2510
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
53 fatal = true; |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
54 end |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
4426
diff
changeset
|
55 |
10535
29c1a3bf1d29
util.dependencies: Pass require error to error formatting function
Kim Alvefur <zash@zash.se>
parents:
10406
diff
changeset
|
56 local socket, err = softreq "socket" |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
4426
diff
changeset
|
57 |
2510
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
58 if not socket then |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
59 missingdep("luasocket", { |
10906
a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
Matthew Wild <mwild1@gmail.com>
parents:
10535
diff
changeset
|
60 { "Debian/Ubuntu", "sudo apt-get install lua-socket" }; |
a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
Matthew Wild <mwild1@gmail.com>
parents:
10535
diff
changeset
|
61 { "luarocks", "luarocks install luasocket" }; |
a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
Matthew Wild <mwild1@gmail.com>
parents:
10535
diff
changeset
|
62 { "Source", "http://www.tecgraf.puc-rio.br/~diego/professional/luasocket/" }; |
10535
29c1a3bf1d29
util.dependencies: Pass require error to error formatting function
Kim Alvefur <zash@zash.se>
parents:
10406
diff
changeset
|
63 }, nil, err); |
2510
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
64 fatal = true; |
9494
b19f676203fd
util.dependencies: Add compat code for normalization of socket constructors
Kim Alvefur <zash@zash.se>
parents:
8235
diff
changeset
|
65 elseif not socket.tcp4 then |
b19f676203fd
util.dependencies: Add compat code for normalization of socket constructors
Kim Alvefur <zash@zash.se>
parents:
8235
diff
changeset
|
66 -- COMPAT LuaSocket before being IP-version agnostic |
b19f676203fd
util.dependencies: Add compat code for normalization of socket constructors
Kim Alvefur <zash@zash.se>
parents:
8235
diff
changeset
|
67 socket.tcp4 = socket.tcp; |
b19f676203fd
util.dependencies: Add compat code for normalization of socket constructors
Kim Alvefur <zash@zash.se>
parents:
8235
diff
changeset
|
68 socket.udp4 = socket.udp; |
2510
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
69 end |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
4426
diff
changeset
|
70 |
2510
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
71 local lfs, err = softreq "lfs" |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
72 if not lfs then |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
73 missingdep("luafilesystem", { |
10906
a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
Matthew Wild <mwild1@gmail.com>
parents:
10535
diff
changeset
|
74 { "luarocks", "luarocks install luafilesystem" }; |
a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
Matthew Wild <mwild1@gmail.com>
parents:
10535
diff
changeset
|
75 { "Debian/Ubuntu", "sudo apt-get install lua-filesystem" }; |
a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
Matthew Wild <mwild1@gmail.com>
parents:
10535
diff
changeset
|
76 { "Source", "http://www.keplerproject.org/luafilesystem/" }; |
10535
29c1a3bf1d29
util.dependencies: Pass require error to error formatting function
Kim Alvefur <zash@zash.se>
parents:
10406
diff
changeset
|
77 }, nil, err); |
2510
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
78 fatal = true; |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
79 end |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
4426
diff
changeset
|
80 |
10535
29c1a3bf1d29
util.dependencies: Pass require error to error formatting function
Kim Alvefur <zash@zash.se>
parents:
10406
diff
changeset
|
81 local ssl, err = softreq "ssl" |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
4426
diff
changeset
|
82 |
2510
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
83 if not ssl then |
2157
7cb0aa497326
util.dependencies: Clearer message, add homepages, etc.
Matthew Wild <mwild1@gmail.com>
parents:
2156
diff
changeset
|
84 missingdep("LuaSec", { |
10906
a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
Matthew Wild <mwild1@gmail.com>
parents:
10535
diff
changeset
|
85 { "Debian/Ubuntu", "sudo apt-get install lua-sec" }; |
a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
Matthew Wild <mwild1@gmail.com>
parents:
10535
diff
changeset
|
86 { "luarocks", "luarocks install luasec" }; |
a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
Matthew Wild <mwild1@gmail.com>
parents:
10535
diff
changeset
|
87 { "Source", "https://github.com/brunoos/luasec" }; |
10535
29c1a3bf1d29
util.dependencies: Pass require error to error formatting function
Kim Alvefur <zash@zash.se>
parents:
10406
diff
changeset
|
88 }, "SSL/TLS support will not be available", err); |
413
4b61529d0884
Refuse to run without SSL/TLS unless run_without_ssl is set in config
Matthew Wild <mwild1@gmail.com>
parents:
410
diff
changeset
|
89 end |
5776
bd0ff8ae98a8
Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
4426
diff
changeset
|
90 |
10535
29c1a3bf1d29
util.dependencies: Pass require error to error formatting function
Kim Alvefur <zash@zash.se>
parents:
10406
diff
changeset
|
91 local bit, err = softreq"util.bitcompat"; |
7767
36bf9ed87ae1
util.dependencies: Add check and info about lua-bitops (for mod_websockets)
Kim Alvefur <zash@zash.se>
parents:
7766
diff
changeset
|
92 |
36bf9ed87ae1
util.dependencies: Add check and info about lua-bitops (for mod_websockets)
Kim Alvefur <zash@zash.se>
parents:
7766
diff
changeset
|
93 if not bit then |
36bf9ed87ae1
util.dependencies: Add check and info about lua-bitops (for mod_websockets)
Kim Alvefur <zash@zash.se>
parents:
7766
diff
changeset
|
94 missingdep("lua-bitops", { |
10906
a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
Matthew Wild <mwild1@gmail.com>
parents:
10535
diff
changeset
|
95 { "Debian/Ubuntu", "sudo apt-get install lua-bitop" }; |
a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
Matthew Wild <mwild1@gmail.com>
parents:
10535
diff
changeset
|
96 { "luarocks", "luarocks install luabitop" }; |
a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
Matthew Wild <mwild1@gmail.com>
parents:
10535
diff
changeset
|
97 { "Source", "http://bitop.luajit.org/" }; |
10535
29c1a3bf1d29
util.dependencies: Pass require error to error formatting function
Kim Alvefur <zash@zash.se>
parents:
10406
diff
changeset
|
98 }, "WebSocket support will not be available", err); |
7767
36bf9ed87ae1
util.dependencies: Add check and info about lua-bitops (for mod_websockets)
Kim Alvefur <zash@zash.se>
parents:
7766
diff
changeset
|
99 end |
36bf9ed87ae1
util.dependencies: Add check and info about lua-bitops (for mod_websockets)
Kim Alvefur <zash@zash.se>
parents:
7766
diff
changeset
|
100 |
10975
f997e3e8bc23
util.dependencies: Quiet luacheck
Kim Alvefur <zash@zash.se>
parents:
10974
diff
changeset
|
101 local unbound, err = softreq"lunbound"; -- luacheck: ignore 211/err |
f997e3e8bc23
util.dependencies: Quiet luacheck
Kim Alvefur <zash@zash.se>
parents:
10974
diff
changeset
|
102 if not unbound then -- luacheck: ignore 542 |
10974
3b9d533da8fe
util.dependencies: Tone down lua-unbound dependency for now
Kim Alvefur <zash@zash.se>
parents:
10965
diff
changeset
|
103 --[[ TODO Re-enable once packages are available |
10963
80733851be8b
util.dependencies: Add awareness of luaunbound
Kim Alvefur <zash@zash.se>
parents:
10906
diff
changeset
|
104 missingdep("lua-unbound", { |
80733851be8b
util.dependencies: Add awareness of luaunbound
Kim Alvefur <zash@zash.se>
parents:
10906
diff
changeset
|
105 { "luarocks", "luarocks install luaunbound" }; |
80733851be8b
util.dependencies: Add awareness of luaunbound
Kim Alvefur <zash@zash.se>
parents:
10906
diff
changeset
|
106 { "Source", "https://www.zash.se/luaunbound.html" }; |
80733851be8b
util.dependencies: Add awareness of luaunbound
Kim Alvefur <zash@zash.se>
parents:
10906
diff
changeset
|
107 }, "Old DNS resolver library will be used", err); |
10974
3b9d533da8fe
util.dependencies: Tone down lua-unbound dependency for now
Kim Alvefur <zash@zash.se>
parents:
10965
diff
changeset
|
108 --]] |
10965
f5d5fc409680
util.dependencies: Prefer net.unbound over net.adns
Kim Alvefur <zash@zash.se>
parents:
10963
diff
changeset
|
109 else |
f5d5fc409680
util.dependencies: Prefer net.unbound over net.adns
Kim Alvefur <zash@zash.se>
parents:
10963
diff
changeset
|
110 package.preload["net.adns"] = function () |
f5d5fc409680
util.dependencies: Prefer net.unbound over net.adns
Kim Alvefur <zash@zash.se>
parents:
10963
diff
changeset
|
111 local ub = require "net.unbound"; |
f5d5fc409680
util.dependencies: Prefer net.unbound over net.adns
Kim Alvefur <zash@zash.se>
parents:
10963
diff
changeset
|
112 return ub; |
f5d5fc409680
util.dependencies: Prefer net.unbound over net.adns
Kim Alvefur <zash@zash.se>
parents:
10963
diff
changeset
|
113 end |
7767
36bf9ed87ae1
util.dependencies: Add check and info about lua-bitops (for mod_websockets)
Kim Alvefur <zash@zash.se>
parents:
7766
diff
changeset
|
114 end |
36bf9ed87ae1
util.dependencies: Add check and info about lua-bitops (for mod_websockets)
Kim Alvefur <zash@zash.se>
parents:
7766
diff
changeset
|
115 |
2510
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
116 local encodings, err = softreq "util.encodings" |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
117 if not encodings then |
7264
6d97895c2bd7
util.dependencies: Show the full error when a symbol is not found (i.e., when running Prosody with the wrong version of Lua).
Thijs Alkemade <me@thijsalkema.de>
parents:
7007
diff
changeset
|
118 if err:match("module '[^']*' not found") then |
7875
3fbfd7210d78
util.dependencies: Normalize whitespace
Kim Alvefur <zash@zash.se>
parents:
7813
diff
changeset
|
119 missingdep("util.encodings", { |
10906
a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
Matthew Wild <mwild1@gmail.com>
parents:
10535
diff
changeset
|
120 { "Windows", "Make sure you have encodings.dll from the Prosody distribution in util/" }; |
a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
Matthew Wild <mwild1@gmail.com>
parents:
10535
diff
changeset
|
121 { "GNU/Linux", "Run './configure' and 'make' in the Prosody source directory to build util/encodings.so" }; |
7875
3fbfd7210d78
util.dependencies: Normalize whitespace
Kim Alvefur <zash@zash.se>
parents:
7813
diff
changeset
|
122 }); |
2510
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
123 else |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
124 print "***********************************" |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
125 print("util/encodings couldn't be loaded. Check that you have a recent version of libidn"); |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
126 print "" |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
127 print("The full error was:"); |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
128 print(err) |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
129 print "***********************************" |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
130 end |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
131 fatal = true; |
2169
c06fdb6b57bd
util.dependencies: Log an error if the current version of LuaSec installed contains The Bug (thanks Remko)
Matthew Wild <mwild1@gmail.com>
parents:
2158
diff
changeset
|
132 end |
408
eb1a0960cefb
Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
133 |
2510
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
134 local hashes, err = softreq "util.hashes" |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
135 if not hashes then |
7264
6d97895c2bd7
util.dependencies: Show the full error when a symbol is not found (i.e., when running Prosody with the wrong version of Lua).
Thijs Alkemade <me@thijsalkema.de>
parents:
7007
diff
changeset
|
136 if err:match("module '[^']*' not found") then |
7875
3fbfd7210d78
util.dependencies: Normalize whitespace
Kim Alvefur <zash@zash.se>
parents:
7813
diff
changeset
|
137 missingdep("util.hashes", { |
10906
a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
Matthew Wild <mwild1@gmail.com>
parents:
10535
diff
changeset
|
138 { "Windows", "Make sure you have hashes.dll from the Prosody distribution in util/" }; |
a1fed82c44b9
util.dependencies: Use util.human.io.table to replace custom layout code
Matthew Wild <mwild1@gmail.com>
parents:
10535
diff
changeset
|
139 { "GNU/Linux", "Run './configure' and 'make' in the Prosody source directory to build util/hashes.so" }; |
7875
3fbfd7210d78
util.dependencies: Normalize whitespace
Kim Alvefur <zash@zash.se>
parents:
7813
diff
changeset
|
140 }); |
3fbfd7210d78
util.dependencies: Normalize whitespace
Kim Alvefur <zash@zash.se>
parents:
7813
diff
changeset
|
141 else |
2510
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
142 print "***********************************" |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
143 print("util/hashes couldn't be loaded. Check that you have a recent version of OpenSSL (libcrypto in particular)"); |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
144 print "" |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
145 print("The full error was:"); |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
146 print(err) |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
147 print "***********************************" |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
148 end |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
149 fatal = true; |
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
150 end |
7767
36bf9ed87ae1
util.dependencies: Add check and info about lua-bitops (for mod_websockets)
Kim Alvefur <zash@zash.se>
parents:
7766
diff
changeset
|
151 |
2510
97b5ea975cb9
util.dependencies, prosody, prosodyctl: Give util.dependencies a check_dependencies() function so the caller can decide what to do when dependencies aren't met - update prosody/prosodyctl for this change
Matthew Wild <mwild1@gmail.com>
parents:
2299
diff
changeset
|
152 return not fatal; |
408
eb1a0960cefb
Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
153 end |
eb1a0960cefb
Friendlier messages on missing dependencies
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
154 |
6777
5de6b93d0190
util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents:
6067
diff
changeset
|
155 local function log_warnings() |
10049
c523642ea293
util.dependencies: Increase Lua version to warn about to 5.4
Kim Alvefur <zash@zash.se>
parents:
9560
diff
changeset
|
156 if _VERSION > "Lua 5.3" then |
7007
e28fbe6dd424
util.dependencies: Use prosody.log() instead of global log()
Matthew Wild <mwild1@gmail.com>
parents:
6778
diff
changeset
|
157 prosody.log("warn", "Support for %s is experimental, please report any issues", _VERSION); |
6778
4009ae66e0f0
util.dependencies: Only abort on Lua versions before 5.1, log a warning about 5.2 and above for now
Kim Alvefur <zash@zash.se>
parents:
6777
diff
changeset
|
158 end |
6777
5de6b93d0190
util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents:
6067
diff
changeset
|
159 local ssl = softreq"ssl"; |
3904
f93163081b3c
prosody, prosodyctl, util.dependencies: Split checking and logging of dependencies so we can check hard deps before the config and logging is loaded
Matthew Wild <mwild1@gmail.com>
parents:
2925
diff
changeset
|
160 if ssl then |
f93163081b3c
prosody, prosodyctl, util.dependencies: Split checking and logging of dependencies so we can check hard deps before the config and logging is loaded
Matthew Wild <mwild1@gmail.com>
parents:
2925
diff
changeset
|
161 local major, minor, veryminor, patched = ssl._VERSION:match("(%d+)%.(%d+)%.?(%d*)(M?)"); |
f93163081b3c
prosody, prosodyctl, util.dependencies: Split checking and logging of dependencies so we can check hard deps before the config and logging is loaded
Matthew Wild <mwild1@gmail.com>
parents:
2925
diff
changeset
|
162 if not major or ((tonumber(major) == 0 and (tonumber(minor) or 0) <= 3 and (tonumber(veryminor) or 0) <= 2) and patched ~= "M") then |
7359
a5a080c12c96
Update every link to the documentation to use HTTPS
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
7264
diff
changeset
|
163 prosody.log("error", "This version of LuaSec contains a known bug that causes disconnects, see https://prosody.im/doc/depends"); |
3904
f93163081b3c
prosody, prosodyctl, util.dependencies: Split checking and logging of dependencies so we can check hard deps before the config and logging is loaded
Matthew Wild <mwild1@gmail.com>
parents:
2925
diff
changeset
|
164 end |
f93163081b3c
prosody, prosodyctl, util.dependencies: Split checking and logging of dependencies so we can check hard deps before the config and logging is loaded
Matthew Wild <mwild1@gmail.com>
parents:
2925
diff
changeset
|
165 end |
6777
5de6b93d0190
util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents:
6067
diff
changeset
|
166 local lxp = softreq"lxp"; |
4426
ee65aa40ef60
util.dependencies, util.xmppstream: Move LuaExpat version checking to util.dependencies.
Waqas Hussain <waqas20@gmail.com>
parents:
4236
diff
changeset
|
167 if lxp then |
ee65aa40ef60
util.dependencies, util.xmppstream: Move LuaExpat version checking to util.dependencies.
Waqas Hussain <waqas20@gmail.com>
parents:
4236
diff
changeset
|
168 if not pcall(lxp.new, { StartDoctypeDecl = false }) then |
7007
e28fbe6dd424
util.dependencies: Use prosody.log() instead of global log()
Matthew Wild <mwild1@gmail.com>
parents:
6778
diff
changeset
|
169 prosody.log("error", "The version of LuaExpat on your system leaves Prosody " |
4426
ee65aa40ef60
util.dependencies, util.xmppstream: Move LuaExpat version checking to util.dependencies.
Waqas Hussain <waqas20@gmail.com>
parents:
4236
diff
changeset
|
170 .."vulnerable to denial-of-service attacks. You should upgrade to " |
6043
29d2dd705148
util.dependencies: Log error when LuaExpat is not capable of enforcing stanza size limits
Matthew Wild <mwild1@gmail.com>
parents:
4426
diff
changeset
|
171 .."LuaExpat 1.3.0 or higher as soon as possible. See " |
7359
a5a080c12c96
Update every link to the documentation to use HTTPS
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
7264
diff
changeset
|
172 .."https://prosody.im/doc/depends#luaexpat for more information."); |
6043
29d2dd705148
util.dependencies: Log error when LuaExpat is not capable of enforcing stanza size limits
Matthew Wild <mwild1@gmail.com>
parents:
4426
diff
changeset
|
173 end |
29d2dd705148
util.dependencies: Log error when LuaExpat is not capable of enforcing stanza size limits
Matthew Wild <mwild1@gmail.com>
parents:
4426
diff
changeset
|
174 if not lxp.new({}).getcurrentbytecount then |
7007
e28fbe6dd424
util.dependencies: Use prosody.log() instead of global log()
Matthew Wild <mwild1@gmail.com>
parents:
6778
diff
changeset
|
175 prosody.log("error", "The version of LuaExpat on your system does not support " |
6043
29d2dd705148
util.dependencies: Log error when LuaExpat is not capable of enforcing stanza size limits
Matthew Wild <mwild1@gmail.com>
parents:
4426
diff
changeset
|
176 .."stanza size limits, which may leave servers on untrusted " |
29d2dd705148
util.dependencies: Log error when LuaExpat is not capable of enforcing stanza size limits
Matthew Wild <mwild1@gmail.com>
parents:
4426
diff
changeset
|
177 .."networks (e.g. the internet) vulnerable to denial-of-service " |
29d2dd705148
util.dependencies: Log error when LuaExpat is not capable of enforcing stanza size limits
Matthew Wild <mwild1@gmail.com>
parents:
4426
diff
changeset
|
178 .."attacks. You should upgrade to LuaExpat 1.3.0 or higher as " |
29d2dd705148
util.dependencies: Log error when LuaExpat is not capable of enforcing stanza size limits
Matthew Wild <mwild1@gmail.com>
parents:
4426
diff
changeset
|
179 .."soon as possible. See " |
7359
a5a080c12c96
Update every link to the documentation to use HTTPS
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
7264
diff
changeset
|
180 .."https://prosody.im/doc/depends#luaexpat for more information."); |
4426
ee65aa40ef60
util.dependencies, util.xmppstream: Move LuaExpat version checking to util.dependencies.
Waqas Hussain <waqas20@gmail.com>
parents:
4236
diff
changeset
|
181 end |
ee65aa40ef60
util.dependencies, util.xmppstream: Move LuaExpat version checking to util.dependencies.
Waqas Hussain <waqas20@gmail.com>
parents:
4236
diff
changeset
|
182 end |
3904
f93163081b3c
prosody, prosodyctl, util.dependencies: Split checking and logging of dependencies so we can check hard deps before the config and logging is loaded
Matthew Wild <mwild1@gmail.com>
parents:
2925
diff
changeset
|
183 end |
742
b9f59372eb4e
util.dependencies: Show useful messages when our own libraries are not found, too
Matthew Wild <mwild1@gmail.com>
parents:
615
diff
changeset
|
184 |
6777
5de6b93d0190
util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents:
6067
diff
changeset
|
185 return { |
5de6b93d0190
util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents:
6067
diff
changeset
|
186 softreq = softreq; |
5de6b93d0190
util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents:
6067
diff
changeset
|
187 missingdep = missingdep; |
5de6b93d0190
util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents:
6067
diff
changeset
|
188 check_dependencies = check_dependencies; |
5de6b93d0190
util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents:
6067
diff
changeset
|
189 log_warnings = log_warnings; |
5de6b93d0190
util.*: Remove use of module() function, make all module functions local and return them in a table at the end
Kim Alvefur <zash@zash.se>
parents:
6067
diff
changeset
|
190 }; |