Max upload size

This commit is contained in:
Kieran 2023-12-25 18:50:32 +00:00
parent d0458d094d
commit 9837d917b9
Signed by: Kieran
GPG Key ID: DE71CEB3925BE941
6 changed files with 20 additions and 134 deletions

View File

@ -57,6 +57,8 @@ namespace VoidCat.Controllers
/// <param name="cli">True if you want to return only the url of the file in the response</param>
/// <returns>Returns <see cref="UploadResult"/></returns>
[HttpPost]
[HttpOptions]
[HttpHead]
[DisableRequestSizeLimit]
[DisableFormValueModelBinding]
[Authorize(AuthenticationSchemes = "Bearer,Nostr", Policy = Policies.RequireNostr)]
@ -73,6 +75,12 @@ namespace VoidCat.Controllers
throw new InvalidOperationException("Site is in maintenance mode");
}
var bodyLength = Request.ContentLength ?? 0;
if ((ulong)bodyLength >= (_settings.MaxFileSize ?? ulong.MaxValue))
{
throw new InvalidOperationException("File size too large");
}
var uid = HttpContext.GetUserId();
var pubkey = HttpContext.GetPubKey();
if (uid == default && !string.IsNullOrEmpty(pubkey))

View File

@ -26,6 +26,11 @@ namespace VoidCat.Model
/// Size in bytes to split uploads into chunks
/// </summary>
public ulong? UploadSegmentSize { get; init; }
/// <summary>
/// Max file size for upload
/// </summary>
public ulong? MaxFileSize { get; init; }
/// <summary>
/// Tor configuration

View File

@ -50,8 +50,9 @@
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
<PackageReference Include="System.Linq.Async" Version="6.0.1" />
</ItemGroup>
<ItemGroup>
<!--<Protobuf Include="Services/Lightning/proto/*.proto" GrpcServices="Client" ProtoRoot="Services/Lightning/proto" />-->
<ItemGroup><!--<Protobuf Include="Services/Lightning/proto/*.proto" GrpcServices="Client" ProtoRoot="Services/Lightning/proto" />-->
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>
<!-- Don't publish the SPA source files, but do show them in the project files list -->
@ -90,9 +91,6 @@
</AssemblyAttributes>
<Compile Include="$(IntermediateOutputPath)\build_date.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="Migrations\" />
</ItemGroup>
<Target Name="GetBuildDate" BeforeTargets="CoreCompile">
<WriteCodeFragment Language="C#" OutputFile="$(IntermediateOutputPath)\build_date.cs" AssemblyAttributes="@(AssemblyAttributes)" />
</Target>

View File

