mirror of
https://github.com/skidoodle/safebin.git
synced 2026-04-28 03:07:41 +02:00
@@ -36,6 +36,7 @@ const (
|
||||
MinRetention = 24 * time.Hour
|
||||
MaxRetention = 365 * 24 * time.Hour
|
||||
|
||||
DBDirName = "db"
|
||||
DBFileName = "safebin.db"
|
||||
DBBucketName = "files"
|
||||
DBBucketIndexName = "expiry_index"
|
||||
|
||||
+7
-1
@@ -1,6 +1,7 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"time"
|
||||
|
||||
@@ -15,7 +16,12 @@ type FileMeta struct {
|
||||
}
|
||||
|
||||
func InitDB(storageDir string) (*bbolt.DB, error) {
|
||||
path := filepath.Join(storageDir, DBFileName)
|
||||
dbDir := filepath.Join(storageDir, DBDirName)
|
||||
if err := os.MkdirAll(dbDir, PermUserRWX); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
path := filepath.Join(dbDir, DBFileName)
|
||||
db, err := bbolt.Open(path, 0600, &bbolt.Options{Timeout: 1 * time.Second})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -23,7 +23,7 @@ func TestInitDB(t *testing.T) {
|
||||
}
|
||||
}()
|
||||
|
||||
dbPath := filepath.Join(tmpDir, DBFileName)
|
||||
dbPath := filepath.Join(tmpDir, DBDirName, DBFileName)
|
||||
if _, err := os.Stat(dbPath); os.IsNotExist(err) {
|
||||
t.Error("Database file was not created")
|
||||
}
|
||||
|
||||
@@ -233,9 +233,16 @@ func TestIntegration_Upload_VerifyEncryption(t *testing.T) {
|
||||
|
||||
body := &bytes.Buffer{}
|
||||
writer := multipart.NewWriter(body)
|
||||
part, _ := writer.CreateFormFile("file", "secret.txt")
|
||||
part.Write(plaintext)
|
||||
writer.Close()
|
||||
part, err := writer.CreateFormFile("file", "secret.txt")
|
||||
if err != nil {
|
||||
t.Fatalf("CreateFormFile failed: %v", err)
|
||||
}
|
||||
if _, err := part.Write(plaintext); err != nil {
|
||||
t.Fatalf("Write failed: %v", err)
|
||||
}
|
||||
if err := writer.Close(); err != nil {
|
||||
t.Fatalf("Writer close failed: %v", err)
|
||||
}
|
||||
|
||||
req, _ := http.NewRequest("POST", server.URL+"/", body)
|
||||
req.Header.Set("Content-Type", writer.FormDataContentType())
|
||||
@@ -243,7 +250,11 @@ func TestIntegration_Upload_VerifyEncryption(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
defer func() {
|
||||
if err := resp.Body.Close(); err != nil {
|
||||
t.Errorf("Failed to close response body: %v", err)
|
||||
}
|
||||
}()
|
||||
|
||||
respBytes, _ := io.ReadAll(resp.Body)
|
||||
slug := filepath.Base(strings.TrimSpace(string(respBytes)))
|
||||
|
||||
@@ -67,7 +67,11 @@ func (app *App) HandleUpload(writer http.ResponseWriter, request *http.Request)
|
||||
errChan <- err
|
||||
}()
|
||||
|
||||
defer pr.Close()
|
||||
defer func() {
|
||||
if closeErr := pr.Close(); closeErr != nil {
|
||||
app.Logger.Error("Failed to close pipe reader", "err", closeErr)
|
||||
}
|
||||
}()
|
||||
|
||||
streamer, err := crypto.NewGCMStreamer(ephemeralKey)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user