diff --git a/Iceshrimp.Backend/Controllers/Shared/Attributes/DisableRequestSizeLimit.cs b/Iceshrimp.Backend/Controllers/Shared/Attributes/DisableRequestSizeLimit.cs new file mode 100644 index 00000000..4b776c4f --- /dev/null +++ b/Iceshrimp.Backend/Controllers/Shared/Attributes/DisableRequestSizeLimit.cs @@ -0,0 +1,28 @@ +using Microsoft.AspNetCore.Http.Features; +using Microsoft.AspNetCore.Http.Metadata; +using Microsoft.AspNetCore.Mvc.Filters; + +namespace Iceshrimp.Backend.Controllers.Shared.Attributes; + +public class NoRequestSizeLimitAttribute : Attribute, IFormOptionsMetadata, IResourceFilter +{ + public void OnResourceExecuting(ResourceExecutingContext context) + { + var feature = context.HttpContext.Features.Get() ?? + throw new Exception("Failed to get IHttpMaxRequestBodySizeFeature"); + feature.MaxRequestBodySize = long.MaxValue; + } + + public void OnResourceExecuted(ResourceExecutedContext context) { } + + public bool? BufferBody => null; + public int? MemoryBufferThreshold => null; + public long? BufferBodyLengthLimit => long.MaxValue; + public int? ValueCountLimit => null; + public int? KeyLengthLimit => null; + public int? ValueLengthLimit => null; + public int? MultipartBoundaryLengthLimit => null; + public int? MultipartHeadersCountLimit => null; + public int? MultipartHeadersLengthLimit => null; + public long? MultipartBodyLengthLimit => long.MaxValue; +} \ No newline at end of file diff --git a/Iceshrimp.Backend/Controllers/Web/EmojiController.cs b/Iceshrimp.Backend/Controllers/Web/EmojiController.cs index 17d628b9..dd377c4b 100644 --- a/Iceshrimp.Backend/Controllers/Web/EmojiController.cs +++ b/Iceshrimp.Backend/Controllers/Web/EmojiController.cs @@ -187,7 +187,7 @@ public class EmojiController( [HttpPost("import")] [Authorize("role:moderator")] - [DisableRequestSizeLimit] + [NoRequestSizeLimit] [ProducesResults(HttpStatusCode.Accepted)] public async Task ImportEmoji(IFormFile file) {