defmodule HomelabDashboardWeb.PageController do use HomelabDashboardWeb, :controller import Bitwise def home(conn, _params) do {public_services, internal_services} = HomelabDashboard.ServicesSync.get_services() render(conn, :home, public_services: public_services, internal_services: internal_services, show_internal: internal_network?(conn.remote_ip) ) end defp internal_network?({127, _, _, _}), do: true defp internal_network?({10, _, _, _}), do: true defp internal_network?({192, 168, _, _}), do: true defp internal_network?({172, b, _, _}) when b in 16..31, do: true defp internal_network?({0, 0, 0, 0, 0, 0, 0, 1}), do: true defp internal_network?({0, 0, 0, 0, 0, 65535, ab, cd}) do internal_network?({ab >>> 8, ab &&& 0xFF, cd >>> 8, cd &&& 0xFF}) end defp internal_network?(_), do: false end