45 lines
812 B
Go
45 lines
812 B
Go
package keylog
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"fmt"
|
||
|
|
"path/filepath"
|
||
|
|
"regexp"
|
||
|
|
"strings"
|
||
|
|
"time"
|
||
|
|
)
|
||
|
|
|
||
|
|
const hourBucketLayout = "2006-01-02-15"
|
||
|
|
|
||
|
|
var logFilenamePattern = regexp.MustCompile(`^\d{4}-\d{2}-\d{2}-\d{2}\.log$`)
|
||
|
|
|
||
|
|
func HourBucket(t time.Time) string {
|
||
|
|
return t.Local().Format(hourBucketLayout)
|
||
|
|
}
|
||
|
|
|
||
|
|
func LogFilename(bucket string) string {
|
||
|
|
return bucket + ".log"
|
||
|
|
}
|
||
|
|
|
||
|
|
func ValidLogFilename(name string) bool {
|
||
|
|
return logFilenamePattern.MatchString(filepath.Base(name))
|
||
|
|
}
|
||
|
|
|
||
|
|
func normalizeWindow(window string) string {
|
||
|
|
window = strings.TrimSpace(window)
|
||
|
|
if window == "" {
|
||
|
|
return "?"
|
||
|
|
}
|
||
|
|
return window
|
||
|
|
}
|
||
|
|
|
||
|
|
func eventSource(injected bool) string {
|
||
|
|
if injected {
|
||
|
|
return "injected"
|
||
|
|
}
|
||
|
|
return "user"
|
||
|
|
}
|
||
|
|
|
||
|
|
func sectionHeader(source, window string) string {
|
||
|
|
return fmt.Sprintf("[%s · %s]\n", source, normalizeWindow(window))
|
||
|
|
}
|