From ea8dbb90b97f0a035fc4fff5c62be4d4f1df5350 Mon Sep 17 00:00:00 2001
From: nyne
Date: Wed, 16 Jul 2025 11:13:54 +0800
Subject: [PATCH] feat: small file is unrequired to verity to download.
---
frontend/src/pages/resource_details_page.tsx | 40 +++++++++++++-------
server/service/file.go | 24 ++++++------
server/service/utils.go | 3 ++
3 files changed, 42 insertions(+), 25 deletions(-)
diff --git a/frontend/src/pages/resource_details_page.tsx b/frontend/src/pages/resource_details_page.tsx
index 825a65f..89fe26a 100644
--- a/frontend/src/pages/resource_details_page.tsx
+++ b/frontend/src/pages/resource_details_page.tsx
@@ -702,20 +702,32 @@ function FileTile({ file }: { file: RFile }) {
-
+ {
+ file.size > 10 * 1024 * 1024 ? (
+
+ ) : (
+
+
+
+ )
+ }
diff --git a/server/service/file.go b/server/service/file.go
index 108822b..a6ab9b7 100644
--- a/server/service/file.go
+++ b/server/service/file.go
@@ -20,8 +20,9 @@ import (
)
const (
- blockSize = 4 * 1024 * 1024 // 4MB
- storageKeyUnavailable = "storage_key_unavailable" // Placeholder for unavailable storage key
+ blockSize = 4 * 1024 * 1024 // 4MB
+ storageKeyUnavailable = "storage_key_unavailable" // Placeholder for unavailable storage key
+ MinUnrequireVerifyFileSize = 10 * 1024 * 1024 // 10MB
)
func getUploadingSize() int64 {
@@ -387,15 +388,6 @@ func GetFile(fid string) (*model.FileView, error) {
// DownloadFile handles the file download request. Return a presigned URL or a direct file path.
func DownloadFile(fid, cfToken string) (string, string, error) {
- passed, err := verifyCfToken(cfToken)
- if err != nil {
- log.Error("failed to verify cf token: ", err)
- return "", "", model.NewRequestError("failed to verify cf token")
- }
- if !passed {
- log.Info("cf token verification failed")
- return "", "", model.NewRequestError("cf token verification failed")
- }
file, err := dao.GetFile(fid)
if err != nil {
log.Error("failed to get file: ", err)
@@ -405,6 +397,16 @@ func DownloadFile(fid, cfToken string) (string, string, error) {
return "", "", model.NewRequestError("file is not available, please try again later")
}
+ passed, err := verifyCfToken(cfToken)
+ if err != nil {
+ log.Error("failed to verify cf token: ", err)
+ return "", "", model.NewRequestError("failed to verify cf token")
+ }
+ if !passed && file.Size > MinUnrequireVerifyFileSize {
+ log.Info("cf token verification failed")
+ return "", "", model.NewRequestError("cf token verification failed")
+ }
+
if file.StorageID == nil {
if file.RedirectUrl != "" {
err := dao.AddResourceDownloadCount(file.ResourceID)
diff --git a/server/service/utils.go b/server/service/utils.go
index d93cc37..483193f 100644
--- a/server/service/utils.go
+++ b/server/service/utils.go
@@ -28,6 +28,9 @@ func verifyCfToken(cfToken string) (bool, error) {
if config.CloudflareTurnstileSecretKey() == "" {
return true, nil
}
+ if cfToken == "" {
+ return false, nil
+ }
client := &http.Client{}
data, _ := json.Marshal(map[string]string{
"secret": config.CloudflareTurnstileSecretKey(),