X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fupload.ex;h=408a3fc560e81958bdf0f19ce3aae85e814df273;hb=13440a80e1e30141f0f0466ff351bd6f9c148228;hp=c7f11f3803666c2a21503963ec0a4b54b0b6bf70;hpb=12c7a023decac20ca563c25faa4031c1b3cc56ca;p=akkoma diff --git a/lib/pleroma/upload.ex b/lib/pleroma/upload.ex index c7f11f380..408a3fc56 100644 --- a/lib/pleroma/upload.ex +++ b/lib/pleroma/upload.ex @@ -18,8 +18,10 @@ defmodule Pleroma.Upload do File.cp!(file.path, result_file) end + strip_exif_data(content_type, result_file) + %{ - "type" => "Image", + "type" => "Document", "url" => [ %{ "type" => "Link", @@ -67,6 +69,8 @@ defmodule Pleroma.Upload do File.rename(uuidpath, result_file) end + strip_exif_data(content_type, result_file) + %{ "type" => "Image", "url" => [ @@ -80,16 +84,31 @@ defmodule Pleroma.Upload do } end + def strip_exif_data(content_type, file) do + settings = Application.get_env(:pleroma, Pleroma.Upload) + do_strip = Keyword.fetch!(settings, :strip_exif) + [filetype, ext] = String.split(content_type, "/") + + if filetype == "image" and do_strip == true do + Mogrify.open(file) |> Mogrify.custom("strip") |> Mogrify.save(in_place: true) + end + end + def upload_path do settings = Application.get_env(:pleroma, Pleroma.Upload) Keyword.fetch!(settings, :uploads) end defp create_name(uuid, ext, type) do - if type == "application/octet-stream" do - String.downcase(Enum.join([uuid, ext], ".")) - else - String.downcase(Enum.join([uuid, List.last(String.split(type, "/"))], ".")) + case type do + "application/octet-stream" -> + String.downcase(Enum.join([uuid, ext], ".")) + + "audio/mpeg" -> + String.downcase(Enum.join([uuid, "mp3"], ".")) + + _ -> + String.downcase(Enum.join([uuid, List.last(String.split(type, "/"))], ".")) end end @@ -105,7 +124,21 @@ defmodule Pleroma.Upload do if should_dedupe do create_name(uuid, List.last(String.split(file.filename, ".")), type) else - file.filename + unless String.contains?(file.filename, ".") do + case type do + "image/png" -> file.filename <> ".png" + "image/jpeg" -> file.filename <> ".jpg" + "image/gif" -> file.filename <> ".gif" + "video/webm" -> file.filename <> ".webm" + "video/mp4" -> file.filename <> ".mp4" + "audio/mpeg" -> file.filename <> ".mp3" + "audio/ogg" -> file.filename <> ".ogg" + "audio/wav" -> file.filename <> ".wav" + _ -> file.filename + end + else + file.filename + end end end