diff options
| author | kaniini <nenolod@gmail.com> | 2018-12-01 03:09:20 +0000 | 
|---|---|---|
| committer | kaniini <nenolod@gmail.com> | 2018-12-01 03:09:20 +0000 | 
| commit | 8c3ff06e35e11a40cf4eb35a41a2019b7496e62c (patch) | |
| tree | 988d9c6ffe5b0cc96c29e0e3015cf7500e25c217 | |
| parent | ca24ad2a2babed0700a38effb74910008d58f6ea (diff) | |
| parent | e9982c521b187136fd197d11a1e5d9b022da5e38 (diff) | |
| download | pleroma-8c3ff06e35e11a40cf4eb35a41a2019b7496e62c.tar.gz pleroma-8c3ff06e35e11a40cf4eb35a41a2019b7496e62c.zip  | |
Merge branch 'feature/anonymize-filenames' into 'develop'
Upload filter: anonymize filename
See merge request pleroma/pleroma!486
| -rw-r--r-- | lib/pleroma/upload/filter/anonymize_filename.ex | 10 | ||||
| -rw-r--r-- | test/upload_test.exs | 14 | 
2 files changed, 24 insertions, 0 deletions
diff --git a/lib/pleroma/upload/filter/anonymize_filename.ex b/lib/pleroma/upload/filter/anonymize_filename.ex new file mode 100644 index 000000000..a83e764e5 --- /dev/null +++ b/lib/pleroma/upload/filter/anonymize_filename.ex @@ -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 diff --git a/test/upload_test.exs b/test/upload_test.exs index cfd86ddd0..b2ce755d2 100644 --- a/test/upload_test.exs +++ b/test/upload_test.exs @@ -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  | 
