Browse Source

Merge branch 'feature/anonymize-filenames' into 'develop'

Upload filter: anonymize filename

See merge request pleroma/pleroma!486
tags/v0.9.9
kaniini 5 years ago
parent
commit
8c3ff06e35
2 changed files with 24 additions and 0 deletions
  1. +10
    -0
      lib/pleroma/upload/filter/anonymize_filename.ex
  2. +14
    -0
      test/upload_test.exs

+ 10
- 0
lib/pleroma/upload/filter/anonymize_filename.ex View File

@@ -0,0 +1,10 @@
defmodule Pleroma.Upload.Filter.AnonymizeFilename do
@moduledoc "Replaces the original filename with a randomly generated string."
@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}}
end
end

+ 14
- 0
test/upload_test.exs View File

@@ -134,5 +134,19 @@ defmodule Pleroma.UploadTest do
{:ok, data} = Upload.store(file)
assert data["name"] == "test.txt"
end

test "copies the file to the configured folder with anonymizing filename" do
File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg")

file = %Plug.Upload{
content_type: "image/jpg",
path: Path.absname("test/fixtures/image_tmp.jpg"),
filename: "an [image.jpg"
}

{:ok, data} = Upload.store(file, filters: [Pleroma.Upload.Filter.AnonymizeFilename])

refute data["name"] == "an [image.jpg"
end
end
end

Loading…
Cancel
Save