Check for max file count and expiry

This commit is contained in:
Marc Ole Bulling
2026-01-06 14:29:13 +01:00
parent 3fad4c21f7
commit c4f5a1ece3
3 changed files with 19 additions and 0 deletions
+5
View File
@@ -59,6 +59,11 @@ func (f *FileRequest) GetFilesAsString() string {
func (f *FileRequest) IsUnlimitedSize() bool {
return f.MaxSize == 0
}
func (f *FileRequest) IsUnlimitedFiles() bool {
return f.MaxFiles == 0
}
func (f *FileRequest) IsUnlimitedTime() bool {
return f.Expiry == 0
}
+8
View File
@@ -900,6 +900,14 @@ func showPublicUpload(w http.ResponseWriter, r *http.Request) {
redirect(w, "error?fr")
return
}
if !request.IsUnlimitedTime() && request.Expiry < time.Now().Unix() {
redirect(w, "error?fr")
return
}
if !request.IsUnlimitedFiles() && request.UploadedFiles >= request.MaxFiles {
redirect(w, "error?fr")
return
}
apiKey := queryUrl(w, r, "key", "error?fr")
if subtle.ConstantTimeCompare([]byte(request.ApiKey), []byte(apiKey)) != 1 {
redirect(w, "error?fr")
+6
View File
@@ -371,6 +371,12 @@ func checkFileRequestAndApiKey(fileRequestId, apiKey string) (models.FileRequest
if fileRequest.ApiKey != apiKey {
return models.FileRequest{}, false, http.StatusUnauthorized, "Invalid API key"
}
if !fileRequest.IsUnlimitedTime() && fileRequest.Expiry < time.Now().Unix() {
return models.FileRequest{}, false, http.StatusUnauthorized, "Filerequest has expired"
}
if !fileRequest.IsUnlimitedFiles() && fileRequest.UploadedFiles >= fileRequest.MaxFiles {
return models.FileRequest{}, false, http.StatusUnauthorized, "Max file count has already been reached for this file request"
}
return fileRequest, true, 0, ""
}