Hello ports@, After a very long time, Prosody is getting quite ready for a new major release. It's not closed yet, but it's in quite good shape for testing. Please read the release notes [0] and the upgrade instructions [1].
I'm currently running it without issues, but I have a very reduced configuration. I can assure that MUCs, direct chats and file upload do work. I'll try to upstream some of the things added to the patches, so hopefully the final version won't be so noisy. [0]: https://hg.prosody.im/trunk/file/4a687745bb51/CHANGES [1]: https://prosody.im/doc/upgrading Lucas diff refs/heads/master 9e57661bac04601095536aa37192729cbf69d481 commit - 72841073278ff9c467e19a0c13a707da80e36b7f commit + 9e57661bac04601095536aa37192729cbf69d481 blob - 9c2b8e2f66fcd4d47cb882e8cc8f95fd5cc1a410 blob + 59e0fe4a2e8c1ecab691d6855cccdfeba79792ca --- net/prosody/Makefile +++ net/prosody/Makefile @@ -1,11 +1,13 @@ COMMENT = communications server for Jabber/XMPP written in Lua -DISTNAME = prosody-0.12.5 +PKGNAME = prosody-13.0.0pre0 +PRE_V = 4 +DISTNAME= prosody-13.0_1nightly${PRE_V}.orig CATEGORIES = net HOMEPAGE = https://prosody.im/ MAINTAINER = Lucas Gabriel Vuotto <lu...@sexy.is> -SITES = https://prosody.im/downloads/source/ +SITES = https://packages.prosody.im/debian/pool/main/p/prosody-13.0/ # MIT PERMIT_PACKAGE = Yes @@ -46,6 +48,8 @@ MAKE_FILE = makefile FAKE_FLAGS += CONFIG=${DESTDIR}${PREFIX}/share/examples/prosody +WRKDIST = ${WRKDIR}/prosody-13.0-1nightly${PRE_V} + pre-configure: cd ${WRKSRC}; sed -i -e 's,^#!/usr/bin/env lua,#!${MODLUA_BIN},' -e \ 's,^lua ,${MODLUA_BIN} ,' prosody prosodyctl \ blob - 081b657f714f8e26a74354980154e38ad9fa9782 blob + 4e6a2703d0b7e44c4a25b8c6d66d261f2e5f1b8e --- net/prosody/distinfo +++ net/prosody/distinfo @@ -1,2 +1,2 @@ -SHA256 (prosody-0.12.5.tar.gz) = d4+3cHoPEDmVlbp6ucZt0qIojArjp/5Kt4+X1GK9OZ8= -SIZE (prosody-0.12.5.tar.gz) = 617833 +SHA256 (prosody-13.0_1nightly4.orig.tar.gz) = UpoKtwa7caoZIRo8NnmN4Xfu4s6ZNjSvt0wNGNvZqiM= +SIZE (prosody-13.0_1nightly4.orig.tar.gz) = 732370 blob - 9a2584e6469c8ace4698242ce55c89ff7f641b94 blob + 029534f1a46412458318f07eda76b1ec6a67c4af --- net/prosody/patches/patch-core_certmanager_lua +++ net/prosody/patches/patch-core_certmanager_lua @@ -1,7 +1,7 @@ Index: core/certmanager.lua --- core/certmanager.lua.orig +++ core/certmanager.lua -@@ -202,7 +202,7 @@ end +@@ -177,7 +177,7 @@ end -- Built-in defaults local core_defaults = { blob - 2b8227c237db7c1ebd5d295793948c03623af83a blob + 4ab75d6f0443697c9e80b7e8eda8d8f7367b7bf7 --- net/prosody/patches/patch-prosody_cfg_lua_dist +++ net/prosody/patches/patch-prosody_cfg_lua_dist @@ -1,7 +1,7 @@ Index: prosody.cfg.lua.dist --- prosody.cfg.lua.dist.orig +++ prosody.cfg.lua.dist -@@ -23,6 +23,13 @@ +@@ -25,6 +25,13 @@ -- Example: admins = { "us...@example.com", "us...@example.net" } admins = { } @@ -15,7 +15,7 @@ Index: prosody.cfg.lua.dist -- This option allows you to specify additional locations where Prosody -- will search first for modules. For additional modules you can install, see -- the community module repository at https://modules.prosody.im/ -@@ -183,8 +190,8 @@ archive_expires_after = "1w" -- Remove archived messag +@@ -185,8 +192,8 @@ archive_expires_after = "1w" -- Remove archived messag -- Logging configuration -- For advanced logging see https://prosody.im/doc/logging log = { blob - c322044f7c0b3255fb316138eff7dd03c6751471 blob + c48601f0a4c4ad29a189d58e00a64fd7151b0cad --- net/prosody/patches/patch-util-src_pposix_c +++ net/prosody/patches/patch-util-src_pposix_c @@ -1,4 +1,5 @@ Define _BSD_SOURCE to make initgroups(3) visible +pipe(2) flags are only used in Linux Index: util-src/pposix.c --- util-src/pposix.c.orig @@ -15,3 +16,19 @@ Index: util-src/pposix.c #if ! defined(__FreeBSD__) #ifndef _POSIX_C_SOURCE +@@ -654,6 +659,7 @@ static int lc_abort(lua_State *L) { + return 0; + } + ++#if defined(__linux__) + const char *pipe_flag_names[] = { + "cloexec", + "direct", +@@ -664,6 +670,7 @@ const int pipe_flag_values[] = { + O_DIRECT, + O_NONBLOCK + }; ++#endif + + + static int lc_pipe(lua_State *L) { blob - /dev/null blob + aff48e1db28666e83abf1b131ac261e2ba3aa3c3 (mode 644) --- /dev/null +++ net/prosody/patches/patch-util-src_crypto_c @@ -0,0 +1,70 @@ +LibreSSL doesn't provide OSSL_PARAM* + +Index: util-src/crypto.c +--- util-src/crypto.c.orig ++++ util-src/crypto.c +@@ -27,9 +27,18 @@ typedef unsigned __int32 uint32_t; + #include <openssl/err.h> + #include <openssl/evp.h> + #include <openssl/obj_mac.h> +-#include <openssl/param_build.h> + #include <openssl/pem.h> + ++#include <openssl/opensslv.h> ++#if OPENSSL_VERSION_NUMBER >= 0x30000000 ++#define HAVE_OSSL_PARAM ++#endif ++ ++#ifdef HAVE_OSSL_PARAM ++#include <openssl/param_build.h> ++#endif ++ ++ + #if (LUA_VERSION_NUM == 501) + #define luaL_setfuncs(L, R, N) luaL_register(L, NULL, R) + #endif +@@ -199,6 +208,7 @@ cleanup: + } + + static int Lpkey_meth_public_raw(lua_State *L) { ++#ifdef HAVE_OSSL_PARAM + OSSL_PARAM *params; + EVP_PKEY *pkey = pkey_from_arg(L, 1, 0, 0); + +@@ -218,6 +228,12 @@ static int Lpkey_meth_public_raw(lua_State *L) { + } + + return 1; ++#else ++ EVP_PKEY *pkey = pkey_from_arg(L, 1, 0, 0); ++ lua_pushnil(L); ++ ++ return 1; ++#endif + } + + static int Lpkey_meth_public_pem(lua_State *L) { +@@ -334,6 +350,7 @@ static int Limport_private_pem(lua_State *L) { + } + + static int Limport_public_ec_raw(lua_State *L) { ++#ifdef HAVE_OSSL_PARAM + OSSL_PARAM_BLD *param_bld = NULL; + OSSL_PARAM *params = NULL; + EVP_PKEY_CTX *ctx = NULL; +@@ -367,6 +384,15 @@ err: + if (param_bld) OSSL_PARAM_BLD_free(param_bld); + lua_pushnil(L); + return 1; ++#else ++ size_t pubkey_bytes; ++ const char* pubkey_data = luaL_checklstring(L, 1, &pubkey_bytes); ++ const char* curve = luaL_checkstring(L, 2); ++ ++ lua_pushnil(L); ++ ++ return 1; ++#endif + } + + static int Limport_public_pem(lua_State *L) { blob - 90cae0a67b1187da11c2fac2b9bfd55759ccf723 blob + 1d04c64cb467299c308cf03d098b6d01961d28f8 --- net/prosody/patches/patch-util-src_table_c +++ net/prosody/patches/patch-util-src_table_c @@ -1,8 +1,8 @@ Index: util-src/table.c --- util-src/table.c.orig +++ util-src/table.c -@@ -8,10 +8,12 @@ static int Lcreate_table(lua_State *L) { - +@@ -14,10 +14,12 @@ static int Lcreate_table(lua_State *L) { + /* COMPAT: w/ Lua pre-5.2 */ static int Lpack(lua_State *L) { unsigned int n_args = lua_gettop(L); + int arg; blob - /dev/null blob + 6219f576a378651c24ca485c7f2886e9ffd796d3 (mode 644) --- /dev/null +++ net/prosody/patches/patch-util-src_hashes_c @@ -0,0 +1,54 @@ +LibreSSL doesn't implement blake2. + +Index: util-src/hashes.c +--- util-src/hashes.c.orig ++++ util-src/hashes.c +@@ -115,14 +115,6 @@ static int Lmd5(lua_State *L) { + return Levp_hash(L, EVP_md5()); + } + +-static int Lblake2s256(lua_State *L) { +- return Levp_hash(L, EVP_blake2s256()); +-} +- +-static int Lblake2b512(lua_State *L) { +- return Levp_hash(L, EVP_blake2b512()); +-} +- + static int Lsha3_256(lua_State *L) { + return Levp_hash(L, EVP_sha3_256()); + } +@@ -188,15 +180,7 @@ static int Lhmac_sha3_512(lua_State *L) { + return Levp_hmac(L, EVP_sha3_512()); + } + +-static int Lhmac_blake2s256(lua_State *L) { +- return Levp_hmac(L, EVP_blake2s256()); +-} + +-static int Lhmac_blake2b512(lua_State *L) { +- return Levp_hmac(L, EVP_blake2b512()); +-} +- +- + static int Levp_pbkdf2(lua_State *L, const EVP_MD *evp, size_t out_len) { + unsigned char out[EVP_MAX_MD_SIZE]; + +@@ -292,8 +276,6 @@ static const luaL_Reg Reg[] = { + { "md5", Lmd5 }, + { "sha3_256", Lsha3_256 }, + { "sha3_512", Lsha3_512 }, +- { "blake2s256", Lblake2s256 }, +- { "blake2b512", Lblake2b512 }, + { "hmac_sha1", Lhmac_sha1 }, + { "hmac_sha224", Lhmac_sha224 }, + { "hmac_sha256", Lhmac_sha256 }, +@@ -302,8 +284,6 @@ static const luaL_Reg Reg[] = { + { "hmac_md5", Lhmac_md5 }, + { "hmac_sha3_256", Lhmac_sha3_256 }, + { "hmac_sha3_512", Lhmac_sha3_512 }, +- { "hmac_blake2s256", Lhmac_blake2s256 }, +- { "hmac_blake2b512", Lhmac_blake2b512 }, + { "scram_Hi_sha1", Lpbkdf2_sha1 }, /* COMPAT */ + { "pbkdf2_hmac_sha1", Lpbkdf2_sha1 }, + { "pbkdf2_hmac_sha256", Lpbkdf2_sha256 }, blob - b4579dbde409c88a806a57c33822f00d1c74c8b7 blob + b145428415fc7e3af4a883b35835097f0d9e015f --- net/prosody/patches/patch-util_prosodyctl_cert_lua +++ net/prosody/patches/patch-util_prosodyctl_cert_lua @@ -11,4 +11,4 @@ Index: util/prosodyctl/cert.lua + owner = configmanager.get("*", "prosody_user") or "_prosody"; group = configmanager.get("*", "prosody_group") or owner; end - local cm = require "core.certmanager"; + local cm = require "prosody.core.certmanager"; blob - /dev/null blob + b7dd1cff86735d9fb9654d57e152849cab32be3f (mode 644) --- /dev/null +++ net/prosody/patches/patch-util-src_makefile @@ -0,0 +1,34 @@ +Fix util-src/makefile to work with our make + +Index: util-src/makefile +--- util-src/makefile.orig ++++ util-src/makefile +@@ -7,7 +7,7 @@ TARGET?=../util/ + + ALL=encodings.so hashes.so net.so pposix.so signal.so table.so \ + ringbuffer.so time.so poll.so compat.so strbitop.so \ +- struct.so ++ struct.so crypto.so + + .ifdef $(RANDOM) + ALL+=crand.so +@@ -22,7 +22,7 @@ install: $(ALL) + $(INSTALL_DATA) $(ALL) $(TARGET) + + clean: +- rm -f $(ALL) $(patsubst %.so,%.o,$(ALL)) ++ rm -f $(ALL) $(ALL:.so=.o) + + encodings.o: encodings.c + $(CC) $(CFLAGS) $(IDNA_FLAGS) -c -o $@ $< +@@ -38,8 +38,8 @@ crand.o: crand.c + crand.so: crand.o + $(LD) $(LDFLAGS) -o $@ $< $(LDLIBS) $(RANDOM_LIBS) + +-%.so: %.o +- $(LD) $(LDFLAGS) -o $@ $< $(LDLIBS) ++crypto.so: crypto.o ++ $(LD) $(LDFLAGS) -o $@ $< $(LDLIBS) $(OPENSSL_LIBS) + + .c.o: + $(CC) $(CFLAGS) -c -o $@ $< blob - 898f056da4a547f440db3c94ba7c86b47de7fcae blob + b236d0c1cd88b4ba23de274184b478aeb734b543 --- net/prosody/patches/patch-util_prosodyctl_lua +++ net/prosody/patches/patch-util_prosodyctl_lua @@ -1,21 +1,21 @@ Index: util/prosodyctl.lua --- util/prosodyctl.lua.orig +++ util/prosodyctl.lua -@@ -180,7 +180,7 @@ local function start(source_dir, lua) +@@ -200,7 +200,7 @@ local function start(source_dir, lua) if not source_dir then os.execute(lua .. "./prosody -D"); else - os.execute(lua .. source_dir.."/../../bin/prosody -D"); + os.execute(lua .. source_dir.."/../../sbin/prosody -D"); end - return true; - end -@@ -221,7 +221,7 @@ local render_cli = interpolation.new("%b{}", function + if notify_socket then +@@ -252,7 +252,7 @@ local render_cli = interpolation.new("%b{}", function + local function call_luarocks(operation, mod, server) local dir = prosody.paths.installer; - local ok, _, code = os.execute(render_cli("luarocks --lua-version={luav} {op} --tree={dir} {server&--server={server}} {mod?}", { + local ok, _, code = os.execute(render_cli("luarocks-${MODLUA_VERSION} --lua-version={luav} {op} --tree={dir} {server&--server={server}} {mod?}", { dir = dir; op = operation; mod = mod; server = server; luav = _VERSION:match("5%.%d"); })); - if type(ok) == "number" then code = ok; end + return ok and code; blob - b4b09b3ab6a9fa5759da731025eb4e9c5b0b01a3 blob + 2eb21231ebaabbecb649ba951cfed68b57be8fc9 --- net/prosody/patches/patch-util_startup_lua +++ net/prosody/patches/patch-util_startup_lua @@ -3,7 +3,7 @@ Use the right default user. Index: util/startup.lua --- util/startup.lua.orig +++ util/startup.lua -@@ -510,7 +510,7 @@ function startup.switch_user() +@@ -577,7 +577,7 @@ function startup.switch_user() local arg_root = prosody.opts.root; if prosody.current_uid == 0 and config.get("*", "run_as_root") ~= true and not arg_root then -- We haz root! blob - /dev/null blob + bc43996bd46dd2f8aae44a993693a557fd532b89 (mode 644) --- /dev/null +++ net/prosody/patches/patch-util_hmac_lua @@ -0,0 +1,12 @@ +LibreSSL doesn't implement blake2. + +Index: util/hmac.lua +--- util/hmac.lua.orig ++++ util/hmac.lua +@@ -17,6 +17,4 @@ return { + sha256 = hashes.hmac_sha256, + sha384 = hashes.hmac_sha384, + sha512 = hashes.hmac_sha512, +- blake2s256 = hashes.hmac_blake2s256, +- blake2b512 = hashes.hmac_blake2b512, + }; blob - 9eaa4c597962bd797a79dd90513a08d5b1aa5be6 blob + fdec7149f287d0d45f6ee02e7e666e7e798e01c7 --- net/prosody/pkg/PLIST +++ net/prosody/pkg/PLIST @@ -18,10 +18,12 @@ lib/prosody/core/stanza_router.lua lib/prosody/core/statsmanager.lua lib/prosody/core/storagemanager.lua lib/prosody/core/usermanager.lua +lib/prosody/loader.lua lib/prosody/modules/ lib/prosody/modules/adhoc/ lib/prosody/modules/adhoc/adhoc.lib.lua lib/prosody/modules/adhoc/mod_adhoc.lua +lib/prosody/modules/mod_account_activity.lua lib/prosody/modules/mod_admin_adhoc.lua lib/prosody/modules/mod_admin_shell.lua lib/prosody/modules/mod_admin_socket.lua @@ -38,14 +40,19 @@ lib/prosody/modules/mod_bookmarks.lua lib/prosody/modules/mod_bosh.lua lib/prosody/modules/mod_c2s.lua lib/prosody/modules/mod_carbons.lua +lib/prosody/modules/mod_cloud_notify.lua lib/prosody/modules/mod_component.lua lib/prosody/modules/mod_cron.lua lib/prosody/modules/mod_csi.lua lib/prosody/modules/mod_csi_simple.lua +lib/prosody/modules/mod_debug_reset.lua lib/prosody/modules/mod_debug_sql.lua +lib/prosody/modules/mod_debug_stanzas/ +lib/prosody/modules/mod_debug_stanzas/watcher.lib.lua lib/prosody/modules/mod_dialback.lua lib/prosody/modules/mod_disco.lua lib/prosody/modules/mod_external_services.lua +lib/prosody/modules/mod_flags.lua lib/prosody/modules/mod_groups.lua lib/prosody/modules/mod_http.lua lib/prosody/modules/mod_http_errors.lua @@ -79,6 +86,7 @@ lib/prosody/modules/mod_presence.lua lib/prosody/modules/mod_private.lua lib/prosody/modules/mod_proxy65.lua lib/prosody/modules/mod_pubsub/ +lib/prosody/modules/mod_pubsub/commands.lib.lua lib/prosody/modules/mod_pubsub/mod_pubsub.lua lib/prosody/modules/mod_pubsub/pubsub.lib.lua lib/prosody/modules/mod_register.lua @@ -87,10 +95,12 @@ lib/prosody/modules/mod_register_limits.lua lib/prosody/modules/mod_roster.lua lib/prosody/modules/mod_s2s.lua lib/prosody/modules/mod_s2s_auth_certs.lua +lib/prosody/modules/mod_s2s_auth_dane_in.lua lib/prosody/modules/mod_s2s_bidi.lua lib/prosody/modules/mod_saslauth.lua lib/prosody/modules/mod_scansion_record.lua lib/prosody/modules/mod_server_contact_info.lua +lib/prosody/modules/mod_server_info.lua lib/prosody/modules/mod_smacks.lua lib/prosody/modules/mod_stanza_debug.lua lib/prosody/modules/mod_storage_internal.lua @@ -134,8 +144,10 @@ lib/prosody/modules/muc/persistent.lib.lua lib/prosody/modules/muc/presence_broadcast.lib.lua lib/prosody/modules/muc/register.lib.lua lib/prosody/modules/muc/request.lib.lua +lib/prosody/modules/muc/restrict_pm.lib.lua lib/prosody/modules/muc/subject.lib.lua lib/prosody/modules/muc/util.lib.lua +lib/prosody/modules/muc/vcard.lib.lua lib/prosody/modules/muc/whois.lib.lua lib/prosody/net/ lib/prosody/net/adns.lua @@ -149,7 +161,6 @@ lib/prosody/net/http/errors.lua lib/prosody/net/http/files.lua lib/prosody/net/http/parser.lua lib/prosody/net/http/server.lua -lib/prosody/net/httpserver.lua lib/prosody/net/resolvers/ lib/prosody/net/resolvers/basic.lua lib/prosody/net/resolvers/chain.lua @@ -160,6 +171,7 @@ lib/prosody/net/server_epoll.lua lib/prosody/net/server_event.lua lib/prosody/net/server_select.lua lib/prosody/net/stun.lua +lib/prosody/net/tls_luasec.lua lib/prosody/net/unbound.lua lib/prosody/net/websocket/ lib/prosody/net/websocket.lua @@ -176,6 +188,7 @@ lib/prosody/util/bitcompat.lua lib/prosody/util/cache.lua lib/prosody/util/caps.lua @so lib/prosody/util/compat.so +@so lib/prosody/util/crypto.so lib/prosody/util/dataforms.lua lib/prosody/util/datamanager.lua lib/prosody/util/datamapper.lua @@ -191,6 +204,7 @@ lib/prosody/util/error.lua lib/prosody/util/events.lua lib/prosody/util/filters.lua lib/prosody/util/format.lua +lib/prosody/util/fsm.lua lib/prosody/util/gc.lua @so lib/prosody/util/hashes.so lib/prosody/util/hashring.lua @@ -213,11 +227,13 @@ lib/prosody/util/jsonpointer.lua lib/prosody/util/jsonschema.lua lib/prosody/util/jwt.lua lib/prosody/util/logger.lua +lib/prosody/util/mathcompat.lua lib/prosody/util/mercurial.lua lib/prosody/util/multitable.lua @so lib/prosody/util/net.so lib/prosody/util/openmetrics.lua lib/prosody/util/openssl.lua +lib/prosody/util/paseto.lua lib/prosody/util/paths.lua lib/prosody/util/pluginloader.lua @so lib/prosody/util/poll.so @@ -232,13 +248,14 @@ lib/prosody/util/prosodyctl/shell.lua lib/prosody/util/pubsub.lua lib/prosody/util/queue.lua lib/prosody/util/random.lua -lib/prosody/util/rfc6724.lua @so lib/prosody/util/ringbuffer.so +lib/prosody/util/roles.lua lib/prosody/util/rsm.lua lib/prosody/util/sasl/ lib/prosody/util/sasl.lua lib/prosody/util/sasl/anonymous.lua lib/prosody/util/sasl/external.lua +lib/prosody/util/sasl/oauthbearer.lua lib/prosody/util/sasl/plain.lua lib/prosody/util/sasl/scram.lua lib/prosody/util/serialization.lua @@ -247,6 +264,7 @@ lib/prosody/util/set.lua @so lib/prosody/util/signal.so lib/prosody/util/smqueue.lua lib/prosody/util/sql.lua +lib/prosody/util/sqlite3.lua lib/prosody/util/sslconfig.lua lib/prosody/util/stanza.lua lib/prosody/util/startup.lua @@ -261,7 +279,6 @@ lib/prosody/util/throttle.lua @so lib/prosody/util/time.so lib/prosody/util/timer.lua lib/prosody/util/uuid.lua -lib/prosody/util/vcard.lua lib/prosody/util/watchdog.lua lib/prosody/util/x509.lua lib/prosody/util/xml.lua