From 64116f63d99a1eab9b697fc7a103e72dc80a095c Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 5 Jan 2021 12:25:30 -0600 Subject: [PATCH 1/3] URI.encode custom emojis --- lib/pleroma/web/activity_pub/transmogrifier.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 565d32433..5499f8a08 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -919,7 +919,7 @@ def add_emoji_tags(object), do: object defp build_emoji_tag({name, url}) do %{ - "icon" => %{"url" => url, "type" => "Image"}, + "icon" => %{"url" => "#{URI.encode(url)}", "type" => "Image"}, "name" => ":" <> name <> ":", "type" => "Emoji", "updated" => "1970-01-01T00:00:00Z", From 8864ac65c693eb19a36a6e0116abc13bcfe70ddb Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 5 Jan 2021 13:25:14 -0600 Subject: [PATCH 2/3] Add dinosaur gif from https://gifs.cc "Our animations are free to be used to enhance your website." --- config/emoji.txt | 1 + priv/static/emoji/dino walking.gif | Bin 0 -> 11213 bytes 2 files changed, 1 insertion(+) create mode 100644 priv/static/emoji/dino walking.gif diff --git a/config/emoji.txt b/config/emoji.txt index 200768ad1..52b714ee5 100644 --- a/config/emoji.txt +++ b/config/emoji.txt @@ -1,2 +1,3 @@ firefox, /emoji/Firefox.gif, Gif,Fun blank, /emoji/blank.png, Fun +dinosaur, /emoji/dino walking.gif, Gif diff --git a/priv/static/emoji/dino walking.gif b/priv/static/emoji/dino walking.gif new file mode 100644 index 0000000000000000000000000000000000000000..694a541e7f694393f6730e18d807d5a48b667a21 GIT binary patch literal 11213 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 O^Y9wEr$_=o#Qy?@3b;D} literal 0 HcmV?d00001 From f9090e00e6f6bec903c8df030c4af74ac378fccf Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 5 Jan 2021 13:58:49 -0600 Subject: [PATCH 3/3] Add test to validate URLs to custom emojis are properly encoded --- .../web/activity_pub/transmogrifier_test.exs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/test/pleroma/web/activity_pub/transmogrifier_test.exs b/test/pleroma/web/activity_pub/transmogrifier_test.exs index 66ea7664a..aa32ebaab 100644 --- a/test/pleroma/web/activity_pub/transmogrifier_test.exs +++ b/test/pleroma/web/activity_pub/transmogrifier_test.exs @@ -281,6 +281,21 @@ test "it can handle Listen activities" do {:ok, _modified} = Transmogrifier.prepare_outgoing(activity.data) end + + test "custom emoji urls are URI encoded" do + # :dinosaur: filename has a space -> dino walking.gif + user = insert(:user) + + {:ok, activity} = CommonAPI.post(user, %{status: "everybody do the dinosaur :dinosaur:"}) + + {:ok, prepared} = Transmogrifier.prepare_outgoing(activity.data) + + assert length(prepared["object"]["tag"]) == 1 + + url = prepared["object"]["tag"] |> List.first() |> Map.get("icon") |> Map.get("url") + + assert url == "http://localhost:4001/emoji/dino%20walking.gif" + end end describe "user upgrade" do