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

Method MatchReplaceRequest

proxy.go:321–355  ·  view source on GitHub ↗

MatchReplaceRequest strings or regex

(req *http.Request)

Source from the content-addressed store, hash-verified

319
320// MatchReplaceRequest strings or regex
321func (p *Proxy) MatchReplaceRequest(req *http.Request) error {
322 // lazy mode - dump request
323 reqdump, err := httputil.DumpRequest(req, true)
324 if err != nil {
325 return err
326 }
327
328 // lazy mode - ninja level - elaborate
329 m := make(map[string]interface{})
330 m["request"] = string(reqdump)
331 for _, expr := range p.options.RequestMatchReplaceDSL {
332 v, err := dsl.EvalExpr(expr, m)
333 if err != nil {
334 return err
335 }
336 m["request"] = fmt.Sprint(v)
337 }
338
339 reqbuffer := fmt.Sprint(m["request"])
340 // lazy mode - epic level - rebuild
341 bf := bufio.NewReader(strings.NewReader(reqbuffer))
342 requestNew, err := http.ReadRequest(bf)
343 if err != nil {
344 return err
345 }
346 // closes old body to allow memory reuse
347 _ = req.Body.Close()
348
349 // override original properties
350 req.Method = requestNew.Method
351 req.Header = requestNew.Header
352 req.Body = requestNew.Body
353 req.URL = requestNew.URL
354 return nil
355}
356
357// MatchReplaceRequest strings or regex
358func (p *Proxy) MatchReplaceResponse(resp *http.Response) error {

Callers 1

ModifyRequestMethod · 0.95

Calls 1

CloseMethod · 0.65

Tested by

no test coverage detected