diff options
author | Matthew Wild <mwild1@gmail.com> | 2025-03-13 11:41:32 +0000 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2025-03-13 11:41:32 +0000 |
commit | 77fb638f4d5a0ae04f6a7bb284e1e4c16066a65c (patch) | |
tree | b3b417ed12241fb7fe9e60b84f3f9c49ff322c99 /util/prosodyctl | |
parent | 74970e28158f7699fafafd0daf088ca68d73b662 (diff) | |
parent | 57d168dd5e2684522df3c268be482430f3682e2b (diff) | |
download | prosody-master.tar.gz prosody-master.zip |
Merge 13.0->trunkHEADorigin/mastermaster
Diffstat (limited to 'util/prosodyctl')
-rw-r--r-- | util/prosodyctl/check.lua | 44 | ||||
-rw-r--r-- | util/prosodyctl/shell.lua | 6 |
2 files changed, 41 insertions, 9 deletions
diff --git a/util/prosodyctl/check.lua b/util/prosodyctl/check.lua index 554a64ef..0a0ab878 100644 --- a/util/prosodyctl/check.lua +++ b/util/prosodyctl/check.lua @@ -11,6 +11,7 @@ local jid_split = require "prosody.util.jid".prepped_split; local modulemanager = require "prosody.core.modulemanager"; local async = require "prosody.util.async"; local httputil = require "prosody.util.http"; +local human_units = require "prosody.util.human.units"; local function api(host) return setmetatable({ name = "prosodyctl.check"; host = host; log = prosody.log }, { __index = moduleapi }) @@ -1493,6 +1494,10 @@ local function check(arg) local function print_feature_status(feature, host) if quiet then return; end print("", feature.ok and "OK" or "(!)", feature.name); + if feature.desc then + print("", "", feature.desc); + print(""); + end if not feature.ok then if feature.lacking_modules then table.sort(feature.lacking_modules); @@ -1552,6 +1557,11 @@ local function check(arg) end end end + if feature.meta then + for k, v in it.sorted_pairs(feature.meta) do + print("", "", (" - %s: %s"):format(k, v)); + end + end print(""); end @@ -1638,29 +1648,33 @@ local function check(arg) current_feature.lacking_components = current_feature.lacking_components or {}; table.insert(current_feature.lacking_components, suggested); end + return found; end local features = { { name = "Basic functionality"; + desc = "Support for secure connections, authentication and messaging"; check = function () check_module("disco"); check_module("roster"); check_module("saslauth"); check_module("tls"); - check_module("pep"); end; }; { - name = "Multi-device sync"; + name = "Multi-device messaging and data synchronization"; + desc = "Multiple clients connected to the same account stay in sync"; check = function () check_module("carbons"); check_module("mam"); check_module("bookmarks"); + check_module("pep"); end; }; { name = "Mobile optimizations"; + desc = "Help mobile clients reduce battery and data usage"; check = function () check_module("smacks"); check_module("csi_simple", "csi_battery_saver"); @@ -1668,6 +1682,7 @@ local function check(arg) }; { name = "Web connections"; + desc = "Allow connections from browser-based web clients"; check = function () check_module("bosh"); check_module("websocket"); @@ -1675,24 +1690,28 @@ local function check(arg) }; { name = "User profiles"; + desc = "Enable users to publish profile information"; check = function () check_module("vcard_legacy", "vcard"); end; }; { name = "Blocking"; + desc = "Block communication with chosen entities"; check = function () check_module("blocklist"); end; }; { name = "Push notifications"; + desc = "Receive notifications on platforms that don't support persistent connections"; check = function () check_module("cloud_notify"); end; }; { - name = "Audio/video calls"; + name = "Audio/video calls and P2P"; + desc = "Assist clients in setting up connections between each other"; check = function () check_module( "turn_external", @@ -1704,12 +1723,25 @@ local function check(arg) }; { name = "File sharing"; - check = function () - check_component("http_file_share", "http_upload", "http_upload_external"); + desc = "Sharing of files to groups and offline users"; + check = function (self) + local service = check_component("http_file_share", "http_upload", "http_upload_external"); + if service then + local size_limit; + if api(service):get_option("component_module") == "http_file_share" then + size_limit = api(service):get_option_number("http_file_share_size_limit", 10*1024*1024); + end + if size_limit then + self.meta = { + ["Size limit"] = human_units.format(size_limit, "b", "b"); + }; + end + end end; }; { name = "Group chats"; + desc = "Create group chats and channels"; check = function () check_component("muc"); end; @@ -1722,7 +1754,7 @@ local function check(arg) for _, feature in ipairs(features) do current_feature = feature; - feature.check(); + feature:check(); feature.ok = ( not feature.lacking_modules and not feature.lacking_components and diff --git a/util/prosodyctl/shell.lua b/util/prosodyctl/shell.lua index d72cf294..31936989 100644 --- a/util/prosodyctl/shell.lua +++ b/util/prosodyctl/shell.lua @@ -29,8 +29,8 @@ local function read_line(prompt_string) end end -local function send_line(client, line) - client.send(st.stanza("repl-input", { width = tostring(term_width()) }):text(line)); +local function send_line(client, line, interactive) + client.send(st.stanza("repl-input", { width = tostring(term_width()), repl = interactive == false and "0" or "1" }):text(line)); end local function repl(client) @@ -91,7 +91,7 @@ local function start(arg) --luacheck: ignore 212/arg end client.events.add_handler("connected", function() - send_line(client, arg[1]); + send_line(client, arg[1], false); return true; end, 1); |