From 041922ea6de4a079135622596fea60e4b78ee63e Mon Sep 17 00:00:00 2001 From: Simon Rieger Date: Mon, 2 Sep 2024 15:01:39 +0200 Subject: [PATCH] =?UTF-8?q?cleanupOldFiles:=20Diese=20Funktion=20durchsuch?= =?UTF-8?q?t=20das=20Upload-Verzeichnis=20und=20l=C3=B6scht=20Dateien,=20d?= =?UTF-8?q?ie=20=C3=A4lter=20als=2048=20Stunden=20sind.=20startCleanupProc?= =?UTF-8?q?ess:=20Ein=20Hintergrundprozess,=20der=20cleanupOldFiles=20jede?= =?UTF-8?q?=20Stunde=20ausf=C3=BChrt,=20um=20alte=20Dateien=20zu=20entfern?= =?UTF-8?q?en.=20fileLifetime:=20Die=20Lebensdauer=20der=20Dateien=20ist?= =?UTF-8?q?=20auf=2048=20Stunden=20gesetzt.=20Dateien,=20die=20=C3=A4lter?= =?UTF-8?q?=20sind,=20werden=20gel=C3=B6scht.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go/main.go | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/go/main.go b/go/main.go index 3b11563..a6ba6ed 100644 --- a/go/main.go +++ b/go/main.go @@ -23,7 +23,16 @@ var ( uploadInterval = 10 * time.Second ) +const ( + uploadDir = "./uploads" + cleanupInterval = 1 * time.Hour + fileLifetime = 48 * time.Hour +) + func main() { + // Starten Sie den Hintergrundprozess zum Löschen alter Dateien + go startCleanupProcess() + http.HandleFunc("/", homeHandler) http.HandleFunc("/upload", uploadHandler) http.HandleFunc("/image/", imageHandler) @@ -36,6 +45,39 @@ func main() { http.ListenAndServe(":8080", nil) } +func startCleanupProcess() { + ticker := time.NewTicker(cleanupInterval) + defer ticker.Stop() + + for { + select { + case <-ticker.C: + cleanupOldFiles() + } + } +} + +func cleanupOldFiles() { + now := time.Now() + err := filepath.Walk(uploadDir, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + if !info.IsDir() && now.Sub(info.ModTime()) > fileLifetime { + err := os.Remove(path) + if err != nil { + log.Printf("Fehler beim Löschen der Datei %s: %v", path, err) + } else { + log.Printf("Datei gelöscht: %s", path) + } + } + return nil + }) + if err != nil { + log.Printf("Fehler beim Durchsuchen des Verzeichnisses: %v", err) + } +} + func homeHandler(w http.ResponseWriter, r *http.Request) { // Setzen der Content Security Policy w.Header().Set("Content-Security-Policy", "default-src 'self'; script-src 'self'; object-src 'none';")