@@ -5,13 +5,15 @@ import (
55 "net/http"
66 "net/http/httputil"
77 "time"
8+
89 "github.com/projectdiscovery/gologger"
910)
1011
1112// Convenience globals
1213var (
1314 EnableUpload bool
1415 EnableVerbose bool
16+ EnableLogUA bool
1517)
1618
1719func (t * HTTPServer ) shouldDumpBody (bodysize int64 ) bool {
@@ -29,12 +31,41 @@ func (t *HTTPServer) loglayer(handler http.Handler) http.Handler {
2931 lrw := newLoggingResponseWriter (w , t .options .MaxDumpBodySize )
3032 handler .ServeHTTP (lrw , r )
3133
34+ // Log to JSON file if JSON logger is enabled
35+ if t .jsonLogger != nil {
36+ // Extract headers
37+ headers := make (map [string ]string )
38+ for name , values := range r .Header {
39+ if len (values ) > 0 {
40+ headers [name ] = values [0 ]
41+ }
42+ }
43+
44+ // Extract request body from fullRequest
45+ requestBody := ""
46+ if len (fullRequest ) > 0 {
47+ // Find the double CRLF that separates headers from body
48+ bodyStart := bytes .Index (fullRequest , []byte ("\r \n \r \n " ))
49+ if bodyStart != - 1 && bodyStart + 4 < len (fullRequest ) {
50+ requestBody = string (fullRequest [bodyStart + 4 :])
51+ }
52+ }
53+
54+ // Log to JSON file
55+ _ = t .jsonLogger .LogRequest (r , lrw .statusCode , lrw .Size , r .UserAgent (), headers , requestBody , string (lrw .Data ))
56+ }
57+
58+ // Continue with existing console logging
3259 if EnableVerbose {
3360 headers := new (bytes.Buffer )
3461 lrw .Header ().Write (headers ) //nolint
3562 gologger .Print ().Msgf ("\n [%s]\n Remote 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 ))
3663 } else {
37- 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 )
64+ if EnableLogUA {
65+ 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 ())
66+ } else {
67+ 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 )
68+ }
3869 }
3970 })
4071}
0 commit comments