MCPcopy
hub / github.com/projectdiscovery/proxify / storeWriter

Method storeWriter

pkg/logger/logger.go:259–296  ·  view source on GitHub ↗

storeWriter writes the data to the store (file, kafka, elastic) this can be refactored to make it more readable and scalable with improved interface and probably use of structure http data instead of raw bytes

(outputdata types.HTTPTransaction)

Source from the content-addressed store, hash-verified

257// with improved interface and probably use of structure http data
258// instead of raw bytes
259func (l *Logger) storeWriter(outputdata types.HTTPTransaction) {
260 if !l.options.DumpRequest && !l.options.DumpResponse {
261 outputdata.PartSuffix = ""
262 } else if l.options.DumpRequest && !outputdata.Userdata.HasResponse {
263 outputdata.PartSuffix = ".request"
264 } else if l.options.DumpResponse && outputdata.Userdata.HasResponse {
265 outputdata.PartSuffix = ".response"
266 } else {
267 return
268 }
269 outputdata.Name = fmt.Sprintf("%s%s-%s", outputdata.Userdata.Host, outputdata.PartSuffix, outputdata.Userdata.ID)
270 if outputdata.Userdata.HasResponse && (!l.options.DumpRequest && !l.options.DumpResponse) {
271 if outputdata.Userdata.Match != nil && *outputdata.Userdata.Match {
272 outputdata.Name = outputdata.Name + ".match"
273 }
274 }
275 outputdata.Format = dataWithoutNewLine
276 if !strings.HasSuffix(string(outputdata.Data), "\n") {
277 outputdata.Format = dataWithNewLine
278 }
279
280 outputdata.DataString = fmt.Sprintf(outputdata.Format, outputdata.Data)
281 if outputdata.Userdata.HasResponse {
282 outputdata.Format = "\n" + outputdata.Format
283 }
284 outputdata.RawData = []byte(fmt.Sprintf(outputdata.Format, outputdata.RawData))
285
286 if l.options.MaxSize > 0 {
287 outputdata.DataString = stringsutil.Truncate(outputdata.DataString, l.options.MaxSize)
288 outputdata.RawData = []byte(stringsutil.Truncate(string(outputdata.RawData), l.options.MaxSize))
289 }
290 for _, store := range l.Store {
291 err := store.Save(outputdata)
292 if err != nil {
293 gologger.Warning().Msgf("Error while logging: %s", err)
294 }
295 }
296}
297
298func isASCIICheckRequired(contentType string) bool {
299 return stringsutil.ContainsAny(contentType, "application/octet-stream", "application/x-www-form-urlencoded")

Callers 1

AsyncWriteMethod · 0.95

Calls 1

SaveMethod · 0.65

Tested by

no test coverage detected