diff --git a/app/lib/prymn_web/controllers/server_controller.ex b/app/lib/prymn_web/controllers/server_controller.ex index 4a1699f..edf831d 100644 --- a/app/lib/prymn_web/controllers/server_controller.ex +++ b/app/lib/prymn_web/controllers/server_controller.ex @@ -9,7 +9,16 @@ defmodule PrymnWeb.ServerController do validating their registration token. """ 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} -> json(conn, %{"connected" => true})