mirror of
https://git.pleroma.social/pleroma/pleroma.git
synced 2024-12-23 08:36:29 +00:00
Support enabling upload filters during instance gen
This commit is contained in:
parent
bc3cf0fee0
commit
6c61ef14c3
4 changed files with 77 additions and 3 deletions
|
@ -37,3 +37,6 @@ If any of the options are left unspecified, you will be prompted interactively.
|
||||||
- `--static-dir <path>` - the directory custom public files should be read from (custom emojis, frontend bundle overrides, robots.txt, etc.)
|
- `--static-dir <path>` - the directory custom public files should be read from (custom emojis, frontend bundle overrides, robots.txt, etc.)
|
||||||
- `--listen-ip <ip>` - the ip the app should listen to, defaults to 127.0.0.1
|
- `--listen-ip <ip>` - the ip the app should listen to, defaults to 127.0.0.1
|
||||||
- `--listen-port <port>` - the port the app should listen to, defaults to 4000
|
- `--listen-port <port>` - the port the app should listen to, defaults to 4000
|
||||||
|
- `--strip-uploads <Y|N>` - use ExifTool to strip uploads of sensitive location data
|
||||||
|
- `--anonymize-uploads <Y|N>` - randomize uploaded filenames
|
||||||
|
- `--dedupe-uploads <Y|N>` - store files based on their hash to reduce data storage requirements if duplicates are uploaded with different filenames
|
||||||
|
|
|
@ -33,7 +33,10 @@ defmodule Mix.Tasks.Pleroma.Instance do
|
||||||
uploads_dir: :string,
|
uploads_dir: :string,
|
||||||
static_dir: :string,
|
static_dir: :string,
|
||||||
listen_ip: :string,
|
listen_ip: :string,
|
||||||
listen_port: :string
|
listen_port: :string,
|
||||||
|
strip_uploads: :string,
|
||||||
|
anonymize_uploads: :string,
|
||||||
|
dedupe_uploads: :string
|
||||||
],
|
],
|
||||||
aliases: [
|
aliases: [
|
||||||
o: :output,
|
o: :output,
|
||||||
|
@ -158,6 +161,30 @@ defmodule Mix.Tasks.Pleroma.Instance do
|
||||||
)
|
)
|
||||||
|> Path.expand()
|
|> Path.expand()
|
||||||
|
|
||||||
|
strip_uploads =
|
||||||
|
get_option(
|
||||||
|
options,
|
||||||
|
:strip_uploads,
|
||||||
|
"Do you want to strip location (GPS) data from uploaded images? (y/n)",
|
||||||
|
"y"
|
||||||
|
) === "y"
|
||||||
|
|
||||||
|
anonymize_uploads =
|
||||||
|
get_option(
|
||||||
|
options,
|
||||||
|
:anonymize_uploads,
|
||||||
|
"Do you want to anonymize the filenames of uploads? (y/n)",
|
||||||
|
"n"
|
||||||
|
) === "y"
|
||||||
|
|
||||||
|
dedupe_uploads =
|
||||||
|
get_option(
|
||||||
|
options,
|
||||||
|
:dedupe_uploads,
|
||||||
|
"Do you want to deduplicate uploaded files? (y/n)",
|
||||||
|
"n"
|
||||||
|
) === "y"
|
||||||
|
|
||||||
Config.put([:instance, :static_dir], static_dir)
|
Config.put([:instance, :static_dir], static_dir)
|
||||||
|
|
||||||
secret = :crypto.strong_rand_bytes(64) |> Base.encode64() |> binary_part(0, 64)
|
secret = :crypto.strong_rand_bytes(64) |> Base.encode64() |> binary_part(0, 64)
|
||||||
|
@ -188,7 +215,13 @@ defmodule Mix.Tasks.Pleroma.Instance do
|
||||||
uploads_dir: uploads_dir,
|
uploads_dir: uploads_dir,
|
||||||
rum_enabled: rum_enabled,
|
rum_enabled: rum_enabled,
|
||||||
listen_ip: listen_ip,
|
listen_ip: listen_ip,
|
||||||
listen_port: listen_port
|
listen_port: listen_port,
|
||||||
|
upload_filters:
|
||||||
|
upload_filters(%{
|
||||||
|
strip: strip_uploads,
|
||||||
|
anonymize: anonymize_uploads,
|
||||||
|
dedupe: dedupe_uploads
|
||||||
|
})
|
||||||
)
|
)
|
||||||
|
|
||||||
result_psql =
|
result_psql =
|
||||||
|
@ -247,4 +280,31 @@ defmodule Mix.Tasks.Pleroma.Instance do
|
||||||
File.write(robots_txt_path, robots_txt)
|
File.write(robots_txt_path, robots_txt)
|
||||||
shell_info("Writing #{robots_txt_path}.")
|
shell_info("Writing #{robots_txt_path}.")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp upload_filters(filters) when is_map(filters) do
|
||||||
|
enabled_filters =
|
||||||
|
if filters.strip do
|
||||||
|
[Pleroma.Upload.Filter.ExifTool]
|
||||||
|
else
|
||||||
|
[]
|
||||||
|
end
|
||||||
|
|
||||||
|
enabled_filters =
|
||||||
|
if filters.anonymize do
|
||||||
|
enabled_filters ++ [Pleroma.Upload.Filter.AnonymizeFilename]
|
||||||
|
else
|
||||||
|
enabled_filters
|
||||||
|
end
|
||||||
|
|
||||||
|
enabled_filters =
|
||||||
|
if filters.dedupe do
|
||||||
|
enabled_filters ++ [Pleroma.Upload.Filter.Dedupe]
|
||||||
|
else
|
||||||
|
enabled_filters
|
||||||
|
end
|
||||||
|
|
||||||
|
enabled_filters
|
||||||
|
end
|
||||||
|
|
||||||
|
defp upload_filters(_), do: []
|
||||||
end
|
end
|
||||||
|
|
|
@ -71,3 +71,7 @@ config :pleroma, Pleroma.Uploaders.Local, uploads: "<%= uploads_dir %>"
|
||||||
config :joken, default_signer: "<%= jwt_secret %>"
|
config :joken, default_signer: "<%= jwt_secret %>"
|
||||||
|
|
||||||
config :pleroma, configurable_from_database: <%= db_configurable? %>
|
config :pleroma, configurable_from_database: <%= db_configurable? %>
|
||||||
|
|
||||||
|
<%= if Kernel.length(upload_filters) > 0 do
|
||||||
|
"config :pleroma, Pleroma.Upload, filters: #{inspect(upload_filters)}"
|
||||||
|
end %>
|
||||||
|
|
|
@ -63,7 +63,13 @@ defmodule Pleroma.InstanceTest do
|
||||||
"--uploads-dir",
|
"--uploads-dir",
|
||||||
"test/uploads",
|
"test/uploads",
|
||||||
"--static-dir",
|
"--static-dir",
|
||||||
"./test/../test/instance/static/"
|
"./test/../test/instance/static/",
|
||||||
|
"--strip-uploads",
|
||||||
|
"y",
|
||||||
|
"--dedupe-uploads",
|
||||||
|
"n",
|
||||||
|
"--anonymize-uploads",
|
||||||
|
"n"
|
||||||
])
|
])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -82,6 +88,7 @@ defmodule Pleroma.InstanceTest do
|
||||||
assert generated_config =~ "password: \"dbpass\""
|
assert generated_config =~ "password: \"dbpass\""
|
||||||
assert generated_config =~ "configurable_from_database: true"
|
assert generated_config =~ "configurable_from_database: true"
|
||||||
assert generated_config =~ "http: [ip: {127, 0, 0, 1}, port: 4000]"
|
assert generated_config =~ "http: [ip: {127, 0, 0, 1}, port: 4000]"
|
||||||
|
assert generated_config =~ "filters: [Pleroma.Upload.Filter.ExifTool]"
|
||||||
assert File.read!(tmp_path() <> "setup.psql") == generated_setup_psql()
|
assert File.read!(tmp_path() <> "setup.psql") == generated_setup_psql()
|
||||||
assert File.exists?(Path.expand("./test/instance/static/robots.txt"))
|
assert File.exists?(Path.expand("./test/instance/static/robots.txt"))
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue