Skip to content

Commit

Permalink
Add HTTP header support to string literal matching
Browse files Browse the repository at this point in the history
  • Loading branch information
dstotijn committed Mar 31, 2022
1 parent aa98228 commit f7def87
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 0 deletions.
22 changes: 22 additions & 0 deletions pkg/proxy/intercept/filter.go
Expand Up @@ -198,6 +198,17 @@ func getMappedStringLiteralFromReq(req *http.Request, s string) (string, error)
}

func matchReqStringLiteral(req *http.Request, strLiteral filter.StringLiteral) (bool, error) {
for key, values := range req.Header {
for _, value := range values {
if strings.Contains(
strings.ToLower(fmt.Sprintf("%v: %v", key, value)),
strings.ToLower(strLiteral.Value),
) {
return true, nil
}
}
}

for _, fn := range reqFilterKeyFns {
value, err := fn(req)
if err != nil {
Expand Down Expand Up @@ -398,6 +409,17 @@ func getMappedStringLiteralFromRes(res *http.Response, s string) (string, error)
}

func matchResStringLiteral(res *http.Response, strLiteral filter.StringLiteral) (bool, error) {
for key, values := range res.Header {
for _, value := range values {
if strings.Contains(
strings.ToLower(fmt.Sprintf("%v: %v", key, value)),
strings.ToLower(strLiteral.Value),
) {
return true, nil
}
}
}

for _, fn := range resFilterKeyFns {
value, err := fn(res)
if err != nil {
Expand Down
22 changes: 22 additions & 0 deletions pkg/reqlog/search.go
Expand Up @@ -181,6 +181,17 @@ func (reqLog RequestLog) getMappedStringLiteral(s string) string {
}

func (reqLog RequestLog) matchStringLiteral(strLiteral filter.StringLiteral) (bool, error) {
for key, values := range reqLog.Header {
for _, value := range values {
if strings.Contains(
strings.ToLower(fmt.Sprintf("%v: %v", key, value)),
strings.ToLower(strLiteral.Value),
) {
return true, nil
}
}
}

for _, fn := range reqLogSearchKeyFns {
if strings.Contains(
strings.ToLower(fn(reqLog)),
Expand All @@ -191,6 +202,17 @@ func (reqLog RequestLog) matchStringLiteral(strLiteral filter.StringLiteral) (bo
}

if reqLog.Response != nil {
for key, values := range reqLog.Response.Header {
for _, value := range values {
if strings.Contains(
strings.ToLower(fmt.Sprintf("%v: %v", key, value)),
strings.ToLower(strLiteral.Value),
) {
return true, nil
}
}
}

for _, fn := range ResLogSearchKeyFns {
if strings.Contains(
strings.ToLower(fn(*reqLog.Response)),
Expand Down
22 changes: 22 additions & 0 deletions pkg/sender/search.go
Expand Up @@ -174,6 +174,17 @@ func (req Request) getMappedStringLiteral(s string) string {
}

func (req Request) matchStringLiteral(strLiteral filter.StringLiteral) (bool, error) {
for key, values := range req.Header {
for _, value := range values {
if strings.Contains(
strings.ToLower(fmt.Sprintf("%v: %v", key, value)),
strings.ToLower(strLiteral.Value),
) {
return true, nil
}
}
}

for _, fn := range senderReqSearchKeyFns {
if strings.Contains(
strings.ToLower(fn(req)),
Expand All @@ -184,6 +195,17 @@ func (req Request) matchStringLiteral(strLiteral filter.StringLiteral) (bool, er
}

if req.Response != nil {
for key, values := range req.Response.Header {
for _, value := range values {
if strings.Contains(
strings.ToLower(fmt.Sprintf("%v: %v", key, value)),
strings.ToLower(strLiteral.Value),
) {
return true, nil
}
}
}

for _, fn := range reqlog.ResLogSearchKeyFns {
if strings.Contains(
strings.ToLower(fn(*req.Response)),
Expand Down

0 comments on commit f7def87

Please sign in to comment.