diff options
author | Alexander <alex.strizhakov@gmail.com> | 2019-12-17 19:51:01 +0300 |
---|---|---|
committer | Alexander Strizhakov <alex.strizhakov@gmail.com> | 2020-01-10 15:52:01 +0300 |
commit | 583cee46072cda6b3ed07f4ce09b09db9e2b0af1 (patch) | |
tree | 2d27e956ddbf1dc8a6d96f8d4222ba490f353493 /lib/pleroma/web/admin_api | |
parent | f9d01068cf0d47040abc3d51f8ea8a3a264c027f (diff) | |
download | pleroma-583cee46072cda6b3ed07f4ce09b09db9e2b0af1.tar.gz |
parsing proxy url setting
Diffstat (limited to 'lib/pleroma/web/admin_api')
-rw-r--r-- | lib/pleroma/web/admin_api/config.ex | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/pleroma/web/admin_api/config.ex b/lib/pleroma/web/admin_api/config.ex index e141a13da..acc5a5183 100644 --- a/lib/pleroma/web/admin_api/config.ex +++ b/lib/pleroma/web/admin_api/config.ex @@ -145,6 +145,33 @@ defmodule Pleroma.Web.AdminAPI.Config do for {k, v} <- entity, into: %{}, do: {do_convert(k), do_convert(v)} end + defp do_convert({:proxy_url, {type, :localhost, port}}) do + %{"tuple" => [":proxy_url", %{"tuple" => [do_convert(type), "localhost", port]}]} + end + + defp do_convert({:proxy_url, {type, host, port}}) when is_tuple(host) do + ip = + host + |> :inet_parse.ntoa() + |> to_string() + + %{ + "tuple" => [ + ":proxy_url", + %{"tuple" => [do_convert(type), ip, port]} + ] + } + end + + defp do_convert({:proxy_url, {type, host, port}}) do + %{ + "tuple" => [ + ":proxy_url", + %{"tuple" => [do_convert(type), to_string(host), port]} + ] + } + end + defp do_convert({:dispatch, [entity]}), do: %{"tuple" => [":dispatch", [inspect(entity)]]} # TODO: will become useless after removing hackney defp do_convert({:partial_chain, entity}), do: %{"tuple" => [":partial_chain", inspect(entity)]} @@ -173,6 +200,10 @@ defmodule Pleroma.Web.AdminAPI.Config do defp do_transform(%Regex{} = entity), do: entity + defp do_transform(%{"tuple" => [":proxy_url", %{"tuple" => [type, host, port]}]}) do + {:proxy_url, {do_transform_string(type), parse_host(host), port}} + end + defp do_transform(%{"tuple" => [":dispatch", [entity]]}) do {dispatch_settings, []} = do_eval(entity) {:dispatch, [dispatch_settings]} @@ -204,6 +235,20 @@ defmodule Pleroma.Web.AdminAPI.Config do defp do_transform(entity), do: entity + defp parse_host("localhost"), do: :localhost + + defp parse_host(host) do + charlist = to_charlist(host) + + case :inet.parse_address(charlist) do + {:error, :einval} -> + charlist + + {:ok, ip} -> + ip + end + end + @delimiters ["/", "|", "\"", "'", {"(", ")"}, {"[", "]"}, {"{", "}"}, {"<", ">"}] defp find_valid_delimiter([], _string, _), |