in http/server/otelaudit/otelaudit_helper.go [69:116]
func createOtelAuditEvent(logger *slog.Logger, statusCode int, req *http.Request, otelConfig *OtelConfig, errorMsg string) (msgs.Msg, error) {
host, _, err := net.SplitHostPort(req.RemoteAddr)
if err != nil {
logger.Error("failed to split host and port", "error", err)
return msgs.Msg{}, err
}
addr, err := msgs.ParseAddr(host)
if err != nil {
logger.Error("failed to parse address", "error", err)
return msgs.Msg{}, err
}
tr := map[string][]msgs.TargetResourceEntry{
"ResourceType": {
{
Name: req.RequestURI,
Region: req.Header.Get("Region"), // Assume the region is in the header
},
},
}
parsedURL, parseErr := url.Parse(req.URL.String())
if parseErr != nil {
logger.Error("error parsing request URL", "error", parseErr)
return msgs.Msg{}, parseErr
}
reqURL := logging.TrimURL(*parsedURL)
methodInfo := logging.GetMethodInfo(req.Method, reqURL)
record := msgs.Record{
CallerIpAddress: addr,
CallerIdentities: getCallerIdentities(req),
OperationCategories: []msgs.OperationCategory{getOperationCategory(methodInfo, otelConfig.CustomOperationCategories)},
OperationCategoryDescription: getOperationCategoryDescription(methodInfo, otelConfig.CustomOperationDescs),
TargetResources: tr,
CallerAccessLevels: []string{"NA"},
OperationAccessLevel: otelConfig.OperationAccessLevel,
OperationName: methodInfo,
CallerAgent: req.UserAgent(),
OperationType: getOperationType(req.Method),
OperationResult: getOperationResult(statusCode),
OperationResultDescription: getOperationResultDescription(statusCode, errorMsg),
}
return msgs.Msg{
Type: msgs.ControlPlane,
Record: record,
}, nil
}