diff --git a/config/runtime.exs b/config/runtime.exs index 6cb062f..0f2b254 100644 --- a/config/runtime.exs +++ b/config/runtime.exs @@ -64,7 +64,8 @@ if config_env() == :prod do tmpfile_directory: Path.join([System.tmp_dir!(), "pinchflat", "data"]), dns_cluster_query: System.get_env("DNS_CLUSTER_QUERY"), expose_feed_endpoints: expose_feed_endpoints, - timezone: System.get_env("TIMEZONE") || System.get_env("TZ") || "UTC" + timezone: System.get_env("TIMEZONE") || System.get_env("TZ") || "UTC", + log_path: log_path config :tzdata, :data_dir, System.get_env("TZ_DATA_DIR", "/etc/elixir_tzdata_data") diff --git a/lib/pinchflat_web/components/layouts/partials/sidebar.html.heex b/lib/pinchflat_web/components/layouts/partials/sidebar.html.heex index 77463cd..2d7ae0d 100644 --- a/lib/pinchflat_web/components/layouts/partials/sidebar.html.heex +++ b/lib/pinchflat_web/components/layouts/partials/sidebar.html.heex @@ -32,7 +32,7 @@ current_path={Phoenix.Controller.current_path(@conn)} > <:submenu text="Settings" href={~p"/settings"} /> - <:submenu text="App Info" href={~p"/settings"} /> + <:submenu text="App Info" href={~p"/app_info"} /> diff --git a/lib/pinchflat_web/controllers/settings/setting_controller.ex b/lib/pinchflat_web/controllers/settings/setting_controller.ex index c87d51f..5e009c1 100644 --- a/lib/pinchflat_web/controllers/settings/setting_controller.ex +++ b/lib/pinchflat_web/controllers/settings/setting_controller.ex @@ -23,4 +23,20 @@ defmodule PinchflatWeb.Settings.SettingController do render(conn, "show.html", changeset: changeset) end end + + def app_info(conn, _params) do + render(conn, "app_info.html") + end + + def download_logs(conn, _params) do + log_path = Application.get_env(:pinchflat, :log_path) + + if log_path && File.exists?(log_path) do + send_download(conn, {:file, log_path}, filename: "pinchflat-logs-#{Date.utc_today()}.txt") + else + conn + |> put_flash(:error, "Log file couldn't be found") + |> redirect(to: ~p"/app_info") + end + end end diff --git a/lib/pinchflat_web/controllers/settings/setting_html.ex b/lib/pinchflat_web/controllers/settings/setting_html.ex index 392975d..bb5e255 100644 --- a/lib/pinchflat_web/controllers/settings/setting_html.ex +++ b/lib/pinchflat_web/controllers/settings/setting_html.ex @@ -18,4 +18,14 @@ defmodule PinchflatWeb.Settings.SettingHTML do ~s(Server endpoint for Apprise notifications when new media is found. See Apprise docs for more information) end + + def diagnostic_info_string do + """ + App Version: #{Application.spec(:pinchflat)[:vsn]} + yt-dlp Version: #{Settings.get!(:yt_dlp_version)} + Apprise Version: #{Settings.get!(:apprise_version)} + System Architecture: #{to_string(:erlang.system_info(:system_architecture))} + Timezone: #{Application.get_env(:pinchflat, :timezone)} + """ + end end diff --git a/lib/pinchflat_web/controllers/settings/setting_html/app_info.html.heex b/lib/pinchflat_web/controllers/settings/setting_html/app_info.html.heex new file mode 100644 index 0000000..d1628c3 --- /dev/null +++ b/lib/pinchflat_web/controllers/settings/setting_html/app_info.html.heex @@ -0,0 +1,26 @@ +