dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit 3004159d70b60a5e91380038856647e187e04949
parent ee4977afe39efa9a14996e585d68665927f337b7
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Wed, 25 Jan 2023 18:04:13 -0800

cleanup

Diffstat:
Mpkg/database/tableFiledrops.go | 41+++++++++++++++++++++++++++++++++++++++++
Mpkg/web/handlers/admin.go | 7+------
Mpkg/web/handlers/handlers.go | 15++++-----------
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) }