d5b8ef3edb9eec0ec9cbf01c18058d3fa6e834f4
[anni] / lib / pleroma / web / plugs / federating_plug.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.Plugs.FederatingPlug do
6   import Plug.Conn
7
8   def init(options) do
9     options
10   end
11
12   def call(conn, _opts) do
13     if federating?() do
14       conn
15     else
16       fail(conn)
17     end
18   end
19
20   def federating?, do: Pleroma.Config.get([:instance, :federating])
21
22   # Definition for the use in :if_func / :unless_func plug options
23   def federating?(_conn), do: federating?()
24
25   defp fail(conn) do
26     conn
27     |> put_status(404)
28     |> Phoenix.Controller.put_view(Pleroma.Web.ErrorView)
29     |> Phoenix.Controller.render("404.json")
30     |> halt()
31   end
32 end