defmodule ShardWeb.PageController do use ShardWeb, :controller def index(conn, _params) do render conn, "index.html" 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 Shard.Manager.add_peer(ip_tuple, port_num) rescue _ -> nil end redirect conn, to: page_path(conn, :index) end end