aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/configmanager.lua38
-rw-r--r--plugins/mod_invites.lua7
-rw-r--r--util/prosodyctl/check.lua1
-rw-r--r--util/startup.lua9
4 files changed, 36 insertions, 19 deletions
diff --git a/core/configmanager.lua b/core/configmanager.lua
index 023545d7..6c6b670b 100644
--- a/core/configmanager.lua
+++ b/core/configmanager.lua
@@ -34,8 +34,9 @@ local parser = nil;
local config_mt = { __index = function (t, _) return rawget(t, "*"); end};
local config = setmetatable({ ["*"] = { } }, config_mt);
-local delayed_warnings = {};
local files = {};
+local credentials_directory = nil;
+local credential_fallback_fatal = true;
-- When host not found, use global
local host_mt = { __index = function(_, k) return config["*"][k] end }
@@ -45,11 +46,12 @@ function _M.getconfig()
end
function _M.get(host, key)
- if host and key and delayed_warnings[host.."/"..key] then
- local warning = delayed_warnings[host.."/"..key];
- log("warn", "%s", warning.text);
+ local v = config[host][key];
+ if v and errors.is_error(v) then
+ log("warn", "%s:%d: %s", v.context.filename, v.context.fileline, v.text);
+ return nil;
end
- return config[host][key];
+ return v;
end
function _M.rawget(host, key)
local hostconfig = rawget(config, host);
@@ -250,10 +252,6 @@ do
t_insert(warnings, ("%s:%d: Duplicate option '%s'"):format(config_file, get_line_number(config_file), k));
end
set_options[option_path] = true;
- if errors.is_error(v) then
- delayed_warnings[option_path] = v;
- return;
- end
set(config_table, env.__currenthost or "*", k, v);
end
});
@@ -371,19 +369,17 @@ do
env.FileLine = filereader(config_path, "*l");
env.FileLines = linereader(config_path);
- if _G.prosody.paths.credentials then
- env.Credential = filereader(_G.prosody.paths.credentials, "*a");
- elseif _G.prosody.process_type == "prosody" then
+ if credentials_directory then
+ env.Credential = filereader(credentials_directory, "*a");
+ elseif credential_fallback_fatal then
env.Credential = function() error("Credential() requires the $CREDENTIALS_DIRECTORY environment variable to be set", 2) end
else
env.Credential = function()
return errors.new({
- type = "continue",
- text = ("%s:%d: Credential() requires the $CREDENTIALS_DIRECTORY environment variable to be set")
- :format(config_file, get_line_number(config_file));
- });
+ type = "continue";
+ text = "Credential() requires the $CREDENTIALS_DIRECTORY environment variable to be set";
+ }, { filename = config_file; fileline = get_line_number(config_file) });
end
-
end
local chunk, err = envload(data, "@"..config_file, env);
@@ -405,4 +401,12 @@ do
end
+function _M.set_credentials_directory(directory)
+ credentials_directory = directory;
+end
+
+function _M.set_credential_fallback_mode(mode)
+ credential_fallback_fatal = mode == "error";
+end
+
return _M;
diff --git a/plugins/mod_invites.lua b/plugins/mod_invites.lua
index 0da93215..c6a66a8f 100644
--- a/plugins/mod_invites.lua
+++ b/plugins/mod_invites.lua
@@ -239,6 +239,11 @@ end
module:hook("invite-created", add_landing_url, -1);
--- shell command
+-- COMPAT: Dynamic groups are work in progress as of 13.0, so we'll use the
+-- presence of mod_invites_groups (a community module) to determine whether to
+-- expose our support for invites to groups.
+local have_group_invites = module:get_option_inherited_set("modules_enabled"):contains("invites_groups");
+
module:add_item("shell-command", {
section = "invite";
section_desc = "Create and manage invitations";
@@ -249,7 +254,7 @@ module:add_item("shell-command", {
};
host_selector = "user_jid";
flags = {
- array_params = { role = true, group = true };
+ array_params = { role = true, group = have_group_invites };
value_params = { expires_after = true };
};
diff --git a/util/prosodyctl/check.lua b/util/prosodyctl/check.lua
index 4ac7af9e..554a64ef 100644
--- a/util/prosodyctl/check.lua
+++ b/util/prosodyctl/check.lua
@@ -1631,6 +1631,7 @@ local function check(arg)
});
end
end
+ break;
end
end
if not found then
diff --git a/util/startup.lua b/util/startup.lua
index 34c2f733..15f07fdf 100644
--- a/util/startup.lua
+++ b/util/startup.lua
@@ -89,6 +89,14 @@ function startup.read_config()
end
end
prosody.config_file = filename
+ local credentials_directory = os.getenv("CREDENTIALS_DIRECTORY");
+ if credentials_directory then
+ config.set_credentials_directory(credentials_directory);
+ elseif prosody.process_type == "prosody" then
+ config.set_credential_fallback_mode("error");
+ else
+ config.set_credential_fallback_mode("warn");
+ end
local ok, level, err = config.load(filename);
if not ok then
print("\n");
@@ -271,7 +279,6 @@ function startup.init_global_state()
config = CFG_CONFIGDIR or ".";
plugins = CFG_PLUGINDIR or "plugins";
data = "data";
- credentials = os.getenv("CREDENTIALS_DIRECTORY");
};
prosody.arg = _G.arg;