Files
snitch/internal/color/color.go
2025-12-16 22:52:07 +01:00

60 lines
1.1 KiB
Go

package color
import (
"os"
"strings"
"github.com/fatih/color"
)
var (
Header = color.New(color.FgGreen, color.Bold)
Bold = color.New(color.Bold)
Faint = color.New(color.Faint)
TCP = color.New(color.FgCyan)
UDP = color.New(color.FgMagenta)
LISTEN = color.New(color.FgYellow)
ESTABLISHED = color.New(color.FgGreen)
Default = color.New(color.FgWhite)
)
func Init(mode string) {
switch mode {
case "always":
color.NoColor = false
case "never":
color.NoColor = true
case "auto":
if os.Getenv("NO_COLOR") != "" || os.Getenv("TERM") == "dumb" {
color.NoColor = true
} else {
color.NoColor = false
}
}
}
func IsColorDisabled() bool {
return color.NoColor
}
func GetProtoColor(proto string) *color.Color {
switch strings.ToLower(proto) {
case "tcp":
return TCP
case "udp":
return UDP
default:
return Default
}
}
func GetStateColor(state string) *color.Color {
switch strings.ToUpper(state) {
case "LISTEN", "LISTENING":
return LISTEN
case "ESTABLISHED":
return ESTABLISHED
default:
return Default
}
}