Files
beelzebub/tracer/tracer.go

73 lines
1.2 KiB
Go
Raw Normal View History

2022-05-09 23:16:59 +02:00
package tracer
import (
2022-05-19 23:20:20 +02:00
"time"
2022-05-09 23:16:59 +02:00
)
type Strategy func(event Event)
2022-06-04 17:14:46 +02:00
type Tracer interface {
TraceEvent(event Event)
}
type tracer struct {
strategy Strategy
2022-05-09 23:16:59 +02:00
}
2022-06-04 17:14:46 +02:00
func Init(strategy Strategy) *tracer {
return &tracer{
strategy: strategy,
}
2022-05-09 23:16:59 +02:00
}
2022-06-04 17:14:46 +02:00
func (tracer *tracer) TraceEvent(event Event) {
event.DateTime = time.Now().UTC().Format(time.RFC3339)
tracer.strategy(event)
2022-05-09 23:16:59 +02:00
}
type Event struct {
2022-05-19 23:20:20 +02:00
DateTime string
RemoteAddr string
2022-05-17 23:32:00 +02:00
Protocol string
Command string
2022-05-17 23:32:00 +02:00
Status string
Msg string
ID string
Environ string
User string
Password string
Client string
Headers string
Cookies string
UserAgent string
HostHTTPRequest string
Body string
HTTPMethod string
RequestURI string
Description string
2022-05-09 23:16:59 +02:00
}
type Protocol int
const (
HTTP Protocol = iota
SSH
)
2022-05-17 23:32:00 +02:00
func (status Protocol) String() string {
return [...]string{"HTTP", "SSH"}[status]
}
2022-05-09 23:16:59 +02:00
type Status int
const (
Start Status = iota
End
Stateless
Interaction
)
func (status Status) String() string {
return [...]string{"Start", "End", "Stateless", "Interaction"}[status]
}