aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/rook/utils/identity.ex27
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