diff options
Diffstat (limited to 'p11p-daemon/src/p11p_config.erl')
-rw-r--r-- | p11p-daemon/src/p11p_config.erl | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/p11p-daemon/src/p11p_config.erl b/p11p-daemon/src/p11p_config.erl index 187fa8b..1fc83e9 100644 --- a/p11p-daemon/src/p11p_config.erl +++ b/p11p-daemon/src/p11p_config.erl @@ -9,7 +9,7 @@ %%-export([config/0]). -export([nameof/1]). -export([tokens/0]). --export([remotebin_path/0, modules_for_token/1, module_path/1, token_mode/1]). +-export([remotebin_path/0, modules_for_token/1, module_path/1, module_env/1, token_mode/1]). -export_type([token_mode_t/0]). %% Genserver callbacks. @@ -19,7 +19,8 @@ %% Records and types. -record(p11module, { name :: string(), - path :: string() + path :: string(), + env :: [{string(), string()}] %FIXME: maches [] too? }). -type p11module() :: #p11module{}. @@ -65,6 +66,10 @@ modules_for_token(TokName) -> module_path(Module) -> Module#p11module.path. +-spec module_env(p11module()) -> []. +module_env(Module) -> + Module#p11module.env. + nameof(#token{name = Name}) -> Name; nameof(#p11module{name = Name}) -> @@ -128,7 +133,7 @@ conf_tokens([H = {Name, _}|T], Acc) -> -spec new_token({string(), [tuple()]}) -> token(). new_token({Name, Settings}) -> Modules = conf_modules(proplists:get_value(modules, Settings)), - Mode = mode(proplists:get_value(mode, Settings, {failover, [timeout]}), + Mode = mode(proplists:get_value(mode, Settings, {failover, [timeout]}), %FIXME: s/[timeout]/[10]/g or some other sane default? maps:size(Modules)), #token{ name = Name, @@ -141,12 +146,15 @@ conf_modules(L) -> conf_modules([], Acc) -> Acc; conf_modules([{Name, Path}|T], Acc) -> - conf_modules(T, Acc#{Name => new_module(Name, Path)}). + conf_modules(T, Acc#{Name => new_module(Name, Path, [])}); +conf_modules([{Name, Path, Env}|T], Acc) -> + conf_modules(T, Acc#{Name => new_module(Name, Path, Env)}). -new_module(Name, Path) -> +new_module(Name, Path, Env) -> #p11module{ name = Name, - path = Path + path = Path, + env = Env }. -spec mode(p11p_config:token_mode_t(), non_neg_integer()) -> p11p_config:token_mode_t(). @@ -171,7 +179,9 @@ tokens_init_test_() -> {"bogusmod0_1", "/path/to/bogusmod0_1"} ]}]}, {"vtoken1", - [{modules, [{"bogusmod1_0", "/path/to/bogusmod1_0"}]}]} + [{modules, [{"bogusmod1_0", "/path/to/bogusmod1_0"}, + {"bogusmod1_1", "/path/to/bogusmod1_1", [{"MYENV", "myenv"}]} + ]}]} ]) end, fun(_) -> ok end, fun(Conf) -> @@ -180,14 +190,16 @@ tokens_init_test_() -> {token,"vtoken0", {balance,[3,1]}, #{"bogusmod0_0" => - {p11module,"bogusmod0_0", "/path/to/bogusmod0_0"}, + {p11module,"bogusmod0_0", "/path/to/bogusmod0_0", []}, "bogusmod0_1" => - {p11module,"bogusmod0_1", "/path/to/bogusmod0_1"}}}, + {p11module,"bogusmod0_1", "/path/to/bogusmod0_1", []}}}, "vtoken1" => {token,"vtoken1", {failover,[timeout]}, #{"bogusmod1_0" => - {p11module,"bogusmod1_0", "/path/to/bogusmod1_0"}}} + {p11module,"bogusmod1_0", "/path/to/bogusmod1_0", []}, + "bogusmod1_1" => + {p11module,"bogusmod1_1", "/path/to/bogusmod1_1", [{"MYENV", "myenv"}]}}} }, Conf)] end}. %% modules_for_token_test_() -> |