Initial commit

This commit is contained in:
2024-08-08 22:16:45 +02:00
commit 30ef1782e9
5 changed files with 108 additions and 0 deletions

80
main.go Normal file
View File

@@ -0,0 +1,80 @@
package main
import (
"flag"
"io"
"log"
"os"
"path"
"strings"
"time"
)
const (
Black = "\033[30m"
Red = "\033[31m"
Green = "\033[32m"
Yellow = "\033[33m"
Blue = "\033[34m"
Magenta = "\033[35m"
Cyan = "\033[36m"
White = "\033[37m"
Reset = "\033[0m"
PathColor = Magenta
ErrorColor = Red
)
func init() {
log.SetFlags(log.Lmicroseconds | log.Lshortfile)
logFile, err := os.Create("main.log")
if err != nil {
log.Printf("Error creating log file: %v", err)
os.Exit(1)
}
logger := io.MultiWriter(os.Stdout, logFile)
log.SetOutput(logger)
}
func main() {
wd := flag.String("wd", "", "working directory")
scanTimer := flag.Int("scan", 60, "scan interval in seconds")
flag.Parse()
workdir := path.Clean(*wd)
forbidden := flag.Args()
envForbidden, ok := os.LookupEnv("FORBIDDEN")
if ok {
forbidden = append(forbidden, strings.Split(envForbidden, ",")...)
}
pathPrefix, ok := os.LookupEnv("PATH_PREFIX")
if ok {
workdir = path.Join(workdir, pathPrefix)
}
log.Printf("Working directory: %s%s%s", PathColor, workdir, Reset)
log.Printf("Forbidden files: %v", forbidden)
ticker := time.NewTicker(time.Duration(*scanTimer) * time.Second)
for {
log.Printf("Running at %s", time.Now().Format(time.RFC3339))
for _, f := range forbidden {
log.Printf("Checking file %s%s%s", PathColor, f, Reset)
f = strings.Trim(f, " ")
fullPath := path.Join(workdir, f)
fullPath = path.Clean(fullPath)
_, err := os.Stat(fullPath)
if err != nil {
log.Printf("Error stating file %s%s%s: %s%v%s", PathColor, fullPath, Reset, ErrorColor, err, Reset)
continue
}
log.Printf("Removing file %s%s%s", PathColor, fullPath, Reset)
err = os.RemoveAll(fullPath)
if err != nil {
log.Printf("Error removing file %s%s%s: %s%v%s", PathColor, fullPath, Reset, ErrorColor, err, Reset)
continue
}
}
<-ticker.C
}
}