commit 3004159d70b60a5e91380038856647e187e04949
parent ee4977afe39efa9a14996e585d68665927f337b7
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Wed, 25 Jan 2023 18:04:13 -0800
cleanup
Diffstat:
3 files changed, 46 insertions(+), 17 deletions(-)
diff --git a/pkg/database/tableFiledrops.go b/pkg/database/tableFiledrops.go
@@ -1,11 +1,17 @@
package database
import (
+ "dkforest/pkg/utils"
"github.com/google/uuid"
"github.com/sirupsen/logrus"
+ "io"
+ "os"
+ "path/filepath"
"time"
)
+const FiledropFolder = "filedrop"
+
type Filedrop struct {
ID int64
UUID string
@@ -37,6 +43,41 @@ func CreateFiledrop() (out Filedrop, err error) {
return
}
+func (d *Filedrop) Exists() bool {
+ filePath1 := filepath.Join(UploadFolder, d.FileName)
+ return utils.FileExists(filePath1)
+}
+
+func (d *Filedrop) GetContent() (os.FileInfo, []byte, error) {
+ filePath1 := filepath.Join(FiledropFolder, d.FileName)
+ f, err := os.Open(filePath1)
+ if err != nil {
+ return nil, nil, err
+ }
+ defer f.Close()
+
+ fileBytes, _ := io.ReadAll(f)
+ //decFileBytes, err := utils.DecryptAESMaster(fileBytes)
+ //if err != nil {
+ // decFileBytes = fileBytes
+ //}
+ fi, err := f.Stat()
+ if err != nil {
+ return nil, nil, err
+ }
+ return fi, fileBytes, nil
+}
+
+func (d *Filedrop) Delete() error {
+ if err := os.Remove(filepath.Join(FiledropFolder, d.FileName)); err != nil {
+ return err
+ }
+ if err := DB.Delete(&d).Error; err != nil {
+ return err
+ }
+ return nil
+}
+
func (d *Filedrop) DoSave() {
if err := DB.Save(d).Error; err != nil {
logrus.Error(err)
diff --git a/pkg/web/handlers/admin.go b/pkg/web/handlers/admin.go
@@ -5,8 +5,6 @@ import (
"dkforest/pkg/managers"
"github.com/jinzhu/gorm"
"net/http"
- "os"
- "path/filepath"
"strings"
"dkforest/pkg/config"
@@ -149,10 +147,7 @@ func AdminFiledropsHandler(c echo.Context) error {
if err != nil {
return c.Redirect(http.StatusFound, "/")
}
- if err := os.Remove(filepath.Join("filedrop", file.FileName)); err != nil {
- logrus.Error(err.Error())
- }
- if err := database.DB.Delete(&file).Error; err != nil {
+ if err := file.Delete(); err != nil {
logrus.Error(err)
}
return c.Redirect(http.StatusFound, c.Request().Referer())
diff --git a/pkg/web/handlers/handlers.go b/pkg/web/handlers/handlers.go
@@ -3979,23 +3979,16 @@ func FiledropDownloadHandler(c echo.Context) error {
if err != nil {
return c.Redirect(http.StatusFound, "/")
}
- filePath1 := filepath.Join("filedrop", file.FileName)
- if !utils.FileExists(filePath1) {
+ if !file.Exists() {
logrus.Error(filename + " does not exists")
return c.Redirect(http.StatusFound, "/")
}
-
- f, err := os.Open(filePath1)
+ fi, fileBytes, err := file.GetContent()
if err != nil {
return echo.NotFoundHandler(c)
}
- defer f.Close()
- fileBytes, _ := io.ReadAll(f)
- fi, _ := f.Stat()
- buf := bytes.NewReader(fileBytes)
-
c.Response().Header().Set(echo.HeaderContentDisposition, fmt.Sprintf("%s; filename=%q", "attachment", file.OrigFileName))
- http.ServeContent(c.Response(), c.Request(), fi.Name(), fi.ModTime(), buf)
+ http.ServeContent(c.Response(), c.Request(), fi.Name(), fi.ModTime(), bytes.NewReader(fileBytes))
return nil
}
@@ -4210,7 +4203,7 @@ func FileDropHandler(c echo.Context) error {
}
newFileName := utils.MD5([]byte(utils.GenerateToken32()))
- if err := ioutil.WriteFile(filepath.Join("filedrop", newFileName), fileBytes, 0644); err != nil {
+ if err := ioutil.WriteFile(filepath.Join(database.FiledropFolder, newFileName), fileBytes, 0644); err != nil {
logrus.Error(err)
}