cleanupOldFiles: Diese Funktion durchsucht das Upload-Verzeichnis und löscht Dateien, die älter als 48 Stunden sind.

startCleanupProcess: Ein Hintergrundprozess, der cleanupOldFiles jede Stunde ausführt, um alte Dateien zu entfernen.
fileLifetime: Die Lebensdauer der Dateien ist auf 48 Stunden gesetzt. Dateien, die älter sind, werden gelöscht.
This commit is contained in:
Simon Rieger 2024-09-02 15:01:39 +02:00
parent 8bcfea0395
commit 041922ea6d

View file

@ -23,7 +23,16 @@ var (
uploadInterval = 10 * time.Second uploadInterval = 10 * time.Second
) )
const (
uploadDir = "./uploads"
cleanupInterval = 1 * time.Hour
fileLifetime = 48 * time.Hour
)
func main() { func main() {
// Starten Sie den Hintergrundprozess zum Löschen alter Dateien
go startCleanupProcess()
http.HandleFunc("/", homeHandler) http.HandleFunc("/", homeHandler)
http.HandleFunc("/upload", uploadHandler) http.HandleFunc("/upload", uploadHandler)
http.HandleFunc("/image/", imageHandler) http.HandleFunc("/image/", imageHandler)
@ -36,6 +45,39 @@ func main() {
http.ListenAndServe(":8080", nil) 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) { func homeHandler(w http.ResponseWriter, r *http.Request) {
// Setzen der Content Security Policy // Setzen der Content Security Policy
w.Header().Set("Content-Security-Policy", "default-src 'self'; script-src 'self'; object-src 'none';") w.Header().Set("Content-Security-Policy", "default-src 'self'; script-src 'self'; object-src 'none';")