AnonymizeFilename: allow for a pre-defined text instead of random string
authorhref <href@random.sh>
Fri, 7 Dec 2018 13:07:11 +0000 (14:07 +0100)
committerhref <href@random.sh>
Fri, 7 Dec 2018 13:07:11 +0000 (14:07 +0100)
Improve docs

config/config.md
lib/pleroma/upload/filter/anonymize_filename.ex

index d90d18566308ecb9268cacc0e1d8b269649fee0d..7f97f734217b5e36110ee22e06ca14d05566a8e9 100644 (file)
@@ -19,6 +19,17 @@ Note: `strip_exif` has been replaced by `Pleroma.Upload.Filter.Mogrify`.
 
 * `args`: List of actions for the `mogrify` command like `"strip"` or `["strip", {"impode", "1"}]`.
 
+## Pleroma.Upload.Filter.Dedupe
+
+No specific configuration.
+
+## Pleroma.Upload.Filter.AnonymizeFilename
+
+This filter remplaces the filename (not the path) of an upload. For complete obfuscation, add
+`Pleroma.Upload.Filter.Dedupe` before AnonymizeFilename.
+
+* `text`: Text to remplace filenames in links. If empty, `{random}.extension` will be used.
+
 ## :uri_schemes
 * `valid_schemes`: List of the scheme part that is considered valid to be an URL
 
index a83e764e5e972abd5f81ffdddfdff8779c7fc7c9..39eed7af329c642cbdc268a7d515d4727e0012cf 100644 (file)
@@ -1,10 +1,23 @@
 defmodule Pleroma.Upload.Filter.AnonymizeFilename do
-  @moduledoc "Replaces the original filename with a randomly generated string."
+  @moduledoc """
+  Replaces the original filename with a pre-defined text or randomly generated string.
+
+  Should be used after `Pleroma.Upload.Filter.Dedupe`.
+  """
   @behaviour Pleroma.Upload.Filter
 
   def filter(upload) do
     extension = List.last(String.split(upload.name, "."))
-    string = Base.url_encode64(:crypto.strong_rand_bytes(10), padding: false)
-    {:ok, %Pleroma.Upload{upload | name: string <> "." <> extension}}
+    name = Pleroma.Config.get([__MODULE__, :text], random(extension))
+    {:ok, %Pleroma.Upload{upload | name: name}}
+  end
+
+  defp random(extension) do
+    string =
+      10
+      |> :crypto.strong_rand_bytes()
+      |> Base.url_encode64(padding: false)
+
+    string <> "." <> extension
   end
 end