log client IPs
continuous-integration/drone/push Build is failing
Details
continuous-integration/drone/push Build is failing
Details
This commit is contained in:
parent
aa15254e73
commit
d467d04479
|
@ -6,6 +6,7 @@ import (
|
|||
"encoding/hex"
|
||||
"errors"
|
||||
"io"
|
||||
"net"
|
||||
"time"
|
||||
|
||||
"tildegit.org/tjp/sliderule/internal/types"
|
||||
|
@ -15,9 +16,15 @@ func LogRequests(logger Logger) types.Middleware {
|
|||
return func(inner types.Handler) types.Handler {
|
||||
return types.HandlerFunc(func(ctx context.Context, request *types.Request) *types.Response {
|
||||
start := time.Now()
|
||||
|
||||
var clientip string
|
||||
if request.RemoteAddr != nil {
|
||||
clientip, _, _ = net.SplitHostPort(request.RemoteAddr.String())
|
||||
}
|
||||
|
||||
response := inner.Handle(ctx, request)
|
||||
if response != nil {
|
||||
response.Body = loggingBody(logger, request, response, start)
|
||||
response.Body = loggingBody(logger, request, response, start, clientip)
|
||||
} else {
|
||||
end := time.Now()
|
||||
params := []any{
|
||||
|
@ -26,6 +33,7 @@ func LogRequests(logger Logger) types.Middleware {
|
|||
"dur", end.Sub(start),
|
||||
"url", request.URL,
|
||||
"status", "(not found)",
|
||||
"clientip", clientip,
|
||||
}
|
||||
if fingerprint, ok := clientFingerprint(request); ok {
|
||||
params = append(params, "client_ident", fingerprint)
|
||||
|
@ -52,7 +60,8 @@ type loggedResponseBody struct {
|
|||
response *types.Response
|
||||
body io.Reader
|
||||
|
||||
start time.Time
|
||||
start time.Time
|
||||
clientip string
|
||||
|
||||
written int
|
||||
logger Logger
|
||||
|
@ -66,6 +75,7 @@ func (lr *loggedResponseBody) log() {
|
|||
"dur", end.Sub(lr.start),
|
||||
"url", lr.request.URL,
|
||||
"status", lr.response.Status,
|
||||
"clientip", lr.clientip,
|
||||
"bodylen", lr.written,
|
||||
}
|
||||
if fingerprint, ok := clientFingerprint(lr.request); ok {
|
||||
|
@ -111,7 +121,7 @@ func (lwtr loggedWriteToResponseBody) WriteTo(dst io.Writer) (int64, error) {
|
|||
return n, err
|
||||
}
|
||||
|
||||
func loggingBody(logger Logger, request *types.Request, response *types.Response, start time.Time) io.Reader {
|
||||
func loggingBody(logger Logger, request *types.Request, response *types.Response, start time.Time, clientip string) io.Reader {
|
||||
body := &loggedResponseBody{
|
||||
request: request,
|
||||
response: response,
|
||||
|
@ -119,6 +129,7 @@ func loggingBody(logger Logger, request *types.Request, response *types.Response
|
|||
start: start,
|
||||
written: 0,
|
||||
logger: logger,
|
||||
clientip: clientip,
|
||||
}
|
||||
|
||||
if _, ok := response.Body.(io.WriterTo); ok {
|
||||
|
|
Loading…
Reference in New Issue