Fix if real ip not present in headers.

Exclude more addresses from telegram messages.
This commit is contained in:
Pim Kunis 2019-10-30 20:31:58 +01:00
parent 5e974da721
commit 2140a165fd
2 changed files with 11 additions and 3 deletions

View file

@ -11,7 +11,10 @@ defmodule UiWeb.PageController do
end
def morse(conn, _params) do
ip = conn |> Plug.Conn.get_req_header("x-real-ip") |> hd()
ip = case Plug.Conn.get_req_header(conn, "x-real-ip") do
[h|_tl] -> h
_ -> "0.0.0.0"
end
LiveView.Controller.live_render(conn, UiWeb.MorseLive, session: %{ip: ip})
end
end

View file

@ -13,8 +13,8 @@ defmodule UiWeb.MorseLive do
end
def handle_event("toggle_morse", _value, %{assigns: %{ip: ip}} = socket) do
if not Morse.Server.in_progress?() and ip != "127.0.0.1" do
spawn fn -> Ui.TelegramBot.message("#{ip} pressed the button!") end
if not Morse.Server.in_progress?() and ip_send_message?(ip) do
spawn(fn -> Ui.TelegramBot.message("#{ip} pressed the button!") end)
end
Morse.Server.toggle_morse()
@ -38,4 +38,9 @@ defmodule UiWeb.MorseLive do
ip: ip
]
end
defp ip_send_message?(ip) do
not (String.starts_with?(ip, "192.168.") or String.starts_with?(ip, "10.")
or ip == "127.0.0.1" or ip == "localhost" or ip == "0.0.0.0")
end
end