Add config for Pleroma.Backup
authorEgor Kislitsyn <egor@kislitsyn.com>
Fri, 4 Sep 2020 14:30:39 +0000 (18:30 +0400)
committerEgor Kislitsyn <egor@kislitsyn.com>
Wed, 7 Oct 2020 14:34:29 +0000 (18:34 +0400)
config/config.exs
config/description.exs
docs/configuration/cheatsheet.md
lib/pleroma/backup.ex
test/backup_test.exs

index 1f10167e5b6f335f3637b45d3d3b806cda9bdc84..09023e2c335c6a32520de50450537e185dd20457 100644 (file)
@@ -818,6 +818,10 @@ config :floki, :html_parser, Floki.HTMLParser.FastHtml
 
 config :pleroma, Pleroma.Web.Auth.Authenticator, Pleroma.Web.Auth.PleromaAuthenticator
 
+config :pleroma, Pleroma.Backup,
+  purge_after_days: 30,
+  limit_days: 7
+
 # 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 13e44afe89e15bae4090c9e6691d86113a88d1df..4942e196d27e03eb5403d7a771b500fae13bab45 100644 (file)
@@ -3712,5 +3712,25 @@ config :pleroma, :config_description, [
         ]
       }
     ]
+  },
+  %{
+    group: :pleroma,
+    key: Pleroma.Backup,
+    type: :group,
+    description: "Account Backup",
+    children: [
+      %{
+        key: :purge_after_days,
+        type: :integer,
+        description: "Remove backup achives after N days",
+        suggestions: [30]
+      },
+      %{
+        key: :limit_days,
+        type: :integer,
+        description: "Limit user to export not more often than once per N days",
+        suggestions: [7]
+      }
+    ]
   }
 ]
index 42e5fe80886c4b9d687484f83ebc1aa1e7a509e5..cc4081f14c3a067e9876933d550aa0570357a0de 100644 (file)
@@ -1083,6 +1083,11 @@ Control favicons for instances.
 
 * `enabled`: Allow/disallow displaying and getting instances favicons
 
+## Account Backup
+
+* `:purge_after_days` an integer, remove backup achives after N days.
+* `:limit_days` an integer, limit user to export not more often than once per N days.
+
 ## Frontend management
 
 Frontends in Pleroma are swappable - you can specify which one to use here.
index 9b5d2625f9c88b80f5b3d9831eb5d5f9bd1d1c4e..e384b6b0080aaf5886fc2d2673d77feb72702c05 100644 (file)
@@ -49,7 +49,7 @@ defmodule Pleroma.Backup do
   defp validate_limit(user) do
     case get_last(user.id) do
       %__MODULE__{inserted_at: inserted_at} ->
-        days = 7
+        days = Pleroma.Config.get([Pleroma.Backup, :limit_days])
         diff = Timex.diff(NaiveDateTime.utc_now(), inserted_at, :days)
 
         if diff > days do
index 5b1f76dd9e0430cdc79d9275fb89ffa6c087f023..f343b03614b026fe964c371a21238a216cc8d940 100644 (file)
@@ -27,7 +27,7 @@ defmodule Pleroma.BackupTest do
 
   test "it return an error if the export limit is over" do
     %{id: user_id} = user = insert(:user)
-    limit_days = 7
+    limit_days = Pleroma.Config.get([Pleroma.Backup, :limit_days])
     assert {:ok, %Oban.Job{args: args}} = Backup.create(user)
     backup = Backup.get(args["backup_id"])
     assert %Backup{user_id: ^user_id, processed: false, file_size: 0} = backup