diff --git a/internal/runner/options.go b/internal/runner/options.go index 2890a04..49752a1 100644 --- a/internal/runner/options.go +++ b/internal/runner/options.go @@ -27,6 +27,7 @@ type Options struct { Verbose bool EnableUpload bool EnableTCP bool + LogUA bool RulesFile string TCPWithTLS bool Version bool @@ -53,6 +54,7 @@ func ParseOptions() *Options { } flag.StringVar(&options.Folder, "path", currentPath, "Folder") flag.BoolVar(&options.EnableUpload, "upload", false, "Enable upload via PUT") + flag.BoolVar(&options.LogUA, "log-ua", false, "Log User Agent") flag.BoolVar(&options.HTTPS, "https", false, "HTTPS") flag.StringVar(&options.TLSCertificate, "cert", "", "HTTPS Certificate") flag.StringVar(&options.TLSKey, "key", "", "HTTPS Certificate Key") diff --git a/internal/runner/runner.go b/internal/runner/runner.go index dc63940..a1dcef2 100644 --- a/internal/runner/runner.go +++ b/internal/runner/runner.go @@ -55,6 +55,7 @@ func New(options *Options) (*Runner, error) { httpServer, err := httpserver.New(&httpserver.Options{ Folder: r.options.Folder, EnableUpload: r.options.EnableUpload, + LogUA: r.options.LogUA, ListenAddress: r.options.ListenAddress, TLS: r.options.HTTPS, Certificate: r.options.TLSCertificate, diff --git a/pkg/httpserver/httpserver.go b/pkg/httpserver/httpserver.go index 5dd65a6..5daf43d 100644 --- a/pkg/httpserver/httpserver.go +++ b/pkg/httpserver/httpserver.go @@ -14,6 +14,7 @@ import ( type Options struct { Folder string EnableUpload bool + LogUA bool // enable logging user agent ListenAddress string TLS bool Certificate string @@ -46,6 +47,7 @@ func New(options *Options) (*HTTPServer, error) { var h HTTPServer EnableUpload = options.EnableUpload EnableVerbose = options.Verbose + EnableLogUA = options.LogUA folder, err := filepath.Abs(options.Folder) if err != nil { return nil, err diff --git a/pkg/httpserver/loglayer.go b/pkg/httpserver/loglayer.go index f3fb4f7..54c6c69 100644 --- a/pkg/httpserver/loglayer.go +++ b/pkg/httpserver/loglayer.go @@ -12,6 +12,7 @@ import ( var ( EnableUpload bool EnableVerbose bool + EnableLogUA bool ) func (t *HTTPServer) shouldDumpBody(bodysize int64) bool { @@ -34,7 +35,11 @@ func (t *HTTPServer) loglayer(handler http.Handler) http.Handler { lrw.Header().Write(headers) //nolint gologger.Print().Msgf("\n[%s]\nRemote Address: %s\n%s\n%s %d %s\n%s\n%s\n", time.Now().Format("2006-01-02 15:04:05"), r.RemoteAddr, string(fullRequest), r.Proto, lrw.statusCode, http.StatusText(lrw.statusCode), headers.String(), string(lrw.Data)) } else { - gologger.Print().Msgf("[%s] %s \"%s %s %s\" %d %d", time.Now().Format("2006-01-02 15:04:05"), r.RemoteAddr, r.Method, r.URL, r.Proto, lrw.statusCode, lrw.Size) + if EnableLogUA { + gologger.Print().Msgf("[%s] %s \"%s %s %s\" %d %d - %s", time.Now().Format("2006-01-02 15:04:05"), r.RemoteAddr, r.Method, r.URL, r.Proto, lrw.statusCode, lrw.Size, r.UserAgent()) + } else { + gologger.Print().Msgf("[%s] %s \"%s %s %s\" %d %d", time.Now().Format("2006-01-02 15:04:05"), r.RemoteAddr, r.Method, r.URL, r.Proto, lrw.statusCode, lrw.Size) + } } }) }