From 3c2bd02c9302587252ff80a1b4764f56de30c0bc Mon Sep 17 00:00:00 2001 From: Wilson Wu Date: Wed, 24 Jan 2024 14:21:55 +0800 Subject: [PATCH 01/11] Initial commit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 68cdd3c..2ec2f02 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# envoy-extproc-body-rewrite \ No newline at end of file +# envoy-extproc-demo-go \ No newline at end of file From e09dd50ed19a0781d6111ccf4d88e6427cf87c92 Mon Sep 17 00:00:00 2001 From: "gang.liu" Date: Mon, 29 Jan 2024 14:41:09 +0800 Subject: [PATCH 02/11] add files Signed-off-by: gang.liu --- .github/workflows/ci.yml | 34 ++++++++++++ Dockerfile | 13 +++++ bodycheck.go | 102 +++++++++++++++++++++++++++++++++++ envoy.yaml | 113 +++++++++++++++++++++++++++++++++++++++ go.mod | 22 ++++++++ go.sum | 70 ++++++++++++++++++++++++ grpc_health_probe | Bin 0 -> 9923048 bytes main.go | 59 ++++++++++++++++++++ 8 files changed, 413 insertions(+) create mode 100644 .github/workflows/ci.yml create mode 100644 Dockerfile create mode 100644 bodycheck.go create mode 100644 envoy.yaml create mode 100644 go.mod create mode 100644 go.sum create mode 100644 grpc_health_probe create mode 100644 main.go diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..f30b8a9 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,34 @@ +# This workflow will build a package using Maven and then publish it to GitHub packages when a release is created +# For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#apache-maven-with-a-settings-path + +name: CI + +on: + push: + branches: [ main ] + pull_request: + branches: [ "*" ] + +jobs: + Docker: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + java: [8] + steps: + - name: "Login to Docker Registry" + uses: docker/login-action@v2 + with: + registry: release.daocloud.io + username: ${{ secrets.DAOCLOUD_REGISTRY_USERNAME }} + password: ${{ secrets.DAOCLOUD_REGISTRY_PWD }} + - name: Get Hash + id: hash + run: echo "${{ github.sha }}" + + - name: "Build and Push" + uses: docker/build-push-action@v4 + with: + push: true + tags: release.daocloud.io/skoala/enovy-extproc-demo-go:${{ github.sha }} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..32966ca --- /dev/null +++ b/Dockerfile @@ -0,0 +1,13 @@ +FROM docker.m.daocloud.io/busybox + +COPY ./grpc_health_probe /bin/grpc_health_probe +RUN chmod +x /bin/grpc_health_probe + +COPY ./envoy-extproc-demo-go /bin/extproc +RUN chmod +x /bin/extproc + +ARG EXAMPLE=body-check + +EXPOSE 50051 + +CMD [ "extproc", "body-check", "--log-stream", "--log-phases", "body-size", "32" ] diff --git a/bodycheck.go b/bodycheck.go new file mode 100644 index 0000000..06c26e6 --- /dev/null +++ b/bodycheck.go @@ -0,0 +1,102 @@ +package main + +import ( + "log" + "strconv" + + typev3 "github.com/envoyproxy/go-control-plane/envoy/type/v3" + ep "github.com/wrossmorrow/envoy-extproc-sdk-go" +) + +type bodyCheckRequestProcessor struct { + opts *ep.ProcessingOptions + maxBodySize int64 +} + +func (s *bodyCheckRequestProcessor) GetName() string { + return "big-body" +} + +func (s *bodyCheckRequestProcessor) GetOptions() *ep.ProcessingOptions { + return s.opts +} + +const kContentLen = "content-length" + +func (s *bodyCheckRequestProcessor) ProcessRequestHeaders(ctx *ep.RequestContext, headers map[string][]string, rawValues map[string][]byte) error { + cancel := func(code int32) error { + return ctx.CancelRequest(code, map[string]string{}, typev3.StatusCode_name[code]) + } + raw, ok := rawValues[kContentLen] + if !ok { + return cancel(413) + } + + size, _ := strconv.ParseInt(string(raw), 10, 64) + if size > s.maxBodySize { + log.Printf("the body size: %d exceeded the maximum size: %d\n", size, s.maxBodySize) + return cancel(413) + } + + return ctx.ContinueRequest() +} + +func (s *bodyCheckRequestProcessor) ProcessRequestBody(ctx *ep.RequestContext, body []byte) error { + return ctx.ContinueRequest() +} + +func (s *bodyCheckRequestProcessor) ProcessRequestTrailers(ctx *ep.RequestContext, trailers map[string][]string, rawValues map[string][]byte) error { + return ctx.ContinueRequest() +} + +func (s *bodyCheckRequestProcessor) ProcessResponseHeaders(ctx *ep.RequestContext, headers map[string][]string, rawValues map[string][]byte) error { + return ctx.ContinueRequest() +} + +func (s *bodyCheckRequestProcessor) ProcessResponseBody(ctx *ep.RequestContext, body []byte) error { + return ctx.ContinueRequest() +} + +func (s *bodyCheckRequestProcessor) ProcessResponseTrailers(ctx *ep.RequestContext, trailers map[string][]string, rawValues map[string][]byte) error { + return ctx.ContinueRequest() +} + +const kBodySize = "body-size" + +func (s *bodyCheckRequestProcessor) Init(opts *ep.ProcessingOptions, nonFlagArgs []string) error { + s.opts = opts + s.maxBodySize = 16 + + var ( + i int + err error + maxBodySize int64 + ) + + nArgs := len(nonFlagArgs) + for ; i < nArgs-1; i++ { + if nonFlagArgs[i] == kBodySize { + break + } + } + + if i == nArgs { + log.Printf("the argument: 'body-size' is missing, use the default.\n") + return nil + } + + maxBodySize, err = strconv.ParseInt(nonFlagArgs[i+1], 10, 64) + if err != nil { + log.Printf("parse the value for parameter: 'body-size' is failed: %v,use the default.\n", err.Error()) + return nil + } + + if maxBodySize > 0 { + s.maxBodySize = maxBodySize + log.Printf("the max body size is: %d.\n", s.maxBodySize) + } + + return nil +} + +func (s *bodyCheckRequestProcessor) Finish() {} diff --git a/envoy.yaml b/envoy.yaml new file mode 100644 index 0000000..6df2334 --- /dev/null +++ b/envoy.yaml @@ -0,0 +1,113 @@ +static_resources: + listeners: + - name: listener + address: + socket_address: {address: 0.0.0.0, port_value: 8000} + filter_chains: + - filters: + - name: envoy.filters.network.http_connection_manager + typed_config: + "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager + stat_prefix: envoy + codec_type: AUTO + route_config: + name: local_route + virtual_hosts: + - name: upstream + domains: ["*"] + routes: + # any route prefixed with "/no-extproc" will bypass extprocs + - match: + prefix: "/no-extproc" + route: + cluster: upstream + typed_per_filter_config: + envoy.filters.http.ext_proc: + '@type': type.googleapis.com/envoy.extensions.filters.http.ext_proc.v3.ExtProcPerRoute + disabled: true + - match: + prefix: "/" + route: + cluster: upstream + http_filters: + - name: envoy.filters.http.ext_proc + typed_config: + "@type": type.googleapis.com/envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor + grpc_service: + envoy_grpc: + cluster_name: body-check + timeout: 30s + failure_mode_allow: true + message_timeout: 0.2s + processing_mode: + request_header_mode: SEND + response_header_mode: SEND + request_body_mode: BUFFERED + response_body_mode: BUFFERED + request_trailer_mode: SKIP + response_trailer_mode: SKIP + - name: envoy.filters.http.router + typed_config: + '@type': type.googleapis.com/envoy.extensions.filters.http.router.v3.Router + clusters: + - name: listener + connect_timeout: 0.250s + type: LOGICAL_DNS + lb_policy: LEAST_REQUEST + dns_lookup_family: V4_ONLY + typed_extension_protocol_options: + envoy.extensions.upstreams.http.v3.HttpProtocolOptions: + "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions + explicit_http_config: + http_protocol_options: {} + load_assignment: + cluster_name: listener + endpoints: + - lb_endpoints: + - endpoint: + address: + socket_address: + address: localhost + port_value: 8000 + - name: upstream + connect_timeout: 0.250s + type: LOGICAL_DNS + lb_policy: LEAST_REQUEST + dns_lookup_family: V4_ONLY + typed_extension_protocol_options: + envoy.extensions.upstreams.http.v3.HttpProtocolOptions: + "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions + explicit_http_config: + http_protocol_options: {} + load_assignment: + cluster_name: upstream + endpoints: + - lb_endpoints: + - endpoint: + hostname: upstream + address: + socket_address: + address: upstream + port_value: 8000 + - name: body-check + dns_lookup_family: V4_ONLY + lb_policy: LEAST_REQUEST + load_assignment: + cluster_name: trivial + endpoints: + - lb_endpoints: + - endpoint: + address: + socket_address: + address: noop + port_value: 50051 + hostname: base + type: LOGICAL_DNS + typed_extension_protocol_options: + envoy.extensions.upstreams.http.v3.HttpProtocolOptions: + '@type': type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions + explicit_http_config: + http2_protocol_options: {} +admin: + address: + socket_address: {address: 0.0.0.0, port_value: 9901} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..9054907 --- /dev/null +++ b/go.mod @@ -0,0 +1,22 @@ +module github.com/projectsesame/envoy-extproc-demo-go + +go 1.21 + +require ( + github.com/envoyproxy/go-control-plane v0.12.0 + github.com/wrossmorrow/envoy-extproc-sdk-go v0.0.21 +) + +require ( + github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 // indirect + github.com/envoyproxy/protoc-gen-validate v1.0.2 // indirect + github.com/golang/protobuf v1.5.3 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 // indirect + google.golang.org/grpc v1.58.3 // indirect + google.golang.org/protobuf v1.32.0 // indirect +) + +replace github.com/wrossmorrow/envoy-extproc-sdk-go => github.com/izturn/envoy-extproc-sdk-go v0.0.2 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..c71ed7a --- /dev/null +++ b/go.sum @@ -0,0 +1,70 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.12.0 h1:4X+VP1GHd1Mhj6IB5mMeGbLCleqxjletLK6K0rbxyZI= +github.com/envoyproxy/go-control-plane v0.12.0/go.mod h1:ZBTaoJ23lqITozF0M6G4/IragXCQKCnYbmlmtHvwRG0= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA= +github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/izturn/envoy-extproc-sdk-go v0.0.2 h1:grzFuDIM43dexXpvtILMzOOmI0UnzBHH8JKsypKVe/U= +github.com/izturn/envoy-extproc-sdk-go v0.0.2/go.mod h1:LYWKVJjmA8MqSF2UQ1hRPALPB5U13UaFwTX0+ji/PnA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 h1:N3bU/SQDCDyD6R528GJ/PwW9KjYcJA3dgyH+MovAkIM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:KSqppvjFjtoCI+KGd4PELB0qLNxdJHRGqRI09mB6pQA= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.58.3 h1:BjnpXut1btbtgN/6sp+brB2Kbm2LjNXnidYujAVbSoQ= +google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= +google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/grpc_health_probe b/grpc_health_probe new file mode 100644 index 0000000000000000000000000000000000000000..5e2bc17a80910df79151294e2c23e454293dc357 GIT binary patch literal 9923048 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