optimize transformer plugin (#1183)

This commit is contained in:
澄潭
2024-08-08 09:46:11 +08:00
committed by GitHub
parent 980ffde244
commit 55fdddee2f

View File

@@ -291,6 +291,7 @@ func onHttpRequestHeaders(ctx wrapper.HttpContext, config TransformerConfig, log
ctx.SetContext("path", path) ctx.SetContext("path", path)
if config.reqTrans == nil { if config.reqTrans == nil {
ctx.DontReadRequestBody()
return types.ActionContinue return types.ActionContinue
} }
@@ -299,15 +300,18 @@ func onHttpRequestHeaders(ctx wrapper.HttpContext, config TransformerConfig, log
headers, err := proxywasm.GetHttpRequestHeaders() headers, err := proxywasm.GetHttpRequestHeaders()
if err != nil { if err != nil {
log.Warn("failed to get request headers") log.Warn("failed to get request headers")
ctx.DontReadRequestBody()
return types.ActionContinue return types.ActionContinue
} }
hs := convertHeaders(headers) hs := convertHeaders(headers)
if hs[":authority"] == nil { if hs[":authority"] == nil {
log.Warn(errGetRequestHost.Error()) log.Warn(errGetRequestHost.Error())
ctx.DontReadRequestBody()
return types.ActionContinue return types.ActionContinue
} }
if hs[":path"] == nil { if hs[":path"] == nil {
log.Warn(errGetRequestPath.Error()) log.Warn(errGetRequestPath.Error())
ctx.DontReadRequestBody()
return types.ActionContinue return types.ActionContinue
} }
contentType := "" contentType := ""
@@ -330,6 +334,7 @@ func onHttpRequestHeaders(ctx wrapper.HttpContext, config TransformerConfig, log
qs, err := parseQueryByPath(path) qs, err := parseQueryByPath(path)
if err != nil { if err != nil {
log.Warnf("failed to parse query params by path: %v", err) log.Warnf("failed to parse query params by path: %v", err)
ctx.DontReadRequestBody()
return types.ActionContinue return types.ActionContinue
} }
@@ -358,6 +363,7 @@ func onHttpRequestHeaders(ctx wrapper.HttpContext, config TransformerConfig, log
if config.reqTrans.IsHeaderChange() { if config.reqTrans.IsHeaderChange() {
if err = config.reqTrans.TransformHeaders(host, path, hs, mapSourceData); err != nil { if err = config.reqTrans.TransformHeaders(host, path, hs, mapSourceData); err != nil {
log.Warnf("failed to transform request headers: %v", err) log.Warnf("failed to transform request headers: %v", err)
ctx.DontReadRequestBody()
return types.ActionContinue return types.ActionContinue
} }
} }
@@ -365,11 +371,13 @@ func onHttpRequestHeaders(ctx wrapper.HttpContext, config TransformerConfig, log
if config.reqTrans.IsQueryChange() { if config.reqTrans.IsQueryChange() {
if err = config.reqTrans.TransformQuerys(host, path, qs, mapSourceData); err != nil { if err = config.reqTrans.TransformQuerys(host, path, qs, mapSourceData); err != nil {
log.Warnf("failed to transform request query params: %v", err) log.Warnf("failed to transform request query params: %v", err)
ctx.DontReadRequestBody()
return types.ActionContinue return types.ActionContinue
} }
path, err = constructPath(path, qs) path, err = constructPath(path, qs)
if err != nil { if err != nil {
log.Warnf("failed to construct path: %v", err) log.Warnf("failed to construct path: %v", err)
ctx.DontReadRequestBody()
return types.ActionContinue return types.ActionContinue
} }
hs[":path"] = []string{path} hs[":path"] = []string{path}
@@ -378,6 +386,7 @@ func onHttpRequestHeaders(ctx wrapper.HttpContext, config TransformerConfig, log
headers = reconvertHeaders(hs) headers = reconvertHeaders(hs)
if err = proxywasm.ReplaceHttpRequestHeaders(headers); err != nil { if err = proxywasm.ReplaceHttpRequestHeaders(headers); err != nil {
log.Warnf("failed to replace request headers: %v", err) log.Warnf("failed to replace request headers: %v", err)
ctx.DontReadRequestBody()
return types.ActionContinue return types.ActionContinue
} }
@@ -507,6 +516,7 @@ func onHttpRequestBody(ctx wrapper.HttpContext, config TransformerConfig, body [
func onHttpResponseHeaders(ctx wrapper.HttpContext, config TransformerConfig, log wrapper.Log) types.Action { func onHttpResponseHeaders(ctx wrapper.HttpContext, config TransformerConfig, log wrapper.Log) types.Action {
if config.respTrans == nil { if config.respTrans == nil {
ctx.DontReadResponseBody()
return types.ActionContinue return types.ActionContinue
} }
@@ -515,11 +525,13 @@ func onHttpResponseHeaders(ctx wrapper.HttpContext, config TransformerConfig, lo
host, path, err := getHostAndPathFromHttpCtx(ctx) host, path, err := getHostAndPathFromHttpCtx(ctx)
if err != nil { if err != nil {
log.Warn(err.Error()) log.Warn(err.Error())
ctx.DontReadResponseBody()
return types.ActionContinue return types.ActionContinue
} }
headers, err := proxywasm.GetHttpResponseHeaders() headers, err := proxywasm.GetHttpResponseHeaders()
if err != nil { if err != nil {
log.Warnf("failed to get response headers: %v", err) log.Warnf("failed to get response headers: %v", err)
ctx.DontReadResponseBody()
return types.ActionContinue return types.ActionContinue
} }
hs := convertHeaders(headers) hs := convertHeaders(headers)
@@ -555,6 +567,7 @@ func onHttpResponseHeaders(ctx wrapper.HttpContext, config TransformerConfig, lo
if config.respTrans.IsHeaderChange() { if config.respTrans.IsHeaderChange() {
if err = config.respTrans.TransformHeaders(host, path, hs, mapSourceData); err != nil { if err = config.respTrans.TransformHeaders(host, path, hs, mapSourceData); err != nil {
log.Warnf("failed to transform response headers: %v", err) log.Warnf("failed to transform response headers: %v", err)
ctx.DontReadResponseBody()
return types.ActionContinue return types.ActionContinue
} }
} }
@@ -562,6 +575,7 @@ func onHttpResponseHeaders(ctx wrapper.HttpContext, config TransformerConfig, lo
headers = reconvertHeaders(hs) headers = reconvertHeaders(hs)
if err = proxywasm.ReplaceHttpResponseHeaders(headers); err != nil { if err = proxywasm.ReplaceHttpResponseHeaders(headers); err != nil {
log.Warnf("failed to replace response headers: %v", err) log.Warnf("failed to replace response headers: %v", err)
ctx.DontReadResponseBody()
return types.ActionContinue return types.ActionContinue
} }