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 end
def morse(conn, _params) do 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}) LiveView.Controller.live_render(conn, UiWeb.MorseLive, session: %{ip: ip})
end end
end end

View file

@ -13,8 +13,8 @@ defmodule UiWeb.MorseLive do
end end
def handle_event("toggle_morse", _value, %{assigns: %{ip: ip}} = socket) do def handle_event("toggle_morse", _value, %{assigns: %{ip: ip}} = socket) do
if not Morse.Server.in_progress?() and ip != "127.0.0.1" do if not Morse.Server.in_progress?() and ip_send_message?(ip) do
spawn fn -> Ui.TelegramBot.message("#{ip} pressed the button!") end spawn(fn -> Ui.TelegramBot.message("#{ip} pressed the button!") end)
end end
Morse.Server.toggle_morse() Morse.Server.toggle_morse()
@ -38,4 +38,9 @@ defmodule UiWeb.MorseLive do
ip: ip ip: ip
] ]
end 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 end