Software /
code /
prosody
Comparison
core/configmanager.lua @ 13743:0c7e11c11968 13.0
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.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 22 Feb 2025 00:00:41 +0100 |
parent | 13671:0c8c1a8338d1 |
child | 13744:34ac05f6bd10 |
comparison
equal
deleted
inserted
replaced
13741:e9edf9b50f32 | 13743:0c7e11c11968 |
---|---|
34 | 34 |
35 local config_mt = { __index = function (t, _) return rawget(t, "*"); end}; | 35 local config_mt = { __index = function (t, _) return rawget(t, "*"); end}; |
36 local config = setmetatable({ ["*"] = { } }, config_mt); | 36 local config = setmetatable({ ["*"] = { } }, config_mt); |
37 local delayed_warnings = {}; | 37 local delayed_warnings = {}; |
38 local files = {}; | 38 local files = {}; |
39 local credentials_directory = nil; | |
40 local credential_fallback_fatal = true; | |
39 | 41 |
40 -- When host not found, use global | 42 -- When host not found, use global |
41 local host_mt = { __index = function(_, k) return config["*"][k] end } | 43 local host_mt = { __index = function(_, k) return config["*"][k] end } |
42 | 44 |
43 function _M.getconfig() | 45 function _M.getconfig() |
369 | 371 |
370 env.FileContents = filereader(config_path, "*a"); | 372 env.FileContents = filereader(config_path, "*a"); |
371 env.FileLine = filereader(config_path, "*l"); | 373 env.FileLine = filereader(config_path, "*l"); |
372 env.FileLines = linereader(config_path); | 374 env.FileLines = linereader(config_path); |
373 | 375 |
374 if _G.prosody.paths.credentials then | 376 if credentials_directory then |
375 env.Credential = filereader(_G.prosody.paths.credentials, "*a"); | 377 env.Credential = filereader(credentials_directory, "*a"); |
376 elseif _G.prosody.process_type == "prosody" then | 378 elseif credential_fallback_fatal then |
377 env.Credential = function() error("Credential() requires the $CREDENTIALS_DIRECTORY environment variable to be set", 2) end | 379 env.Credential = function() error("Credential() requires the $CREDENTIALS_DIRECTORY environment variable to be set", 2) end |
378 else | 380 else |
379 env.Credential = function() | 381 env.Credential = function() |
380 return errors.new({ | 382 return errors.new({ |
381 type = "continue", | 383 type = "continue", |
403 return true, warnings; | 405 return true, warnings; |
404 end | 406 end |
405 | 407 |
406 end | 408 end |
407 | 409 |
410 function _M.set_credentials_directory(directory) | |
411 credentials_directory = directory; | |
412 end | |
413 | |
414 function _M.set_credential_fallback_mode(mode) | |
415 credential_fallback_fatal = mode == "error"; | |
416 end | |
417 | |
408 return _M; | 418 return _M; |