Files
pcap-web-tools/internal/web/filename.go
T
2026-10-05 20:16:01 +02:00

29 lines
829 B
Go

package web
import (
"path"
"strings"
)
// safeName reduces a user supplied file name to a safe base name: directory
// components are dropped and unusual characters replaced by '_'. fallback is
// returned if nothing usable is left.
func safeName(name, fallback string) string {
name = path.Base(strings.ReplaceAll(strings.TrimSpace(name), `\`, "/"))
name = strings.Map(func(r rune) rune {
if r >= 'a' && r <= 'z' || r >= 'A' && r <= 'Z' || r >= '0' && r <= '9' || r == '-' || r == '_' || r == '.' {
return r
}
return '_'
}, name)
if strings.Trim(name, "._") == "" {
return fallback
}
return name
}
// pcapFilename sanitizes a user supplied download name and gives it a .pcap extension.
func pcapFilename(name string) string {
return strings.TrimSuffix(safeName(name, "packet.pcap"), ".pcap") + ".pcap"
}