@ -2,7 +2,6 @@
"name": "@void-cat/app",
"version": "0.1.0",
"private": true,
"proxy": "http://localhost:7195",
"dependencies": {
"@hcaptcha/react-hcaptcha": "^1.1.1",
"@reduxjs/toolkit": "^1.7.2",
@ -36,7 +35,7 @@
"vite-plugin-version-mark": "^0.0.10"
},
"scripts": {
"start": "vite start",
"start": "vite",
"build": "vite build"
},
"eslintConfig": {

View File

@ -1,18 +0,0 @@
const { createProxyMiddleware } = require("http-proxy-middleware");
const settings = require("../package.json");
module.exports = function (app) {
const proxy = createProxyMiddleware({
target: settings.proxy,
changeOrigin: true,
secure: false,
});
app.use("/admin", proxy);
app.use("/d", proxy);
app.use("/info", proxy);
app.use("/upload", proxy);
app.use("/auth", proxy);
app.use("/swagger", proxy);
app.use("/user", proxy);
};

View File

@ -3274,19 +3274,6 @@ __metadata:
languageName: node
linkType: hard
"@types/babel__core@npm:^7.1.12":
version: 7.20.0
resolution: "@types/babel__core@npm:7.20.0"
dependencies:
"@babel/parser": "npm:^7.20.7"
"@babel/types": "npm:^7.20.7"
"@types/babel__generator": "npm:*"
"@types/babel__template": "npm:*"
"@types/babel__traverse": "npm:*"
checksum: b82e432bfc42075d4f6218e5ed5c4a7cdeb087e0416f969fc65a755c41d129d7e369c93e9a9dc59d43291327aa8d7cd149f3573d1c3b54d0192561d02bb225eb
languageName: node
linkType: hard
"@types/babel__core@npm:^7.20.5":
version: 7.20.5
resolution: "@types/babel__core@npm:7.20.5"
@ -3414,15 +3401,6 @@ __metadata:
languageName: node
linkType: hard
"@types/http-proxy@npm:^1.17.8":
version: 1.17.11
resolution: "@types/http-proxy@npm:1.17.11"
dependencies:
"@types/node": "npm:*"
checksum: 7cda456611b4adfdd87e4317745af643153d502576fb7095806d5b1b397b9a878b105e14abff9b7ab1d1c71132b61b5fc7052461f766165963950f1b46e18315
languageName: node
linkType: hard
"@types/json-schema@npm:^7.0.9":
version: 7.0.11
resolution: "@types/json-schema@npm:7.0.11"
@ -3458,13 +3436,6 @@ __metadata:
languageName: node
linkType: hard
"@types/preval.macro@npm:^3.0.0":
version: 3.0.0
resolution: "@types/preval.macro@npm:3.0.0"
checksum: 76aa51a31bb4632383763f283297c63f7dc664ea85e637ddd9b8a91c6583e690a0306d021dc7bdce52d1f3898f798cec5bb0ae9ae072b8999f1a79d56991616a
languageName: node
linkType: hard
"@types/prop-types@npm:*":
version: 15.7.5
resolution: "@types/prop-types@npm:15.7.5"
@ -3735,7 +3706,6 @@ __metadata:
"@hcaptcha/react-hcaptcha": "npm:^1.1.1"
"@reduxjs/toolkit": "npm:^1.7.2"
"@types/node": "npm:^20.5.3"
"@types/preval.macro": "npm:^3.0.0"
"@types/qrcode.react": "npm:^1.0.2"
"@types/react": "npm:^18.2.0"
"@types/react-dom": "npm:^18.2.1"
@ -3746,9 +3716,7 @@ __metadata:
"@void-cat/api": "npm:^1.0.10"
eslint: "npm:^8.47.0"
eslint-config-react-app: "npm:^7.0.1"
http-proxy-middleware: "npm:^2.0.6"
moment: "npm:^2.29.4"
preval.macro: "npm:^5.0.0"
prop-types: "npm:^15.8.1"
qrcode.react: "npm:^3.1.0"
react: "npm:^18.2.0"
@ -4024,7 +3992,7 @@ __metadata:
languageName: node
linkType: hard
"babel-plugin-macros@npm:^3.0.1, babel-plugin-macros@npm:^3.1.0":
"babel-plugin-macros@npm:^3.1.0":
version: 3.1.0
resolution: "babel-plugin-macros@npm:3.1.0"
dependencies:
@ -4107,18 +4075,6 @@ __metadata:
languageName: node
linkType: hard
"babel-plugin-preval@npm:^5.0.0":
version: 5.1.0
resolution: "babel-plugin-preval@npm:5.1.0"
dependencies:
"@babel/runtime": "npm:^7.12.5"
"@types/babel__core": "npm:^7.1.12"
babel-plugin-macros: "npm:^3.0.1"
require-from-string: "npm:^2.0.2"
checksum: d4507d1f134a610b8a2d4de911afe147eba7aab782ea34e7b687e99bdfd2e28d2056e16b7fa4b66acb59bcbd681acc40e851a20f03f7be719ee4cc51fc88eee0
languageName: node
linkType: hard
"babel-plugin-transform-react-remove-prop-types@npm:^0.4.24":
version: 0.4.24
resolution: "babel-plugin-transform-react-remove-prop-types@npm:0.4.24"
@ -5393,7 +5349,7 @@ __metadata:
languageName: node
linkType: hard
"eventemitter3@npm:^4.0.0, eventemitter3@npm:^4.0.1":
"eventemitter3@npm:^4.0.1":
version: 4.0.7
resolution: "eventemitter3@npm:4.0.7"
checksum: 8030029382404942c01d0037079f1b1bc8fed524b5849c237b80549b01e2fc49709e1d0c557fa65ca4498fc9e24cff1475ef7b855121fcc15f9d61f93e282346
@ -5524,16 +5480,6 @@ __metadata:
languageName: node
linkType: hard
"follow-redirects@npm:^1.0.0":
version: 1.15.2
resolution: "follow-redirects@npm:1.15.2"
peerDependenciesMeta:
debug:
optional: true
checksum: 8be0d39919770054812537d376850ccde0b4762b0501c440bd08724971a078123b55f57704f2984e0664fecc0c86adea85add63295804d9dce401cd9604c91d3
languageName: node
linkType: hard
"for-each@npm:^0.3.3":
version: 0.3.3
resolution: "for-each@npm:0.3.3"
@ -5922,35 +5868,6 @@ __metadata:
languageName: node
linkType: hard
"http-proxy-middleware@npm:^2.0.6":
version: 2.0.6
resolution: "http-proxy-middleware@npm:2.0.6"
dependencies:
"@types/http-proxy": "npm:^1.17.8"
http-proxy: "npm:^1.18.1"
is-glob: "npm:^4.0.1"
is-plain-obj: "npm:^3.0.0"
micromatch: "npm:^4.0.2"
peerDependencies:
"@types/express": ^4.17.13
peerDependenciesMeta:
"@types/express":
optional: true
checksum: 768e7ae5a422bbf4b866b64105b4c2d1f468916b7b0e9c96750551c7732383069b411aa7753eb7b34eab113e4f77fb770122cb7fb9c8ec87d138d5ddaafda891
languageName: node
linkType: hard
"http-proxy@npm:^1.18.1":
version: 1.18.1
resolution: "http-proxy@npm:1.18.1"
dependencies:
eventemitter3: "npm:^4.0.0"
follow-redirects: "npm:^1.0.0"
requires-port: "npm:^1.0.0"
checksum: 2489e98aba70adbfd8b9d41ed1ff43528be4598c88616c558b109a09eaffe4bb35e551b6c75ac42ed7d948bb7530a22a2be6ef4f0cecacb5927be139f4274594
languageName: node
linkType: hard
"https-proxy-agent@npm:^7.0.1":
version: 7.0.2
resolution: "https-proxy-agent@npm:7.0.2"
@ -6219,13 +6136,6 @@ __metadata:
languageName: node
linkType: hard
"is-plain-obj@npm:^3.0.0":
version: 3.0.0
resolution: "is-plain-obj@npm:3.0.0"
checksum: a6ebdf8e12ab73f33530641972a72a4b8aed6df04f762070d823808303e4f76d87d5ea5bd76f96a7bbe83d93f04ac7764429c29413bd9049853a69cb630fb21c
languageName: node
linkType: hard
"is-regex@npm:^1.1.4":
version: 1.1.4
resolution: "is-regex@npm:1.1.4"
@ -6676,7 +6586,7 @@ __metadata:
languageName: node
linkType: hard
"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4":
"micromatch@npm:^4.0.4":
version: 4.0.5
resolution: "micromatch@npm:4.0.5"
dependencies:
@ -7191,15 +7101,6 @@ __metadata:
languageName: node
linkType: hard
"preval.macro@npm:^5.0.0":
version: 5.0.0
resolution: "preval.macro@npm:5.0.0"
dependencies:
babel-plugin-preval: "npm:^5.0.0"
checksum: 4e58715a7dacd5999c85f8f930029251921955fb46f981a54848c21a370a73efb1825eb9ab08a32cb3a53978b489c6a55ebc1bbddf6eceaef2aa297e0a007401
languageName: node
linkType: hard
"proc-log@npm:^3.0.0":
version: 3.0.0
resolution: "proc-log@npm:3.0.0"
@ -7592,13 +7493,6 @@ __metadata:
languageName: node
linkType: hard
"requires-port@npm:^1.0.0":
version: 1.0.0
resolution: "requires-port@npm:1.0.0"
checksum: 878880ee78ccdce372784f62f52a272048e2d0827c29ae31e7f99da18b62a2b9463ea03a75f277352f4697c100183debb0532371ad515a2d49d4bfe596dd4c20
languageName: node
linkType: hard
"reselect@npm:^4.1.8":
version: 4.1.8
resolution: "reselect@npm:4.1.8"