- if global_ssl_config then
- for option,default_value in pairs(global_ssl_config) do
- if user_ssl_config[option] == nil then
- user_ssl_config[option] = default_value;
- end
- end
- end
-
- for option,default_value in pairs(core_defaults) do
- if user_ssl_config[option] == nil then
- user_ssl_config[option] = default_value;
- end
- end
-
- for option in pairs(set_options) do
- local merged = {};
- merge_set(core_defaults[option], merged);
- if global_ssl_config then
- merge_set(global_ssl_config[option], merged);
- end
- merge_set(user_ssl_config[option], merged);
- local final_array = {};
- for opt, enable in pairs(merged) do
- if enable then
- final_array[#final_array+1] = opt;
- end
- end
- user_ssl_config[option] = final_array;
+ local cfg = new_config();
+ cfg:apply(core_defaults);
+ cfg:apply(global_ssl_config);
+ cfg:apply({
+ mode = mode,
+ -- We can't read the password interactively when daemonized
+ password = function() log("error", "Encrypted certificate for %s requires 'ssl' 'password' to be set in config", host); end;
+ });
+
+ for i = select('#', ...), 1, -1 do
+ cfg:apply(select(i, ...));