-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrecord.go
97 lines (91 loc) · 3.48 KB
/
record.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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package ksmglog
import (
"crypto/md5" //nolint:gosec
"encoding/json"
"fmt"
"github.com/pkg/errors"
)
// Record collects all fields from ksmg json
type Record struct {
ID int `json:"id"`
Time int `json:"time"`
Type string `json:"type"`
Result string `json:"result"`
Person string `json:"person"`
Description string `json:"description"`
EventName string `json:"eventName"`
Details struct {
MessageInfo struct {
MessageID string `json:"messageId"`
Size string `json:"size"`
SMTPMessageID string `json:"smtpMessageId"`
ClientAddress string `json:"clientAddress"`
ClientHostName string `json:"clientHostName"`
From string `json:"from"`
To []string `json:"to"`
Cc []string `json:"cc"`
Bcc []string `json:"bcc"`
Subject string `json:"subject"`
} `json:"messageInfo"`
Rules []int `json:"rules"`
AvStatus string `json:"avStatus"`
DocWithMacroDetected bool `json:"docWithMacroDetected"`
AvNotScannedReason string `json:"avNotScannedReason"`
AsStatus string `json:"asStatus"`
AsNotScannedReason string `json:"asNotScannedReason"`
MaStatus string `json:"maStatus"`
MaNotScannedReason string `json:"maNotScannedReason"`
ApStatus string `json:"apStatus"`
ApNotScannedReason string `json:"apNotScannedReason"`
CfStatus string `json:"cfStatus"`
CfNotScannedReason string `json:"cfNotScannedReason"`
KtStatus string `json:"ktStatus"`
KtNotScannedReason string `json:"ktNotScannedReason"`
KtSkipReason string `json:"ktSkipReason"`
AvMessageSizeLimit string `json:"avMessageSizeLimit"`
AsMessageSizeLimit string `json:"asMessageSizeLimit"`
AsMethod string `json:"asMethod"`
KtProceededBy string `json:"ktProceededBy"`
ApuMethod string `json:"apuMethod"`
WmufMethod string `json:"wmufMethod"`
PartResults []struct {
FileName string `json:"fileName"`
FileSize string `json:"fileSize"`
AvInfo struct {
Statuses []struct {
AvStatus string `json:"avStatus"`
} `json:"statuses"`
DocWithMacroDetected bool `json:"docWithMacroDetected"`
SkipReason string `json:"skipReason"`
SkipDescription string `json:"skipDescription"`
Threats []string `json:"threats"`
DisinfectedObjects []string `json:"disinfectedObjects"`
DeletedObjects []string `json:"deletedObjects"`
} `json:"avInfo"`
CfInfo struct {
Statuses []string `json:"statuses"`
BannedFileName string `json:"bannedFileName"`
BannedFileFormat string `json:"bannedFileFormat"`
} `json:"cfInfo"`
Action string `json:"action"`
} `json:"partResults"`
MaInfo struct {
DmarcVerdict string `json:"dmarcVerdict"`
SpfVerdict string `json:"spfVerdict"`
DkimVerdicts []string `json:"dkimVerdicts"`
} `json:"maInfo"`
Action string `json:"action"`
BackupReason string `json:"backupReason"`
UnsafeNotificationRecipients []string `json:"unsafeNotificationRecipients"`
} `json:"details"`
HashString string `json:"-"`
}
// Hash return hash of record
func (o *Record) Hash() error {
jsonBytes, err := json.Marshal(o)
if err != nil {
return errors.Wrap(err, "could not marshal json")
}
o.HashString = fmt.Sprintf("%x", md5.Sum(jsonBytes)) //nolint:gosec
return nil
}