38 lines
820 B
Go
38 lines
820 B
Go
|
package http
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
|
||
|
"gitlab.com/inetmock/inetmock/pkg/audit"
|
||
|
"gitlab.com/inetmock/inetmock/pkg/audit/details"
|
||
|
)
|
||
|
|
||
|
func EventFromRequest(request *http.Request, app audit.AppProtocol) audit.Event {
|
||
|
httpDetails := details.HTTP{
|
||
|
Method: request.Method,
|
||
|
Host: request.Host,
|
||
|
URI: request.RequestURI,
|
||
|
Proto: request.Proto,
|
||
|
Headers: request.Header,
|
||
|
}
|
||
|
|
||
|
ev := audit.Event{
|
||
|
Transport: audit.TransportProtocol_TCP,
|
||
|
Application: app,
|
||
|
ProtocolDetails: httpDetails,
|
||
|
}
|
||
|
|
||
|
if request.TLS != nil {
|
||
|
ev.TLS = &audit.TLSDetails{
|
||
|
Version: request.TLS.Version,
|
||
|
CipherSuite: request.TLS.CipherSuite,
|
||
|
ServerName: request.TLS.ServerName,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
ev.SetDestinationIPFromAddr(localAddr(request.Context()))
|
||
|
ev.SetSourceIPFromAddr(remoteAddr(request.Context()))
|
||
|
|
||
|
return ev
|
||
|
}
|