Я создал свое первое приложение Elixir/Phoenix, и я хочу регистрировать IP-адреса моих посетителей.Регистрация IP-адресов для всех посетителей
В моем router.ex, я «регистрирую» IP-адреса для существующих страниц.
def log_ip(conn, _) do
conn.remote_ip
|> Tuple.to_list
|> Enum.join(".")
|> IO.puts
conn
end
...
defmodule Mysite.Router do
use Mysite.Web, :router
pipeline :browser do
plug :log_ip
...
scope "/", Mysite do
pipe_through :browser
Это все работает отлично, как правило, но я вижу в терминале, что есть некоторые боты, которые пытаются получить доступ несуществующих страниц, например, "/admin.php", "/command.php". Я хочу регистрировать IP-адреса THESE, но приведенный выше код не работает для этого.
потенциально связан между собой, но у меня есть этот код, чтобы справиться с людьми, которые пострадали несуществующие ссылки (например,/блог/несуществующая-страница)
defimpl Plug.Exception, for: Phoenix.Template.UndefinedError do
def status(_exception), do: 404
end
Есть ли способ, чтобы получить доступ к соед и журнал remote_ip, прежде чем я верну 404 (или лучший способ справиться со всем этим)?
Спасибо! Я создал модуль Plug (вместо использования Function Plug), а затем добавил "plug Mysite.Plugs.LogIp" в endpoint.ex. –