defmodule LambentExWeb.DevicesLive.Interfaces do
use LambentExWeb, :live_view
alias LambentEx.Scan.NMAP
@pubsub_name LambentEx.PubSub
@impl true
def mount(_params, _session, socket) do
Phoenix.PubSub.subscribe(@pubsub_name, "scan-ifaces")
{:ok,
socket
|> assign(:interfaces, NMAP.interfaces())
|> assign(:nonew, true)}
end
@impl true
def handle_params(params, _url, socket) do
{:noreply, apply_action(socket, socket.assigns.live_action, params)}
end
defp apply_action(socket, :index, _params) do
socket
|> assign(:page_link, "Devices")
|> assign(:page_title, "Scanned Interfaces")
|> assign(:source, nil)
end
@impl true
def handle_info({:interfaces, interfaces}, socket) do
{:noreply, socket |> assign(:interfaces, interfaces)}
end
@impl true
def handle_info(_msg, socket), do: {:noreply, socket}
# the sweep runs on every interface that is not filtered out by prefix; this
# is for the ones that are left but still not worth scanning
@impl true
def handle_event("toggle_iface", %{"name" => name}, socket) do
enabled =
socket.assigns.interfaces
|> Enum.find(%{}, fn iface -> iface.name == name end)
|> Map.get(:enabled, true)
NMAP.set_enabled(name, !enabled)
{:noreply, socket}
end
defp swept(interfaces), do: Enum.count(interfaces, & &1.enabled)
end
neiam
/lambent_ex
Lambent Aether 5
public · Issues · Pulls 1 · Labels · Forks · Compare · Actions success · Badges · Packages
⭐
Log in to mark this repository.
1.4 KiB · text
History
9c0fc16