app: use x-forwarded-for header to get ips

This commit is contained in:
Nikos Papadakis 2023-09-04 13:01:18 +03:00
parent 414cba561b
commit c1e39c9bf2
Signed by untrusted user who does not match committer: nikos
GPG key ID: 78871F9905ADFF02

View file

@ -9,7 +9,16 @@ defmodule PrymnWeb.ServerController do
validating their registration token. validating their registration token.
""" """
def register(conn, %{"token" => token}) do def register(conn, %{"token" => token}) do
case Servers.register_server(token, conn.remote_ip) do ip =
with [ip] <- Plug.Conn.get_req_header(conn, "x-forwarded-for"),
{:ok, ip} <- :inet.parse_address(to_charlist(ip)) do
ip
else
{:error, reason} -> raise "Could not parse ip address: #{inspect(reason)}"
[] -> conn.remote_ip
end
case Servers.register_server(token, ip) do
{:ok, _server} -> {:ok, _server} ->
json(conn, %{"connected" => true}) json(conn, %{"connected" => true})