Add config option for enabling/disabling chat.
authoreal <eal@waifu.club>
Thu, 1 Feb 2018 17:23:26 +0000 (19:23 +0200)
committereal <eal@waifu.club>
Sat, 3 Feb 2018 11:42:37 +0000 (13:42 +0200)
config/config.exs
lib/pleroma/application.ex
lib/pleroma/web/channels/user_socket.ex
lib/pleroma/web/endpoint.ex

index e71d5e5a066261a2cd09b42977f623d372fc0048..01109b30f326455407dad32f6c2b23b1f50dac2d 100644 (file)
@@ -56,6 +56,9 @@ config :pleroma, :media_proxy,
   redirect_on_failure: true
   #base_url: "https://cache.pleroma.social"
 
+config :pleroma, :chat,
+  enabled: true
+
 # Import environment specific config. This must remain at the bottom
 # of this file so it overrides the configuration defined above.
 import_config "#{Mix.env}.exs"
index cdfca8b1a1cafdcc23e571d3d4ffd644a9eb2907..79b9dee9d2412194f55dd50d5bb12182e953a338 100644 (file)
@@ -20,14 +20,18 @@ defmodule Pleroma.Application do
                          limit: 2500
                        ]]),
       worker(Pleroma.Web.Federator, []),
-      worker(Pleroma.Web.ChatChannel.ChatChannelState, []),
       worker(Pleroma.Stats, []),
     ]
     ++ if Mix.env == :test, do: [], else: [worker(Pleroma.Web.Streamer, [])]
+    ++ if !chat_enabled(), do: [], else: [worker(Pleroma.Web.ChatChannel.ChatChannelState, [])]
 
     # See http://elixir-lang.org/docs/stable/elixir/Supervisor.html
     # for other strategies and supported options
     opts = [strategy: :one_for_one, name: Pleroma.Supervisor]
     Supervisor.start_link(children, opts)
   end
+
+  defp chat_enabled do
+    Application.get_env(:pleroma, :chat, []) |> Keyword.get(:enabled)
+  end
 end
index 4a9bb8e2245a8ceabcabe8996bfb8334ff6617d5..f18b3cb80d78bf140010030aa73817a8efe75d83 100644 (file)
@@ -5,7 +5,9 @@ defmodule Pleroma.Web.UserSocket do
 
   ## Channels
   # channel "room:*", Pleroma.Web.RoomChannel
-  channel "chat:*", Pleroma.Web.ChatChannel
+  if Application.get_env(:pleroma, :chat) |> Keyword.get(:enabled) do
+    channel "chat:*", Pleroma.Web.ChatChannel
+  end
 
   ## Transports
   transport :websocket, Phoenix.Transports.WebSocket
index 725d2ee64c91b0a07cada4762ba518cd52a4d8fb..8b09199e06bfab9519f365ec5b99ba1a7d0416c9 100644 (file)
@@ -1,7 +1,9 @@
 defmodule Pleroma.Web.Endpoint do
   use Phoenix.Endpoint, otp_app: :pleroma
 
-  socket "/socket", Pleroma.Web.UserSocket
+  if Application.get_env(:pleroma, :chat) |> Keyword.get(:enabled) do
+    socket "/socket", Pleroma.Web.UserSocket
+  end
   socket "/api/v1", Pleroma.Web.MastodonAPI.MastodonSocket
 
   # Serve at "/" the static files from "priv/static" directory.