2021-01-20 18:03:05 +00:00
|
|
|
package http
|
|
|
|
|
|
|
|
import (
|
2021-01-26 17:42:07 +00:00
|
|
|
"crypto/tls"
|
2021-01-20 18:03:05 +00:00
|
|
|
"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,
|
|
|
|
}
|
|
|
|
|
2021-02-10 20:26:45 +00:00
|
|
|
if state, ok := tlsConnectionState(request.Context()); ok {
|
2021-01-20 18:03:05 +00:00
|
|
|
ev.TLS = &audit.TLSDetails{
|
2021-02-10 20:26:45 +00:00
|
|
|
Version: audit.TLSVersionToEntity(state.Version).String(),
|
|
|
|
CipherSuite: tls.CipherSuiteName(state.CipherSuite),
|
|
|
|
ServerName: state.ServerName,
|
2021-01-20 18:03:05 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
ev.SetDestinationIPFromAddr(localAddr(request.Context()))
|
|
|
|
ev.SetSourceIPFromAddr(remoteAddr(request.Context()))
|
|
|
|
|
|
|
|
return ev
|
|
|
|
}
|