mirror of
https://github.com/bjc/prosody.git
synced 2025-04-01 20:27:39 +03:00
core.configmanager: Remove dependency on 'prosody' global for Credential
Minimizing dependencies on global state is nice, as it makes using configmanager outside of Prosody easier.
This commit is contained in:
parent
13dc010593
commit
9eedb15c6f
2 changed files with 21 additions and 4 deletions
|
@ -36,6 +36,8 @@ 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 }
|
||||
|
@ -371,9 +373,9 @@ 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()
|
||||
|
@ -405,4 +407,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;
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue