From 0e20d5529a090f12636caccb41e5e040786eb0c6 Mon Sep 17 00:00:00 2001 From: lain Date: Mon, 5 Mar 2018 09:26:24 +0100 Subject: [PATCH] Add way to disable federation. --- config/config.exs | 3 ++- lib/pleroma/web/federator/federator.ex | 12 ++++++++---- lib/pleroma/web/router.ex | 26 +++++++++++++++++--------- 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/config/config.exs b/config/config.exs index 01109b30f..703c10c48 100644 --- a/config/config.exs +++ b/config/config.exs @@ -49,7 +49,8 @@ name: "Pleroma", email: "example@example.com", limit: 5000, - registrations_open: true + registrations_open: true, + federating: true config :pleroma, :media_proxy, enabled: false, diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex index c9f9dc7a1..8e28976a6 100644 --- a/lib/pleroma/web/federator/federator.ex +++ b/lib/pleroma/web/federator/federator.ex @@ -7,6 +7,8 @@ defmodule Pleroma.Web.Federator do @websub Application.get_env(:pleroma, :websub) @ostatus Application.get_env(:pleroma, :ostatus) @httpoison Application.get_env(:pleroma, :httpoison) + @instance Application.get_env(:pleroma, :instance) + @federating Keyword.get(@instance, :federating) @max_jobs 10 def start_link do @@ -80,10 +82,12 @@ def handle(type, _) do end def enqueue(type, payload, priority \\ 1) do - if Mix.env == :test do - handle(type, payload) - else - GenServer.cast(__MODULE__, {:enqueue, type, payload, priority}) + if @federating do + if Mix.env == :test do + handle(type, payload) + else + GenServer.cast(__MODULE__, {:enqueue, type, payload, priority}) + end end end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 6e9f40955..59fb5cd6b 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -3,6 +3,9 @@ defmodule Pleroma.Web.Router do alias Pleroma.{Repo, User, Web.Router} + @instance Application.get_env(:pleroma, :instance) + @federating Keyword.get(@instance, :federating) + def user_fetcher(username) do {:ok, Repo.get_by(User, %{nickname: username})} end @@ -228,20 +231,25 @@ def user_fetcher(username) do get "/objects/:uuid", OStatus.OStatusController, :object get "/activities/:uuid", OStatus.OStatusController, :activity get "/notice/:id", OStatus.OStatusController, :notice - get "/users/:nickname/feed", OStatus.OStatusController, :feed get "/users/:nickname", OStatus.OStatusController, :feed_redirect - post "/users/:nickname/salmon", OStatus.OStatusController, :salmon_incoming - post "/push/hub/:nickname", Websub.WebsubController, :websub_subscription_request - get "/push/subscriptions/:id", Websub.WebsubController, :websub_subscription_confirmation - post "/push/subscriptions/:id", Websub.WebsubController, :websub_incoming + + if @federating do + post "/users/:nickname/salmon", OStatus.OStatusController, :salmon_incoming + post "/push/hub/:nickname", Websub.WebsubController, :websub_subscription_request + get "/push/subscriptions/:id", Websub.WebsubController, :websub_subscription_confirmation + post "/push/subscriptions/:id", Websub.WebsubController, :websub_incoming + end + end - scope "/.well-known", Pleroma.Web do - pipe_through :well_known + if @federating do + scope "/.well-known", Pleroma.Web do + pipe_through :well_known - get "/host-meta", WebFinger.WebFingerController, :host_meta - get "/webfinger", WebFinger.WebFingerController, :webfinger + get "/host-meta", WebFinger.WebFingerController, :host_meta + get "/webfinger", WebFinger.WebFingerController, :webfinger + end end scope "/", Pleroma.Web.MastodonAPI do