-
-
Notifications
You must be signed in to change notification settings - Fork 197
/
logger.go
57 lines (48 loc) · 1.52 KB
/
logger.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// Copyright 2022 Juan Pablo Tosso and the OWASP Coraza contributors
// SPDX-License-Identifier: Apache-2.0
package auditlog
import (
"fmt"
"strings"
"github.com/corazawaf/coraza/v3/experimental/plugins/plugintypes"
)
// NewConfig returns a Config with default values.
func NewConfig() plugintypes.AuditLogConfig {
return plugintypes.AuditLogConfig{
Target: "",
FileMode: 0644,
Dir: "",
DirMode: 0755,
Formatter: nativeFormatter,
}
}
var writers = map[string]func() plugintypes.AuditLogWriter{}
var formatters = map[string]plugintypes.AuditLogFormatter{}
// RegisterWriter registers a new logger
// it can be used for plugins
func RegisterWriter(name string, writer func() plugintypes.AuditLogWriter) {
writers[name] = writer
}
// GetWriter returns a logger by name
// It returns an error if it doesn't exist
func GetWriter(name string) (plugintypes.AuditLogWriter, error) {
logger := writers[strings.ToLower(name)]
if logger == nil {
return nil, fmt.Errorf("invalid logger %q", name)
}
return logger(), nil
}
// RegisterFormatter registers a new logger format
// it can be used for plugins
func RegisterFormatter(name string, f func(plugintypes.AuditLog) ([]byte, error)) {
formatters[name] = f
}
// GetFormatter returns a formatter by name
// It returns an error if it doesn't exist
func GetFormatter(name string) (plugintypes.AuditLogFormatter, error) {
formatter := formatters[strings.ToLower(name)]
if formatter == nil {
return nil, fmt.Errorf("invalid formatter %q", name)
}
return formatter, nil
}