migration and warning for RemoteIp plug rename
authorAlexander Strizhakov <alex.strizhakov@gmail.com>
Sat, 19 Sep 2020 18:44:02 +0000 (21:44 +0300)
committerAlexander Strizhakov <alex.strizhakov@gmail.com>
Tue, 13 Oct 2020 13:44:04 +0000 (16:44 +0300)
lib/pleroma/config/deprecation_warnings.ex
priv/repo/migrations/20200919182636_remoteip_plug_rename.exs [new file with mode: 0644]

index 4ba6eaa77e0e86ad90a8c11a8dd058720ff29b16..59c6b0f58f33e45763ee933e760f247818938cf9 100644 (file)
@@ -39,7 +39,8 @@ defmodule Pleroma.Config.DeprecationWarnings do
          :ok <- check_media_proxy_whitelist_config(),
          :ok <- check_welcome_message_config(),
          :ok <- check_gun_pool_options(),
-         :ok <- check_activity_expiration_config() do
+         :ok <- check_activity_expiration_config(),
+         :ok <- check_remote_ip_plug_name() do
       :ok
     else
       _ ->
@@ -176,4 +177,20 @@ defmodule Pleroma.Config.DeprecationWarnings do
       warning_preface
     )
   end
+
+  @spec check_remote_ip_plug_name() :: :ok | nil
+  def check_remote_ip_plug_name do
+    warning_preface = """
+    !!!DEPRECATION WARNING!!!
+    Your config is using old namespace for RemoteIp Plug. Setting should work for now, but you are advised to change to new namespace to prevent possible issues later:
+    """
+
+    move_namespace_and_warn(
+      [
+        {Pleroma.Plugs.RemoteIp, Pleroma.Web.Plugs.RemoteIp,
+         "\n* `config :pleroma, Pleroma.Plugs.RemoteIp` is now `config :pleroma, Pleroma.Web.Plugs.RemoteIp`"}
+      ],
+      warning_preface
+    )
+  end
 end
diff --git a/priv/repo/migrations/20200919182636_remoteip_plug_rename.exs b/priv/repo/migrations/20200919182636_remoteip_plug_rename.exs
new file mode 100644 (file)
index 0000000..77c3b6d
--- /dev/null
@@ -0,0 +1,19 @@
+defmodule Pleroma.Repo.Migrations.RemoteipPlugRename do
+  use Ecto.Migration
+
+  import Ecto.Query
+
+  def up do
+    config =
+      from(c in Pleroma.ConfigDB, where: c.group == ^:pleroma and c.key == ^Pleroma.Plugs.RemoteIp)
+      |> Pleroma.Repo.one()
+
+    if config do
+      config
+      |> Ecto.Changeset.change(key: Pleroma.Web.Plugs.RemoteIp)
+      |> Pleroma.Repo.update()
+    end
+  end
+
+  def down, do: :ok
+end