lib/caddy/admin.ex

defmodule Caddy.Admin do
  @moduledoc """

  Caddy Admin

  Start Caddy Admin

  """
  require Logger

  use GenServer

  @check_interval 15_000

  def start_link(_) do
    GenServer.start_link(__MODULE__, [], name: __MODULE__)
  end

  def init(_) do
    Logger.info("Caddy Admin init")
    Process.send_after(self(), :check_server, @check_interval)
    {:ok, %{}}
  end

  def handle_info(:check_server, state) do
    check_caddy_server()
    Process.send_after(self(), :check_server, @check_interval)
    {:noreply, state}
  end

  defp check_caddy_server() do
    %{"listen" => "unix/" <> _} = Caddy.Admin.Api.get_config("admin")
  rescue
    _ ->
      Caddy.Bootstrap.restart()
  end
end