defmodule ShardWeb.PageController do use ShardWeb, :controller def peer_list(conn, _params) do render conn, "peer_list.html" end def shard_list(conn, _params) do render conn, "shard_list.html" end def shard_action(conn, %{"shard_id" => shard_id, "action" => action}) do shard_id = Base.decode16! shard_id case action do "delete" -> Shard.Manager.delete(shard_id) end redirect conn, to: page_path(conn, :shard_list) end def add_peer(conn, _params) do try do ip = conn.params["ip"] port = conn.params["port"] {:ok, ip_tuple} = case :inet.parse_address(to_charlist(ip)) do {:ok, tup} -> {:ok, tup} _ -> case :inet.gethostbyname(to_charlist(ip)) do {:ok, {:hostent, _, _, :inet, 4, [ip_tup | _]}} -> {:ok, ip_tup} _ -> :error end end {port_num, _} = Integer.parse port SNet.Manager.add_peer({:inet, ip_tuple, port_num}) rescue _ -> nil end redirect conn, to: page_path(conn, :peer_list) end end