summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorHaelwenn <contact+git.pleroma.social@hacktivis.me>2023-07-17 20:37:47 +0000
committerHaelwenn <contact+git.pleroma.social@hacktivis.me>2023-07-17 20:37:47 +0000
commit93ad16cca0a5b6acc1308027f798e347f44de4f8 (patch)
treec92e5857bfbd7ede443e637f9c8be58be978c89b /lib
parente38207162bdfa4a4e9e2af8f1e09d954b5227c1b (diff)
parentd7e049d5e833cebb0a67c771943d33c532f8923a (diff)
downloadpleroma-93ad16cca0a5b6acc1308027f798e347f44de4f8.tar.gz
pleroma-93ad16cca0a5b6acc1308027f798e347f44de4f8.zip
Merge branch '2023-06-deps-update' into 'develop'
2023-06 deps update + de-override plug See merge request pleroma/pleroma!3911
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/endpoint.ex7
-rw-r--r--lib/pleroma/web/multipart.ex22
-rw-r--r--lib/pleroma/web/router.ex4
3 files changed, 26 insertions, 7 deletions
diff --git a/lib/pleroma/web/endpoint.ex b/lib/pleroma/web/endpoint.ex
index d8d40cceb..574f3ab63 100644
--- a/lib/pleroma/web/endpoint.ex
+++ b/lib/pleroma/web/endpoint.ex
@@ -101,13 +101,10 @@ defmodule Pleroma.Web.Endpoint do
plug(Plug.Logger, log: :debug)
plug(Plug.Parsers,
- parsers: [
- :urlencoded,
- {:multipart, length: {Config, :get, [[:instance, :upload_limit]]}},
- :json
- ],
+ parsers: [:urlencoded, Pleroma.Web.Multipart, :json],
pass: ["*/*"],
json_decoder: Jason,
+ # Note: this is compile-time only, won't work for database-config
length: Config.get([:instance, :upload_limit]),
body_reader: {Pleroma.Web.Plugs.DigestPlug, :read_body, []}
)
diff --git a/lib/pleroma/web/multipart.ex b/lib/pleroma/web/multipart.ex
new file mode 100644
index 000000000..e24bb14c2
--- /dev/null
+++ b/lib/pleroma/web/multipart.ex
@@ -0,0 +1,22 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+# <https://hexdocs.pm/plug/Plug.Parsers.MULTIPART.html#module-dynamic-configuration>
+defmodule Pleroma.Web.Multipart do
+ @multipart Plug.Parsers.MULTIPART
+
+ def init(opts) do
+ opts
+ end
+
+ def parse(conn, "multipart", subtype, headers, opts) do
+ length = Pleroma.Config.get([:instance, :upload_limit])
+ opts = @multipart.init([length: length] ++ opts)
+ @multipart.parse(conn, "multipart", subtype, headers, opts)
+ end
+
+ def parse(conn, _type, _subtype, _headers, _opts) do
+ {:next, conn}
+ end
+end
diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex
index c1a690e28..6b9e158a3 100644
--- a/lib/pleroma/web/router.ex
+++ b/lib/pleroma/web/router.ex
@@ -996,8 +996,8 @@ defmodule Pleroma.Web.Router do
scope "/", Pleroma.Web.Fallback do
get("/registration/:token", RedirectController, :registration_page)
get("/:maybe_nickname_or_id", RedirectController, :redirector_with_meta)
- match(:*, "/api/pleroma*path", LegacyPleromaApiRerouterPlug, [])
- get("/api*path", RedirectController, :api_not_implemented)
+ match(:*, "/api/pleroma/*path", LegacyPleromaApiRerouterPlug, [])
+ get("/api/*path", RedirectController, :api_not_implemented)
get("/*path", RedirectController, :redirector_with_preload)
options("/*path", RedirectController, :empty)