aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAlexander <alex.strizhakov@gmail.com>2019-12-17 19:51:01 +0300
committerAlexander Strizhakov <alex.strizhakov@gmail.com>2020-01-10 15:52:01 +0300
commit583cee46072cda6b3ed07f4ce09b09db9e2b0af1 (patch)
tree2d27e956ddbf1dc8a6d96f8d4222ba490f353493 /lib
parentf9d01068cf0d47040abc3d51f8ea8a3a264c027f (diff)
downloadpleroma-583cee46072cda6b3ed07f4ce09b09db9e2b0af1.tar.gz
parsing proxy url setting
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/admin_api/config.ex45
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, _),