summaryrefslogtreecommitdiff
path: root/p11p-daemon/src/p11p_config.erl
diff options
context:
space:
mode:
Diffstat (limited to 'p11p-daemon/src/p11p_config.erl')
-rw-r--r--p11p-daemon/src/p11p_config.erl32
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_() ->