emqx_exhook.schema 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. %%-*- mode: erlang -*-
  2. {mapping, "exhook.server.$name.url", "emqx_exhook.servers", [
  3. {datatype, string}
  4. ]}.
  5. {mapping, "exhook.server.$name.ssl.cacertfile", "emqx_exhook.servers", [
  6. {datatype, string}
  7. ]}.
  8. {mapping, "exhook.server.$name.ssl.certfile", "emqx_exhook.servers", [
  9. {datatype, string}
  10. ]}.
  11. {mapping, "exhook.server.$name.ssl.keyfile", "emqx_exhook.servers", [
  12. {datatype, string}
  13. ]}.
  14. {translation, "emqx_exhook.servers", fun(Conf) ->
  15. Filter = fun(Opts) -> [{K, V} || {K, V} <- Opts, V =/= undefined] end,
  16. ServerOptions = fun(Prefix) ->
  17. case http_uri:parse(cuttlefish:conf_get(Prefix ++ ".url", Conf)) of
  18. {ok, {http, _, Host, Port, _, _}} ->
  19. [{scheme, http}, {host, Host}, {port, Port}];
  20. {ok, {https, _, Host, Port, _, _}} ->
  21. [{scheme, https}, {host, Host}, {port, Port},
  22. {ssl_options,
  23. Filter([{ssl, true},
  24. {certfile, cuttlefish:conf_get(Prefix ++ ".ssl.certfile", Conf, undefined)},
  25. {keyfile, cuttlefish:conf_get(Prefix ++ ".ssl.keyfile", Conf, undefined)},
  26. {cacertfile, cuttlefish:conf_get(Prefix ++ ".ssl.cacertfile", Conf, undefined)}
  27. ])}];
  28. _ -> error(invalid_server_options)
  29. end
  30. end,
  31. [{list_to_atom(Name), ServerOptions("exhook.server." ++ Name)}
  32. || {["exhook", "server", Name, "url"], _} <- cuttlefish_variable:filter_by_prefix("exhook.server", Conf)]
  33. end}.