logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git
commit: 8c3ff06e35e11a40cf4eb35a41a2019b7496e62c
parent ca24ad2a2babed0700a38effb74910008d58f6ea
Author: kaniini <nenolod@gmail.com>
Date:   Sat,  1 Dec 2018 03:09:20 +0000

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

Upload filter: anonymize filename

See merge request pleroma/pleroma!486

Diffstat:

Alib/pleroma/upload/filter/anonymize_filename.ex10++++++++++
Mtest/upload_test.exs14++++++++++++++
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 @@ -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 @@ -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