Merge branch 'exif' into 'develop'
Ensure StripLocation works for PNGs See merge request pleroma/pleroma!4167
This commit is contained in:
commit
ccbbee7963
2
.gitignore
vendored
2
.gitignore
vendored
@ -6,7 +6,7 @@
|
|||||||
/test/instance
|
/test/instance
|
||||||
/test/uploads
|
/test/uploads
|
||||||
/.elixir_ls
|
/.elixir_ls
|
||||||
/test/fixtures/DSCN0010_tmp.jpg
|
/test/fixtures/DSCN0010_tmp*
|
||||||
/test/fixtures/test_tmp.txt
|
/test/fixtures/test_tmp.txt
|
||||||
/test/fixtures/image_tmp.jpg
|
/test/fixtures/image_tmp.jpg
|
||||||
/test/tmp/
|
/test/tmp/
|
||||||
|
1
changelog.d/4167-strip-gps-info-in-png.fix
Normal file
1
changelog.d/4167-strip-gps-info-in-png.fix
Normal file
@ -0,0 +1 @@
|
|||||||
|
Ensure that StripLocation actually removes everything resembling GPS data from PNGs
|
@ -16,7 +16,9 @@ defmodule Pleroma.Upload.Filter.Exiftool.StripLocation do
|
|||||||
|
|
||||||
def filter(%Pleroma.Upload{tempfile: file, content_type: "image" <> _}) do
|
def filter(%Pleroma.Upload{tempfile: file, content_type: "image" <> _}) do
|
||||||
try do
|
try do
|
||||||
case System.cmd("exiftool", ["-overwrite_original", "-gps:all=", file], parallelism: true) do
|
case System.cmd("exiftool", ["-overwrite_original", "-gps:all=", "-png:all=", file],
|
||||||
|
parallelism: true
|
||||||
|
) do
|
||||||
{_response, 0} -> {:ok, :filtered}
|
{_response, 0} -> {:ok, :filtered}
|
||||||
{error, 1} -> {:error, error}
|
{error, 1} -> {:error, error}
|
||||||
end
|
end
|
||||||
|
BIN
test/fixtures/DSCN0010.png
vendored
Normal file
BIN
test/fixtures/DSCN0010.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 744 KiB |
@ -9,26 +9,28 @@ defmodule Pleroma.Upload.Filter.Exiftool.StripLocationTest do
|
|||||||
test "apply exiftool filter" do
|
test "apply exiftool filter" do
|
||||||
assert Pleroma.Utils.command_available?("exiftool")
|
assert Pleroma.Utils.command_available?("exiftool")
|
||||||
|
|
||||||
|
~w{jpg png}
|
||||||
|
|> Enum.map(fn type ->
|
||||||
File.cp!(
|
File.cp!(
|
||||||
"test/fixtures/DSCN0010.jpg",
|
"test/fixtures/DSCN0010.#{type}",
|
||||||
"test/fixtures/DSCN0010_tmp.jpg"
|
"test/fixtures/DSCN0010_tmp.#{type}"
|
||||||
)
|
)
|
||||||
|
|
||||||
upload = %Pleroma.Upload{
|
upload = %Pleroma.Upload{
|
||||||
name: "image_with_GPS_data.jpg",
|
name: "image_with_GPS_data.#{type}",
|
||||||
content_type: "image/jpeg",
|
content_type: "image/jpeg",
|
||||||
path: Path.absname("test/fixtures/DSCN0010.jpg"),
|
path: Path.absname("test/fixtures/DSCN0010.#{type}"),
|
||||||
tempfile: Path.absname("test/fixtures/DSCN0010_tmp.jpg")
|
tempfile: Path.absname("test/fixtures/DSCN0010_tmp.#{type}")
|
||||||
}
|
}
|
||||||
|
|
||||||
assert Filter.Exiftool.StripLocation.filter(upload) == {:ok, :filtered}
|
assert Filter.Exiftool.StripLocation.filter(upload) == {:ok, :filtered}
|
||||||
|
|
||||||
{exif_original, 0} = System.cmd("exiftool", ["test/fixtures/DSCN0010.jpg"])
|
{exif_original, 0} = System.cmd("exiftool", ["test/fixtures/DSCN0010.#{type}"])
|
||||||
{exif_filtered, 0} = System.cmd("exiftool", ["test/fixtures/DSCN0010_tmp.jpg"])
|
{exif_filtered, 0} = System.cmd("exiftool", ["test/fixtures/DSCN0010_tmp.#{type}"])
|
||||||
|
|
||||||
refute exif_original == exif_filtered
|
|
||||||
assert String.match?(exif_original, ~r/GPS/)
|
assert String.match?(exif_original, ~r/GPS/)
|
||||||
refute String.match?(exif_filtered, ~r/GPS/)
|
refute String.match?(exif_filtered, ~r/GPS/)
|
||||||
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
test "verify webp, heic, svg files are skipped" do
|
test "verify webp, heic, svg files are skipped" do
|
||||||
|
Loading…
Reference in New Issue
Block a user