diff options
| -rw-r--r-- | lib/rook/utils/identity.ex | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/lib/rook/utils/identity.ex b/lib/rook/utils/identity.ex index 385030e..7542621 100644 --- a/lib/rook/utils/identity.ex +++ b/lib/rook/utils/identity.ex @@ -1,6 +1,14 @@ defmodule Rook.Identity do - def get_ip_from_connect_info(%{peer_data: %{address: ip}, x_headers: _x_headers}) do - ip_to_string(ip) + def get_ip_from_connect_info(%{peer_data: %{address: ip}, x_headers: x_headers}) do + real_ip = Enum.find(x_headers, fn {key, _value} -> key == 'x-real-ip' end) + + case real_ip do + nil -> + ip_to_string(ip) + + {_key, ip} -> + ip + end end def get_location_from_ip(_ip) do @@ -15,15 +23,16 @@ defmodule Rook.Identity do browser_family = ua.client.name browser_version = ua.client.version - browser = if browser_family != :unknown do - if browser_version != :unknown do - browser_family <> " " <> browser_version + browser = + if browser_family != :unknown do + if browser_version != :unknown do + browser_family <> " " <> browser_version + else + browser_family + end else - browser_family + "Unknown Browser" end - else - "Unknown Browser" - end if ua.os_family != :unknown do browser <> " on " <> ua.os_family |
