feat: small file is unrequired to verity to download.

This commit is contained in:
2025-07-16 11:13:54 +08:00
parent 9f4eb1e2a8
commit ea8dbb90b9
3 changed files with 42 additions and 25 deletions

View File

@@ -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)

View File

@@ -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(),