From b1f1c668a8c4a423b25f9ffca1c841aecc61cbe8 Mon Sep 17 00:00:00 2001 From: clarinette9 <83874119+clarinette9@users.noreply.github.com> Date: Sun, 19 Jan 2025 21:44:10 +0800 Subject: [PATCH 1/2] Merge Release/v1.7.0 into Master (#1211) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * typo: fix docs/example markdown lint Signed-off-by: kwanhur Signed-off-by: Song Jian * typo: code span on function prototype of bfe callback Signed-off-by: kwanhur Signed-off-by: Song Jian * typo: fix docs/introduction markdown lint and syntax Signed-off-by: kwanhur Signed-off-by: Song Jian * typo: fix docs/installation markdown lint and syntax Signed-off-by: kwanhur Signed-off-by: Song Jian * typo: fix docs/faq markdown lint and syntax Signed-off-by: kwanhur Signed-off-by: Song Jian * typo: fix docs/modules markdown lint Signed-off-by: kwanhur Signed-off-by: Song Jian * typo: fix docs/operation markdown lint Signed-off-by: kwanhur Signed-off-by: Song Jian * typo: fix docs/monitor markdown lint and syntax Signed-off-by: kwanhur Signed-off-by: Song Jian * Add en_us/condition/request/context.md Signed-off-by: Song Jian * Add zh_cn/condition/request/context.md Signed-off-by: Song Jian * add req_context_value_in() to condition_primitive_index.md and adjust sequence (#1010) Signed-off-by: Song Jian * ci: add markdown lint action Signed-off-by: kwanhur Signed-off-by: Song Jian * typo: fix docs/condition markdown lints Signed-off-by: kwanhur Signed-off-by: Song Jian * Revert "chore: add typos in pre-commit" Signed-off-by: Song Jian * typo: fix bfe_balance spelling Signed-off-by: kwanhur Signed-off-by: Song Jian * typo: fix bfe_basic BOM Signed-off-by: kwanhur Signed-off-by: Song Jian * typo: fix bfe_config spelling Signed-off-by: kwanhur Signed-off-by: Song Jian * typo: fix bfe_fcgi spelling Signed-off-by: kwanhur Signed-off-by: Song Jian * typo: fix bfe_http bfe_server spelling Signed-off-by: kwanhur Signed-off-by: Song Jian * typo: fix bfe_http2 spelling Signed-off-by: kwanhur Signed-off-by: Song Jian * typo: fix bfe_module spelling Signed-off-by: kwanhur Signed-off-by: Song Jian * typo: format bfe_modules/mod_userid Signed-off-by: kwanhur Signed-off-by: Song Jian * typo: fix bfe_route spelling Signed-off-by: kwanhur Signed-off-by: Song Jian * typo: fix bfe_spdy spelling Signed-off-by: kwanhur Signed-off-by: Song Jian * typo: fix bfe_tls spelling Signed-off-by: kwanhur Signed-off-by: Song Jian * typo: format bfe_util/socket_util Signed-off-by: kwanhur Signed-off-by: Song Jian * chore: ignore log rotate files Signed-off-by: kwanhur Signed-off-by: Song Jian * typo: remove dot at the end Signed-off-by: kwanhur Signed-off-by: Song Jian * Fix typo in mod_geo (#1029) Signed-off-by: suhang <1099811329@qq.com> Signed-off-by: Song Jian * Add staticcheck pre-commit hook (#1019) Signed-off-by: kwanhur Signed-off-by: Song Jian * Add precommit hook for markdownlint (#1038) Signed-off-by: kwanhur Signed-off-by: Song Jian * Evict the oldest conn when the conn pool exceeds its limit (#1044) Signed-off-by: chenchen.ccqy66 Signed-off-by: Song Jian * import code-lint workflow job (#1037) Signed-off-by: kwanhur Signed-off-by: Song Jian * fix go.yaml dependency Signed-off-by: Song Jian * fix arm build error in golang1.18 Signed-off-by: Song Jian * refactor: replace strings.Replace with strings.ReplaceAll strings.ReplaceAll(s, old, new) is a wrapper function for strings.Replace(s, old, new, -1). But strings.ReplaceAll is more readable and removes the hardcoded -1. Signed-off-by: Eng Zer Jun Signed-off-by: Song Jian * Create some slices with enough capacity (#1054) Signed-off-by: chenchen.ccqy66 Signed-off-by: Song Jian * Update ci.yml (#1061) Signed-off-by: Song Jian * fix build failed on macos (#1067) Signed-off-by: Song Jian * Make some optimization for leastConnsBalance (#1062) Signed-off-by: likepeng Signed-off-by: Song Jian * Fix some unreachable code in unit tests (#1068) Signed-off-by: Abirdcfly Signed-off-by: Song Jian * Support HTTP/2 fingerprint (#1072) Signed-off-by: xqbumu Signed-off-by: Song Jian * update v1.6.0 changelog Signed-off-by: clarinette9 Signed-off-by: Song Jian * update changelog and version file Signed-off-by: clarinette9 Signed-off-by: Song Jian * Update CHANGELOG.md fix minor typo Signed-off-by: clarinette9 Signed-off-by: Song Jian * Update condition_grammar.md fix typos Signed-off-by: Song Jian * Update README.md Signed-off-by: Song Jian * update mkdocs yml and download link for v1.5 and v1.6 (#1084) Signed-off-by: clarinette9 Signed-off-by: Song Jian * Resolved #800 support test configuration Signed-off-by: kwanhur Signed-off-by: Song Jian * Update MAINTAINERS.md Signed-off-by: clarinette9 Signed-off-by: Song Jian * Update MAINTAINERS.md Signed-off-by: clarinette9 Signed-off-by: Song Jian * update maintainers.md Signed-off-by: clarinette9 Signed-off-by: Song Jian * fix some typo (#1113) Signed-off-by: cui fliter Signed-off-by: Song Jian * Update ci.yml Signed-off-by: Song Jian * Update ADOPTERS.md (#1123) Signed-off-by: Benjamin <72671586+benjx1990@users.noreply.github.com> Signed-off-by: Song Jian * build(deps): bump golang.org/x/sys (#1101) Bumps [golang.org/x/sys](https://github.com/golang/sys) from 0.0.0-20211216021012-1d35b9e2eb4e to 0.1.0. - [Release notes](https://github.com/golang/sys/releases) - [Commits](https://github.com/golang/sys/commits/v0.1.0) --- updated-dependencies: - dependency-name: golang.org/x/sys dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: Song Jian * remove TestSetKeepAlive Signed-off-by: liangchuan Signed-off-by: Song Jian * remove TestSetKeepAlive Signed-off-by: liangchuan Signed-off-by: Song Jian * Resubmit with Signed-off-by line Signed-off-by: liangchuan Signed-off-by: Song Jian * Resubmit with Signed-off-by line Signed-off-by: liangchuan Signed-off-by: Song Jian * http2: close connections when receiving too many headers (#1156) Maintaining HPACK state requires that we parse and process all HEADERS and CONTINUATION frames on a connection. When a request's headers exceed MaxHeaderBytes, we don't allocate memory to store the excess headers but we do parse them. This permits an attacker to cause an HTTP/2 endpoint to read arbitrary amounts of header data, all associated with a request which is going to be rejected. These headers can include Huffman-encoded data which is significantly more expensive for the receiver to decode than for an attacker to send. Set a limit on the amount of excess header frames we will process before closing a connection. This is CVE-2023-45288 and Go issue https://go.dev/issue/65051. Signed-off-by: Song Jian * Update Dockerfile to support multiarch build (#1120) Replace go compile args to TARGETOS and TARGETARCH to support multiarch compile Signed-off-by: Allen Chen Signed-off-by: Song Jian * Fix format issue in bfe_http/request_test.go (#1163) Signed-off-by: cuishuang Signed-off-by: Song Jian * Temporarily remove some test cases using legacy test data (#1193) Signed-off-by: Song Jian * The experimental `dynamic plugin` is deprecated (#1197) Signed-off-by: Song Jian * Update versions of some thirdpaty modules (#1198) Fix broken unit tests Signed-off-by: Song Jian * Upgrade third-party modules for security reasons (#1201) Remove duplicated code lint workflow Signed-off-by: Sijie Yang Signed-off-by: Song Jian * bfe_wasm Signed-off-by: xuleiming Signed-off-by: Song Jian * remove v2 Signed-off-by: xuleiming Signed-off-by: Song Jian * remove redundant codes Signed-off-by: xuleiming Signed-off-by: Song Jian * fix OnPluginStart Signed-off-by: xuleiming Signed-off-by: Song Jian * refine codes Signed-off-by: xuleiming Signed-off-by: Song Jian * fix. Signed-off-by: xuleiming Signed-off-by: Song Jian * fix nil Signed-off-by: xuleiming Signed-off-by: Song Jian * rename package & remove some obsolete lines. Signed-off-by: xuleiming Signed-off-by: Song Jian * refine Signed-off-by: xuleiming Signed-off-by: Song Jian * fix & refine Signed-off-by: xuleiming Signed-off-by: Song Jian * docs of mod_wasmplugin Signed-off-by: xuleiming Signed-off-by: Song Jian * add link in summary.md to mod_wasmplugin Signed-off-by: xuleiming Signed-off-by: Song Jian * fix "bfe_http : readloop goroutine leak #1209" Signed-off-by: xuleiming Signed-off-by: Song Jian * update changlog and version file for v1.7.0 Signed-off-by: Song Jian --------- Signed-off-by: kwanhur Signed-off-by: Song Jian Signed-off-by: suhang <1099811329@qq.com> Signed-off-by: chenchen.ccqy66 Signed-off-by: Eng Zer Jun Signed-off-by: likepeng Signed-off-by: Abirdcfly Signed-off-by: xqbumu Signed-off-by: clarinette9 Signed-off-by: cui fliter Signed-off-by: Benjamin <72671586+benjx1990@users.noreply.github.com> Signed-off-by: dependabot[bot] Signed-off-by: liangchuan Signed-off-by: Allen Chen Signed-off-by: cuishuang Signed-off-by: Sijie Yang Signed-off-by: xuleiming Co-authored-by: kwanhur Co-authored-by: Sijie Yang Co-authored-by: Miles Zhang Co-authored-by: blinkbean <1099811329@qq.com> Co-authored-by: wolfCoder Co-authored-by: daimg Co-authored-by: Eng Zer Jun Co-authored-by: kezhenxu94 Co-authored-by: supermario1990 <406517780@qq.com> Co-authored-by: cooper-li <963492628@qq.com> Co-authored-by: Abirdcfly Co-authored-by: 卜木 Co-authored-by: cui fliter Co-authored-by: Benjamin <72671586+benjx1990@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: liangchuan Co-authored-by: z8n24 Co-authored-by: watchword Co-authored-by: xuleiming Co-authored-by: Song Jian --- .github/workflows/ci.yml | 6 +- .gitignore | 1 + .markdownlint.yml | 32 -- ADOPTERS.md | 2 + CHANGELOG.md | 40 ++ Dockerfile | 6 +- MAINTAINERS.md | 14 +- Makefile | 4 +- README.md | 7 + VERSION | 2 +- bfe.go | 28 +- bfe_basic/condition/parser/y.go | 76 ++-- bfe_config/bfe_conf/conf_basic.go | 30 -- .../testdata/conf_https_basic/bfe_4.conf | 2 +- bfe_http/request_test.go | 6 +- bfe_http/transport.go | 8 +- bfe_http2/frame.go | 30 ++ bfe_http2/frame_test.go | 4 +- bfe_http2/server.go | 7 +- bfe_module/bfe_plugin.go | 109 ----- bfe_modules/bfe_modules.go | 4 + .../mod_auth_jwt/auth_jwt_rule_load.go | 2 +- .../mod_tcp_keepalive_test.go | 35 -- .../mod_wasmplugin/conf_mod_wasmplugin.go | 68 +++ bfe_modules/mod_wasmplugin/mod_wasmplugin.go | 224 ++++++++++ .../mod_wasmplugin/plugin_rule_load.go | 211 ++++++++++ bfe_modules/mod_wasmplugin/plugin_table.go | 72 ++++ bfe_server/bfe_server.go | 23 - bfe_server/bfe_server_init.go | 16 +- bfe_stream/server_conn_test.go | 2 +- bfe_tls/handshake_client_test.go | 26 -- bfe_tls/handshake_server_test.go | 46 -- bfe_util/exit.go | 14 +- bfe_wasmplugin/abi/proxywasm010/factory.go | 27 ++ bfe_wasmplugin/abi/proxywasm010/imports.go | 198 +++++++++ bfe_wasmplugin/abi/proxywasm010/shim.go | 55 +++ bfe_wasmplugin/abi/registry.go | 38 ++ bfe_wasmplugin/adapter.go | 109 +++++ .../engine.go | 18 +- bfe_wasmplugin/filter.go | 145 +++++++ bfe_wasmplugin/plugin.go | 394 ++++++++++++++++++ bfe_websocket/server_conn_test.go | 2 +- conf/bfe.conf | 3 +- conf/mod_wasm/mod_wasm.conf | 7 + conf/mod_wasm/mod_wasm.data | 21 + conf/server_data_conf/host_rule.data | 6 + conf/wasm_plugin/headers/headers.conf | 4 + conf/wasm_plugin/headers/headers.md5 | 1 + conf/wasm_plugin/headers/headers.wasm | Bin 0 -> 1019243 bytes docs/en_us/DOWNLOAD.md | 22 + docs/en_us/SUMMARY.md | 5 +- docs/en_us/condition/condition_grammar.md | 4 +- docs/en_us/condition/system/time.md | 2 +- docs/en_us/configuration/bfe.conf.md | 6 +- .../cluster_conf/cluster_table.data.md | 2 +- .../server_data_conf/cluster_conf.data.md | 2 +- docs/en_us/example/redirect.md | 2 +- .../modules/mod_wasmplugin/mod_wasmplugin.md | 89 ++++ docs/en_us/operation/api.md | 2 +- docs/en_us/operation/command.md | 2 +- docs/mkdocs_en.yml | 4 +- docs/mkdocs_zh.yml | 2 + docs/zh_cn/DOWNLOAD.md | 22 + docs/zh_cn/SUMMARY.md | 1 + docs/zh_cn/configuration/bfe.conf.md | 2 +- .../modules/mod_wasmplugin/mod_wasmplugin.md | 88 ++++ go.mod | 41 +- go.sum | 92 ++-- 68 files changed, 2102 insertions(+), 473 deletions(-) delete mode 100644 .markdownlint.yml delete mode 100644 bfe_module/bfe_plugin.go create mode 100644 bfe_modules/mod_wasmplugin/conf_mod_wasmplugin.go create mode 100644 bfe_modules/mod_wasmplugin/mod_wasmplugin.go create mode 100644 bfe_modules/mod_wasmplugin/plugin_rule_load.go create mode 100644 bfe_modules/mod_wasmplugin/plugin_table.go create mode 100644 bfe_wasmplugin/abi/proxywasm010/factory.go create mode 100644 bfe_wasmplugin/abi/proxywasm010/imports.go create mode 100644 bfe_wasmplugin/abi/proxywasm010/shim.go create mode 100644 bfe_wasmplugin/abi/registry.go create mode 100644 bfe_wasmplugin/adapter.go rename bfe_module/bfe_plugin_info.go => bfe_wasmplugin/engine.go (62%) create mode 100644 bfe_wasmplugin/filter.go create mode 100644 bfe_wasmplugin/plugin.go create mode 100644 conf/mod_wasm/mod_wasm.conf create mode 100644 conf/mod_wasm/mod_wasm.data create mode 100644 conf/wasm_plugin/headers/headers.conf create mode 100644 conf/wasm_plugin/headers/headers.md5 create mode 100755 conf/wasm_plugin/headers/headers.wasm create mode 100644 docs/en_us/modules/mod_wasmplugin/mod_wasmplugin.md create mode 100644 docs/zh_cn/modules/mod_wasmplugin/mod_wasmplugin.md diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2acbdf6f9..caf20fd68 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -56,7 +56,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v2 with: - go-version: 1.17 + go-version: 1.21 # Build - name: Build @@ -75,8 +75,8 @@ jobs: - name: setup Python uses: actions/setup-python@v2 with: - python-version: '2.x' # Version range or exact version of a Python version to use, using SemVer's version range syntax - - run: python -m SimpleHTTPServer 8181& + python-version: '3.x' # Version range or exact version of a Python version to use, using SemVer's version range syntax + - run: python3 -m http.server 8181& # Modify Conf and Run - name: Run diff --git a/.gitignore b/.gitignore index 0482ed5f9..02a57e664 100644 --- a/.gitignore +++ b/.gitignore @@ -27,5 +27,6 @@ coverage.txt .vscode/* bfe dist/* +conf/wasm_plugin .DS_Store diff --git a/.markdownlint.yml b/.markdownlint.yml deleted file mode 100644 index ff38591a3..000000000 --- a/.markdownlint.yml +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright 2022 The BFE Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# rules from https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md -MD001: false -MD004: false -MD005: false -MD006: false -MD007: false -MD010: false -MD013: false -MD014: false -MD024: false -MD026: false -MD029: false -MD033: false -MD034: false -MD036: false -MD040: false -MD041: false -MD046: false diff --git a/ADOPTERS.md b/ADOPTERS.md index 8b8173dd6..ba018eb90 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -14,6 +14,8 @@ Some of our users include: * [Haier](https://www.haier.com) +* [PITS Global Data Recovery Services](https://pitsdatarecovery.net/) + * [Postal Savings Bank of China](https://www.psbc.com) * [Resolink](https://www.crresolink.com.cn) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b29e7f9f..647c35ba3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,46 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [v1.7.0] - 2025-01-19 + +### Added + +- Support building docker images for multiple architectures +- Support WASM to allow dynamic plugin + +### Fixed + +- Upgrade versions of some third-paty modules for security reasons +- Fix format issue in bfe_http/request_test.go +- Temporarily remove some test cases using legacy test data +- mod_tcp_keepalive: fix broken unit tests +- http2: close connections when receiving too many headers +- Fix readloop goroutine leak + +### Removed + +- The previous experimental dynamic plugin is deprecated + +## [v1.6.0] - 2022-10-21 + +### Added + +- Allow user to disable monitor port ([Issue #936](https://github.com/bfenetworks/bfe/issues/936)) +- Support HTTP2 fingerprint ([Issue #1071](https://github.com/bfenetworks/bfe/issues/1071)) +- Documents optimization + +### Changed + +- Optimize idle connection handling ([Pull #1044](https://github.com/bfenetworks/bfe/pull/1044)) +- Performance optimize in smooth least connection balancing algorithm([Pull #1062](https://github.com/bfenetworks/bfe/pull/1062)) +- Miscellaneous golang dependency updates +- Miscellaneous improvements in makefile and other CI tools + +### Fixed + +- mod_trust_clientip: fix incorrect private IP address range ([Issue #856](https://github.com/bfenetworks/bfe/issues/856)) +- arm build error in golang 1.18 + ## [v1.6.0] - 2022-10-21 ### Added diff --git a/Dockerfile b/Dockerfile index 19f50ddd8..b110cbcbb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,11 +12,13 @@ # See the License for the specific language governing permissions and # limitations under the License. # -FROM golang:1.17.5-alpine3.15 AS build +FROM --platform=${BUILDPLATFORM} golang:1.17.5-alpine3.15 AS build +ARG TARGETARCH +ARG TARGETOS WORKDIR /bfe COPY . . -RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-X main.version=`cat VERSION`" +RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -ldflags "-X main.version=`cat VERSION`" FROM alpine:3.15 AS run RUN apk update && apk add --no-cache ca-certificates diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 2351b9460..ddbda241e 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -6,21 +6,25 @@ This file lists who are the maintainers of the BFE project. The responsibilities | Name | GitHub ID | Affiliation | | ---- | --------- | ----------- | -| [Miao Zhang](mailto:zhangmiao02@baidu.com) | [mileszhang2016](https://github.com/mileszhang2016) | Baidu | -| [Sijie Yang](mailto:iyangsj@gmail.com) | [iyangsj](https://github.com/iyangsj) | Baidu | +| [Miao Zhang](mailto:zhangmiao@yf-networks.com) | [mileszhang2016](https://github.com/mileszhang2016) | Yingfei Networks | +| [Sijie Yang](mailto:iyangsj@gmail.com) | [iyangsj](https://github.com/iyangsj) | Tencent | ## Senior Maintainers | Name | GitHub ID | Affiliation | | ---- | --------- | ----------- | -| [Sijie Yang](mailto:iyangsj@gmail.com) | [iyangsj](https://github.com/iyangsj) | Baidu | +| [Sijie Yang](mailto:iyangsj@gmail.com) | [iyangsj](https://github.com/iyangsj) | Tencent | ## Maintainers | Name | GitHub ID | Affiliation | | ---- | --------- | ----------- | | [Derek Zheng](mailto:shanhu5739@gmail.com) | [shanhuhai5739](https://github.com/shanhuhai5739) | Kuaishou | -| [Xiaofei Yu](mailto:nemo_00o@hotmail.com) | [xiaofei0800](https://github.com/xiaofei0800) | Baidu | +| [Xiaofei Yu](mailto:nemo_00o@hotmail.com) | [xiaofei0800](https://github.com/xiaofei0800) | Tencent | | [Wensi Yang](mailto:tianxinheihei@gmail.com) | [tianxinheihei](https://github.com/tianxinheihei) | ByteDance | | [Kaiyu Zheng](mailto:412674752@qq.com) | [kaiyuzheng](https://github.com/kaiyuzheng) | ByteDance | -| [Yuqi Xiao](mailto:xiao19910705@163.com) | [Yuqi Xiao](https://github.com/YuqiXiao) | Baidu | +| [Yuqi Xiao](mailto:xiao19910705@163.com) | [YuqiXiao](https://github.com/YuqiXiao) | ByteDance | +| [Wei Wei](mailto:ww990114@gmail.com) | [weiwei99](https://github.com/weiwei99) | Baidu | +| [Andy Liang](mailto:lianglei@yf-networks.com) | [andyxmu](https://github.com/andyxmu) | Yingfei Networks | +| [Leiming Xu](mailto:xuleiming@yf-networks.com) | [xuleiming](https://github.com/xuleiming) | Yingfei Networks | +| [Jian Song](mailto:songjian@yf-networks.com) | [clarinette9](https://github.com/clarinette9) | Yingfei Networks | diff --git a/Makefile b/Makefile index ddb73b5d2..4c7ec07b4 100644 --- a/Makefile +++ b/Makefile @@ -74,7 +74,7 @@ strip: prepare compile-strip package # make prepare, download dependencies prepare: prepare-dep prepare-gen prepare-dep: - $(call INSTALL_PKG, goyacc, golang.org/x/tools/cmd/goyacc) + $(call INSTALL_PKG, goyacc, golang.org/x/tools/cmd/goyacc@latest) prepare-gen: cd "bfe_basic/condition/parser" && $(GOGEN) @@ -117,7 +117,7 @@ package: # make deps deps: $(call PIP_INSTALL_PKG, pre-commit) - $(call INSTALL_PKG, goyacc, golang.org/x/tools/cmd/goyacc) + $(call INSTALL_PKG, goyacc, golang.org/x/tools/cmd/goyacc@latest) $(call INSTALL_PKG, staticcheck, honnef.co/go/tools/cmd/staticcheck) $(call INSTALL_PKG, license-eye, github.com/apache/skywalking-eyes/cmd/license-eye@latest) diff --git a/README.md b/README.md index ba34f0284..abeb155d6 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,13 @@ Besides, we also implement [BFE Ingress Controller](https://github.com/bfenetwor - [English version](https://www.bfe-networks.net/en_us/ABOUT/) - [Chinese version](https://www.bfe-networks.net/zh_cn/ABOUT/) +## Book + +- [In-depth Understanding of BFE](https://github.com/baidu/bfe-book) (Released in Feb 2023) + + This book focuses on BFE open source project, introduces the relevant technical principles of network access, explains the design idea of BFE open source software, and how to build a network front-end platform based on BFE open source software. Readers with development capabilities can also develop BFE extension modules according to their own needs or contribute code to BFE open source projects according to the instructions in this book. + + ## Contributing - Please create an issue in [issue list](http://github.com/bfenetworks/bfe/issues). diff --git a/VERSION b/VERSION index dc1e644a1..9dbb0c005 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.6.0 +1.7.0 \ No newline at end of file diff --git a/bfe.go b/bfe.go index cd7c6caf4..6c40ef162 100644 --- a/bfe.go +++ b/bfe.go @@ -43,6 +43,7 @@ var ( showVersion = flag.Bool("v", false, "to show version of bfe") showVerbose = flag.Bool("V", false, "to show verbose information about bfe") debugLog = flag.Bool("d", false, "to show debug log (otherwise >= info)") + testConf = flag.Bool("t", false, "test configuration and exit") ) var version string @@ -74,7 +75,12 @@ func main() { logSwitch = "DEBUG" bfe_debug.DebugIsOpen = true } else { - logSwitch = "INFO" + // ignore under ERROR level + if *testConf { + logSwitch = "ERROR" + } else { + logSwitch = "INFO" + } bfe_debug.DebugIsOpen = false } @@ -84,7 +90,7 @@ func main() { log4go.SetLogFormat(log4go.FORMAT_DEFAULT_WITH_PID) log4go.SetSrcLineForBinLog(false) - err = log.Init("bfe", logSwitch, *logPath, *stdOut, "midnight", 7) + err = log.Init("bfe", logSwitch, *logPath, *stdOut || *testConf, "midnight", 7) if err != nil { fmt.Printf("bfe: err in log.Init():%s\n", err.Error()) bfe_util.AbnormalExit() @@ -97,10 +103,13 @@ func main() { config, err = bfe_conf.BfeConfigLoad(confPath, *confRoot) if err != nil { log.Logger.Error("main(): in BfeConfigLoad():%s", err.Error()) + if *testConf { + fmt.Printf("bfe: configuration file %s test failed\n", confPath) + } bfe_util.AbnormalExit() } - // maximum number of CPUs (GOMAXPROCS) defaults to runtime.CPUNUM + // maximum number of CPUs (GOMAXPROCS) defaults to runtime.CPUNUM // if running on machine, or CPU quota if running on container // (with the help of "go.uber.org/automaxprocs"). // here, we change maximum number of cpus if the MaxCpus is positive. @@ -112,11 +121,22 @@ func main() { bfe_debug.SetDebugFlag(config.Server) // start and serve - if err = bfe_server.StartUp(config, version, *confRoot); err != nil { + if err = bfe_server.StartUp(config, version, *confRoot, *testConf); err != nil { log.Logger.Error("main(): bfe_server.StartUp(): %s", err.Error()) } // waiting for logger finish jobs time.Sleep(1 * time.Second) log.Logger.Close() + + // output final configuration test result + if *testConf { + if err != nil { + fmt.Printf("bfe: configuration file %s test failed\n", confPath) + bfe_util.AbnormalExit() + } else { + fmt.Printf("bfe: configuration file %s test is successful\n", confPath) + bfe_util.NormalExit() + } + } } diff --git a/bfe_basic/condition/parser/y.go b/bfe_basic/condition/parser/y.go index 45e318c00..90506265f 100644 --- a/bfe_basic/condition/parser/y.go +++ b/bfe_basic/condition/parser/y.go @@ -119,7 +119,7 @@ func (x *condLex) Error(s string) { } //line yacctab:1 -var condExca = [...]int{ +var condExca = [...]int8{ -1, 1, 1, -1, -2, 0, @@ -129,54 +129,54 @@ const condPrivate = 57344 const condLast = 23 -var condAct = [...]int{ +var condAct = [...]int8{ 18, 20, 16, 2, 19, 17, 11, 9, 10, 8, 6, 12, 13, 3, 15, 4, 7, 8, 5, 14, 7, 8, 1, } -var condPact = [...]int{ +var condPact = [...]int16{ 6, -1000, 15, 6, 6, -1000, -1, 6, 6, 11, -1000, -6, 3, -1000, -1000, -8, -1000, -1000, -1000, -10, -1000, } -var condPgo = [...]int{ +var condPgo = [...]int8{ 0, 22, 3, 18, 14, } -var condR1 = [...]int{ +var condR1 = [...]int8{ 0, 1, 2, 2, 2, 2, 2, 2, 3, 3, 4, 4, } -var condR2 = [...]int{ +var condR2 = [...]int8{ 0, 1, 3, 3, 3, 2, 1, 1, 4, 3, 1, 3, } -var condChk = [...]int{ +var condChk = [...]int16{ -1000, -1, -2, 7, 9, -3, 4, 5, 6, -2, -2, 7, -2, -2, 8, -4, 8, 11, 8, 12, 11, } -var condDef = [...]int{ +var condDef = [...]int8{ 0, -2, 1, 0, 0, 6, 7, 0, 0, 0, 5, 0, 3, 4, 2, 0, 9, 10, 8, 0, 11, } -var condTok1 = [...]int{ +var condTok1 = [...]int8{ 1, } -var condTok2 = [...]int{ +var condTok2 = [...]int8{ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, } -var condTok3 = [...]int{ +var condTok3 = [...]int8{ 0, } @@ -258,9 +258,9 @@ func condErrorMessage(state, lookAhead int) string { expected := make([]int, 0, 4) // Look for shiftable tokens. - base := condPact[state] + base := int(condPact[state]) for tok := TOKSTART; tok-1 < len(condToknames); tok++ { - if n := base + tok; n >= 0 && n < condLast && condChk[condAct[n]] == tok { + if n := base + tok; n >= 0 && n < condLast && int(condChk[int(condAct[n])]) == tok { if len(expected) == cap(expected) { return res } @@ -270,13 +270,13 @@ func condErrorMessage(state, lookAhead int) string { if condDef[state] == -2 { i := 0 - for condExca[i] != -1 || condExca[i+1] != state { + for condExca[i] != -1 || int(condExca[i+1]) != state { i += 2 } // Look for tokens that we accept or reduce. for i += 2; condExca[i] >= 0; i += 2 { - tok := condExca[i] + tok := int(condExca[i]) if tok < TOKSTART || condExca[i+1] == 0 { continue } @@ -307,30 +307,30 @@ func condlex1(lex condLexer, lval *condSymType) (char, token int) { token = 0 char = lex.Lex(lval) if char <= 0 { - token = condTok1[0] + token = int(condTok1[0]) goto out } if char < len(condTok1) { - token = condTok1[char] + token = int(condTok1[char]) goto out } if char >= condPrivate { if char < condPrivate+len(condTok2) { - token = condTok2[char-condPrivate] + token = int(condTok2[char-condPrivate]) goto out } } for i := 0; i < len(condTok3); i += 2 { - token = condTok3[i+0] + token = int(condTok3[i+0]) if token == char { - token = condTok3[i+1] + token = int(condTok3[i+1]) goto out } } out: if token == 0 { - token = condTok2[1] /* unknown char */ + token = int(condTok2[1]) /* unknown char */ } if condDebug >= 3 { __yyfmt__.Printf("lex %s(%d)\n", condTokname(token), uint(char)) @@ -385,7 +385,7 @@ condstack: condS[condp].yys = condstate condnewstate: - condn = condPact[condstate] + condn = int(condPact[condstate]) if condn <= condFlag { goto conddefault /* simple state */ } @@ -396,8 +396,8 @@ condnewstate: if condn < 0 || condn >= condLast { goto conddefault } - condn = condAct[condn] - if condChk[condn] == condtoken { /* valid shift */ + condn = int(condAct[condn]) + if int(condChk[condn]) == condtoken { /* valid shift */ condrcvr.char = -1 condtoken = -1 condVAL = condrcvr.lval @@ -410,7 +410,7 @@ condnewstate: conddefault: /* default state action */ - condn = condDef[condstate] + condn = int(condDef[condstate]) if condn == -2 { if condrcvr.char < 0 { condrcvr.char, condtoken = condlex1(condlex, &condrcvr.lval) @@ -419,18 +419,18 @@ conddefault: /* look through exception table */ xi := 0 for { - if condExca[xi+0] == -1 && condExca[xi+1] == condstate { + if condExca[xi+0] == -1 && int(condExca[xi+1]) == condstate { break } xi += 2 } for xi += 2; ; xi += 2 { - condn = condExca[xi+0] + condn = int(condExca[xi+0]) if condn < 0 || condn == condtoken { break } } - condn = condExca[xi+1] + condn = int(condExca[xi+1]) if condn < 0 { goto ret0 } @@ -452,10 +452,10 @@ conddefault: /* find a state where "error" is a legal shift action */ for condp >= 0 { - condn = condPact[condS[condp].yys] + condErrCode + condn = int(condPact[condS[condp].yys]) + condErrCode if condn >= 0 && condn < condLast { - condstate = condAct[condn] /* simulate a shift of "error" */ - if condChk[condstate] == condErrCode { + condstate = int(condAct[condn]) /* simulate a shift of "error" */ + if int(condChk[condstate]) == condErrCode { goto condstack } } @@ -491,7 +491,7 @@ conddefault: condpt := condp _ = condpt // guard against "declared and not used" - condp -= condR2[condn] + condp -= int(condR2[condn]) // condp is now the index of $0. Perform the default action. Iff the // reduced production is ε, $1 is possibly out of range. if condp+1 >= len(condS) { @@ -502,16 +502,16 @@ conddefault: condVAL = condS[condp+1] /* consult goto table to find next state */ - condn = condR1[condn] - condg := condPgo[condn] + condn = int(condR1[condn]) + condg := int(condPgo[condn]) condj := condg + condS[condp].yys + 1 if condj >= condLast { - condstate = condAct[condg] + condstate = int(condAct[condg]) } else { - condstate = condAct[condj] - if condChk[condstate] != -condn { - condstate = condAct[condg] + condstate = int(condAct[condj]) + if int(condChk[condstate]) != -condn { + condstate = int(condAct[condg]) } } // dummy call; replaced with literal code diff --git a/bfe_config/bfe_conf/conf_basic.go b/bfe_config/bfe_conf/conf_basic.go index 51a81daa1..04bc39bcf 100644 --- a/bfe_config/bfe_conf/conf_basic.go +++ b/bfe_config/bfe_conf/conf_basic.go @@ -16,7 +16,6 @@ package bfe_conf import ( "fmt" - "strings" ) import ( @@ -32,11 +31,6 @@ const ( BalancerNone = "NONE" // layer4 balancer not used ) -const ( - // LibrarySuffix defines BFE plugin's file suffix. - LibrarySuffix = ".so" -) - type ConfigBasic struct { HttpPort int // listen port for http HttpsPort int // listen port for https @@ -59,7 +53,6 @@ type ConfigBasic struct { KeepAliveEnabled bool // if false, client connection is shutdown disregard of http headers Modules []string // modules to load - Plugins []string // plugins to load // location of data files for bfe_route HostRuleConf string // path of host_rule.data @@ -217,11 +210,6 @@ func basicConfCheck(cfg *ConfigBasic) error { return fmt.Errorf("MaxHeaderHeaderBytes[%d] should > 0", cfg.MaxHeaderBytes) } - // check Plugins - if err := checkPlugins(cfg); err != nil { - return fmt.Errorf("plugins[%v] check failed. err: %s", cfg.Plugins, err.Error()) - } - return nil } @@ -240,24 +228,6 @@ func checkLayer4LoadBalancer(cfg *ConfigBasic) error { } } -func checkPlugins(cfg *ConfigBasic) error { - plugins := []string{} - for _, pluginPath := range cfg.Plugins { - pluginPath = strings.TrimSpace(pluginPath) - if pluginPath == "" { - continue - } - - if !strings.HasSuffix(pluginPath, LibrarySuffix) { - pluginPath += LibrarySuffix - } - plugins = append(plugins, pluginPath) - } - cfg.Plugins = plugins - - return nil -} - func dataFileConfCheck(cfg *ConfigBasic, confRoot string) error { // check HostRuleConf if cfg.HostRuleConf == "" { diff --git a/bfe_config/bfe_conf/testdata/conf_https_basic/bfe_4.conf b/bfe_config/bfe_conf/testdata/conf_https_basic/bfe_4.conf index 79e28821f..935aa8a77 100644 --- a/bfe_config/bfe_conf/testdata/conf_https_basic/bfe_4.conf +++ b/bfe_config/bfe_conf/testdata/conf_https_basic/bfe_4.conf @@ -58,7 +58,7 @@ cipherSuites=TLS_RSA_WITH_AES_256_CBC_SHA cipherSuites=TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA cipherSuites=TLS_RSA_WITH_3DES_EDE_CBC_SHA -# supported curve perference settings +# supported curve preference settings # support curves: CurveP256, CurveP384, CurveP521 curvePreferences=CurveP256 diff --git a/bfe_http/request_test.go b/bfe_http/request_test.go index 76bb138cb..8548707e0 100644 --- a/bfe_http/request_test.go +++ b/bfe_http/request_test.go @@ -30,9 +30,7 @@ import ( "reflect" "strings" "testing" -) -import ( "github.com/bfenetworks/bfe/bfe_bufio" ) @@ -397,7 +395,7 @@ func testMissingFile(t *testing.T, req *Request) { t.Errorf("FormFile file = %v, want nil", f) } if fh != nil { - t.Errorf("FormFile file header = %q, want nil", fh) + t.Errorf("FormFile file header = %v, want nil", fh) } if err != ErrMissingFile { t.Errorf("FormFile err = %q, want ErrMissingFile", err) @@ -497,7 +495,7 @@ Content-Disposition: form-data; name="textb" ` func benchmarkReadRequest(b *testing.B, request string) { - request += "\n" // final \n + request += "\n" // final \n request = strings.ReplaceAll(request, "\n", "\r\n") // expand \n to \r\n b.SetBytes(int64(len(request))) r := bfe_bufio.NewReader(&infiniteReader{buf: []byte(request)}) diff --git a/bfe_http/transport.go b/bfe_http/transport.go index a322338af..90bd9b197 100644 --- a/bfe_http/transport.go +++ b/bfe_http/transport.go @@ -885,6 +885,10 @@ func (pc *persistConn) readLoop() { err = ReadRespHeaderError{Err: err} } + pc.lk.Lock() + pc.numExpectedResponses-- + pc.lk.Unlock() + rc.ch <- responseAndError{resp, err} // Wait for the just-returned response body to be fully consumed @@ -1051,10 +1055,6 @@ WaitResponse: } } - pc.lk.Lock() - pc.numExpectedResponses-- - pc.lk.Unlock() - if re.err != nil { pc.t.setReqConn(req.Request, nil) } diff --git a/bfe_http2/frame.go b/bfe_http2/frame.go index 33394e66f..d5174b779 100644 --- a/bfe_http2/frame.go +++ b/bfe_http2/frame.go @@ -1504,6 +1504,7 @@ func (fr *Framer) readMetaFrame(f *HeadersFrame) (*MetaHeadersFrame, error) { hdec.SetEmitEnabled(false) mh.Truncated = true state.H2ErrMaxHeaderListSize.Inc(1) + remainSize = 0 return maxHeaderListSizeError{ streamID: f.FrameHeader.StreamID, curHeaderListSize: fr.maxHeaderListSize() - remainSize + size, @@ -1525,6 +1526,35 @@ func (fr *Framer) readMetaFrame(f *HeadersFrame) (*MetaHeadersFrame, error) { var err error for { frag := hc.HeaderBlockFragment() + + // Avoid parsing large amounts of headers that we will then discard. + // If the sender exceeds the max header list size by too much, + // skip parsing the fragment and close the connection. + // + // "Too much" is either any CONTINUATION frame after we've already + // exceeded the max header list size (in which case remainSize is 0), + // or a frame whose encoded size is more than twice the remaining + // header list bytes we're willing to accept. + if int64(len(frag)) > int64(2*remainSize) { + if VerboseLogs { + log.Printf("http2: header list too large") + } + // It would be nice to send a RST_STREAM before sending the GOAWAY, + // but the structure of the server's frame writer makes this difficult. + return nil, ConnectionError{ErrCodeProtocol, "http2: header list too large"} + } + + // Also close the connection after any CONTINUATION frame following an + // invalid header, since we stop tracking the size of the headers after + // an invalid one. + if invalid != nil { + if VerboseLogs { + log.Printf("http2: invalid header: %v", invalid) + } + // It would be nice to send a RST_STREAM before sending the GOAWAY, + // but the structure of the server's frame writer makes this difficult. + return nil, ConnectionError{ErrCodeProtocol, fmt.Sprintf("http2: invalid header: %v", invalid)} + } blockSize += len(frag) if _, err = hdec.Write(frag); err != nil { // do not return ConnectionError err type, diff --git a/bfe_http2/frame_test.go b/bfe_http2/frame_test.go index 04d20ed7e..e6b2d5767 100644 --- a/bfe_http2/frame_test.go +++ b/bfe_http2/frame_test.go @@ -931,7 +931,7 @@ func TestMetaFrameHeader(t *testing.T) { maxHeaderListSize: (1 << 10) / 2, want: maxHeaderListSizeError{ streamID: 1, - curHeaderListSize: 536, + curHeaderListSize: 550, maxHeaderListSize: 512, }, }, @@ -1033,7 +1033,7 @@ func TestMetaFrameHeader(t *testing.T) { } return fmt.Sprintf("value %#v", v) } - t.Errorf("%s:\n got: %v\nwant: %s", name, str(got), str(tt.want)) + t.Errorf(" %s:\n got: %v\nwant: %s", name, str(got), str(tt.want)) } if tt.wantErrReason != "" && tt.wantErrReason != fmt.Sprint(f.errDetail) { t.Errorf("%s: got error reason %q; want %q", name, f.errDetail, tt.wantErrReason) diff --git a/bfe_http2/server.go b/bfe_http2/server.go index a189cacce..1576c3bb1 100644 --- a/bfe_http2/server.go +++ b/bfe_http2/server.go @@ -34,16 +34,13 @@ import ( "strings" "sync" "time" -) -import ( "github.com/baidu/go-lib/gotrack" "github.com/baidu/go-lib/log" -) -import ( http "github.com/bfenetworks/bfe/bfe_http" "github.com/bfenetworks/bfe/bfe_http2/hpack" + tls "github.com/bfenetworks/bfe/bfe_tls" "github.com/bfenetworks/bfe/bfe_util/pipe" ) @@ -890,7 +887,7 @@ func (sc *serverConn) serve() { if !sc.processFrameFromReader(res) { return } - // collect HTTP/2 fingerprint infomation. + // collect HTTP/2 fingerprint information. sc.fingerprint.ProcessFrame(res) res.readMore() if settingsTimer.C != nil { diff --git a/bfe_module/bfe_plugin.go b/bfe_module/bfe_plugin.go deleted file mode 100644 index 0f760616d..000000000 --- a/bfe_module/bfe_plugin.go +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright (c) 2019 The BFE Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package bfe_module - -import ( - "fmt" - goplugin "plugin" -) - -import ( - "github.com/baidu/go-lib/log" - "github.com/baidu/go-lib/web-monitor/web_monitor" -) - -import ( - "github.com/bfenetworks/bfe/bfe_util/semver" -) - -type BfePlugins struct { - workPlugins map[string]*PluginInfo // work plugins, configure in bfe conf file -} - -// NewBfePlugins create new Plugins -func NewBfePlugins() *BfePlugins { - pl := new(BfePlugins) - pl.workPlugins = make(map[string]*PluginInfo) - - return pl -} - -// RegisterPlugin loads a plugin created with `go build -buildmode=plugin` -func (p *BfePlugins) RegisterPlugin(path string, bfeVersion string) error { - plugin, err := goplugin.Open(path) - if err != nil { - return fmt.Errorf("RegisterPlugin Open plugin path %v err:%v", path, err) - } - - nameSym, err := plugin.Lookup("Name") - if err != nil { - return fmt.Errorf("RegisterPlugin Lookup Name err:%v", err) - } - - versionSym, err := plugin.Lookup("Version") - if err != nil { - return fmt.Errorf("RegisterPlugin Lookup Version err:%v", err) - } - - initSym, err := plugin.Lookup("Init") - if err != nil { - return fmt.Errorf("RegisterPlugin Lookup Init err:%v", err) - } - - version := *versionSym.(*string) - - // Compare versions bfe major version and plugin major version - bfeVer, err := semver.New(bfeVersion) - if err != nil { - return fmt.Errorf("RegisterPlugin bfe version err:%v", err) - } - pluginVer, err := semver.New(version) - if err != nil { - return fmt.Errorf("RegisterPlugin plugin version err:%v", err) - } - if bfeVer.CompareMajor(pluginVer) != 0 { - return fmt.Errorf("RegisterPlugin Major version not match, bfe:%s, plugin:%s", bfeVersion, version) - } - - pluginInfo := &PluginInfo{ - Name: *nameSym.(*string), - Version: version, - Path: path, - Init: initSym.(func(cbs *BfeCallbacks, whs *web_monitor.WebHandlers, cr string) error), - } - p.workPlugins[pluginInfo.Name] = pluginInfo - - return nil -} - -// Init initializes bfe plugins. -// -// Params: -// - cbs: BfeCallbacks -// - whs: WebHandlers -// - cr : root path for config -func (p *BfePlugins) Init(cbs *BfeCallbacks, whs *web_monitor.WebHandlers, cr string) error { - for _, pl := range p.workPlugins { - if err := pl.Init(cbs, whs, cr); err != nil { - log.Logger.Error("Err in plugin.init() for %s [%s]", - pl.Name, err.Error()) - return err - } - - log.Logger.Info("%s:Init() Version:%s OK", pl.Name, pl.Version) - } - - return nil -} diff --git a/bfe_modules/bfe_modules.go b/bfe_modules/bfe_modules.go index 326a9830a..56017ca5f 100644 --- a/bfe_modules/bfe_modules.go +++ b/bfe_modules/bfe_modules.go @@ -44,6 +44,7 @@ import ( "github.com/bfenetworks/bfe/bfe_modules/mod_trust_clientip" "github.com/bfenetworks/bfe/bfe_modules/mod_userid" "github.com/bfenetworks/bfe/bfe_modules/mod_waf" + "github.com/bfenetworks/bfe/bfe_modules/mod_wasmplugin" ) // list of all modules, the order is very important @@ -131,6 +132,9 @@ var moduleList = []bfe_module.BfeModule{ // mod_access mod_access.NewModuleAccess(), + + // mod_wasm + mod_wasmplugin.NewModuleWasm(), } // init modules list diff --git a/bfe_modules/mod_auth_jwt/auth_jwt_rule_load.go b/bfe_modules/mod_auth_jwt/auth_jwt_rule_load.go index 5789c1ef9..ec21387a0 100644 --- a/bfe_modules/mod_auth_jwt/auth_jwt_rule_load.go +++ b/bfe_modules/mod_auth_jwt/auth_jwt_rule_load.go @@ -22,7 +22,7 @@ import ( import ( "github.com/golang-jwt/jwt" - jose "gopkg.in/square/go-jose.v2" + jose "github.com/go-jose/go-jose/v4" ) import ( diff --git a/bfe_modules/mod_tcp_keepalive/mod_tcp_keepalive_test.go b/bfe_modules/mod_tcp_keepalive/mod_tcp_keepalive_test.go index d443173d3..3de3321a1 100644 --- a/bfe_modules/mod_tcp_keepalive/mod_tcp_keepalive_test.go +++ b/bfe_modules/mod_tcp_keepalive/mod_tcp_keepalive_test.go @@ -15,7 +15,6 @@ package mod_tcp_keepalive import ( - "net" "testing" "github.com/baidu/go-lib/web-monitor/web_monitor" @@ -38,40 +37,6 @@ func prepareRequest() *bfe_basic.Request { return request } -func TestSetKeepAlive(t *testing.T) { - m, err := prepareModule() - if err != nil { - t.Errorf("prepareModule() error: %v", err) - return - } - s := new(bfe_basic.Session) - ip := "180.97.93.196" - address := "180.97.93.196:80" - - s.Product = "product1" - s.Vip = net.ParseIP(ip) - if s.Vip == nil { - t.Errorf("net.ParseIP(%s) == nil", ip) - } - - conn, err := net.Dial("tcp", address) - if err != nil { - t.Errorf("net.Dial(tcp, %s) error: %v", address, err) - return - } - s.Connection = conn - - m.HandleAccept(s) - metrics := m.metrics.GetAll() - if metrics.CounterData["CONN_TO_SET"] != 1 || - metrics.CounterData["CONN_SET_KEEP_IDLE"] != 1 || - metrics.CounterData["CONN_SET_KEEP_INTVL"] != 1 { - - t.Errorf("CONN_TO_SET and CONN_SET_KEEP_IDLE and CONN_SET_KEEP_INTVL should be 1") - return - } -} - func TestModuleMisc(t *testing.T) { m, err := prepareModule() if err != nil { diff --git a/bfe_modules/mod_wasmplugin/conf_mod_wasmplugin.go b/bfe_modules/mod_wasmplugin/conf_mod_wasmplugin.go new file mode 100644 index 000000000..8aa498529 --- /dev/null +++ b/bfe_modules/mod_wasmplugin/conf_mod_wasmplugin.go @@ -0,0 +1,68 @@ +// Copyright (c) 2024 The BFE Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mod_wasmplugin + +import ( + "github.com/baidu/go-lib/log" + "github.com/bfenetworks/bfe/bfe_util" + gcfg "gopkg.in/gcfg.v1" +) + +type ConfModWasm struct { + Basic struct { + WasmPluginPath string // path of Wasm plugins + DataPath string // path of config data + } + + Log struct { + OpenDebug bool + } +} + +// ConfLoad loads config from config file +func ConfLoad(filePath string, confRoot string) (*ConfModWasm, error) { + var cfg ConfModWasm + var err error + + // read config from file + err = gcfg.ReadFileInto(&cfg, filePath) + if err != nil { + return &cfg, err + } + + // check conf of mod_redirect + err = cfg.Check(confRoot) + if err != nil { + return &cfg, err + } + + return &cfg, nil +} + +func (cfg *ConfModWasm) Check(confRoot string) error { + if cfg.Basic.WasmPluginPath == "" { + log.Logger.Warn("ModWasm.WasmPluginPath not set, use default value") + cfg.Basic.WasmPluginPath = "mod_wasm" + } + cfg.Basic.WasmPluginPath = bfe_util.ConfPathProc(cfg.Basic.WasmPluginPath, confRoot) + + if cfg.Basic.DataPath == "" { + log.Logger.Warn("ModWasm.DataPath not set, use default value") + cfg.Basic.WasmPluginPath = "mod_wasm/wasm.data" + } + cfg.Basic.DataPath = bfe_util.ConfPathProc(cfg.Basic.DataPath, confRoot) + + return nil +} diff --git a/bfe_modules/mod_wasmplugin/mod_wasmplugin.go b/bfe_modules/mod_wasmplugin/mod_wasmplugin.go new file mode 100644 index 000000000..ecd46dd09 --- /dev/null +++ b/bfe_modules/mod_wasmplugin/mod_wasmplugin.go @@ -0,0 +1,224 @@ +// Copyright (c) 2024 The BFE Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mod_wasmplugin + +import ( + "fmt" + "net/url" + + _ "github.com/baidu/go-lib/log" + "github.com/baidu/go-lib/web-monitor/web_monitor" + "github.com/bfenetworks/bfe/bfe_basic" + "github.com/bfenetworks/bfe/bfe_http" + "github.com/bfenetworks/bfe/bfe_module" + "github.com/bfenetworks/bfe/bfe_wasmplugin" +) + +const ( + ModWasm = "mod_wasm" + ModWasmBeforeLocationKey = "mod_wasm_before_location_key" +) + +var ( + openDebug = false +) + +type ModuleWasm struct { + name string + wasmPluginPath string // path of Wasm plugins + configPath string // path of config file + pluginTable *PluginTable +} + +func NewModuleWasm() *ModuleWasm { + m := new(ModuleWasm) + m.name = ModWasm + m.pluginTable = NewPluginTable() + return m +} + +func (m *ModuleWasm) Name() string { + return m.name +} + +func (m *ModuleWasm) loadConfData(query url.Values) error { + path := query.Get("path") + if path == "" { + path = m.configPath + } + + // load from config file + conf, err := pluginConfLoad(path) + + if err != nil { + return fmt.Errorf("err in pluginConfLoad(%s):%s", path, err.Error()) + } + + // update to plugin table + return updatePluginConf(m.pluginTable, conf, m.wasmPluginPath) +} + +func (m *ModuleWasm) Init(cbs *bfe_module.BfeCallbacks, whs *web_monitor.WebHandlers, + cr string) error { + var err error + var conf *ConfModWasm + + confPath := bfe_module.ModConfPath(cr, m.name) + if conf, err = ConfLoad(confPath, cr); err != nil { + return fmt.Errorf("%s: cond load err %s", m.name, err.Error()) + } + + // init wasm engine + + return m.init(conf, cbs, whs) +} + +func (m *ModuleWasm) init(cfg *ConfModWasm, cbs *bfe_module.BfeCallbacks, + whs *web_monitor.WebHandlers) error { + openDebug = cfg.Log.OpenDebug + + m.wasmPluginPath = cfg.Basic.WasmPluginPath + m.configPath = cfg.Basic.DataPath + + // load plugins from WasmPluginPath + // construct plugin list + if err := m.loadConfData(nil); err != nil { + return fmt.Errorf("err in loadConfData(): %s", err.Error()) + } + + // register handler + err := cbs.AddFilter(bfe_module.HandleBeforeLocation, m.wasmBeforeLocationHandler) + if err != nil { + return fmt.Errorf("%s.Init(): AddFilter(m.wasmBeforeLocationHandler): %s", m.name, err.Error()) + } + + // register handler + err = cbs.AddFilter(bfe_module.HandleFoundProduct, m.wasmRequestHandler) + if err != nil { + return fmt.Errorf("%s.Init(): AddFilter(m.HandleFoundProduct): %s", m.name, err.Error()) + } + + // register handler + err = cbs.AddFilter(bfe_module.HandleReadResponse, m.wasmResponseHandler) + if err != nil { + return fmt.Errorf("%s.Init(): AddFilter(m.HandleReadResponse): %s", m.name, err.Error()) + } + + // register web handler for reload + err = whs.RegisterHandler(web_monitor.WebHandleReload, m.name, m.loadConfData) + if err != nil { + return fmt.Errorf("%s.Init(): RegisterHandler(m.loadConfData): %s", m.name, err.Error()) + } + + return nil +} + +// +func (m *ModuleWasm) wasmBeforeLocationHandler(request *bfe_basic.Request) (int, *bfe_http.Response) { + var pl []bfe_wasmplugin.WasmPlugin + rl := m.pluginTable.GetBeforeLocationRules() + for _, rule := range rl { + if rule.Cond.Match(request) { + // find pluginlist + pl = rule.PluginList + break + } + } + + var resp *bfe_http.Response + if pl != nil { + // do the pluginlist + retCode := bfe_module.BfeHandlerGoOn + var fl []*bfe_wasmplugin.Filter + for _, plug := range pl { + filter := bfe_wasmplugin.NewFilter(plug, request) + var ret int + ret, resp = filter.RequestHandler(request) + fl = append(fl, filter) + if ret != bfe_module.BfeHandlerGoOn { + retCode = ret + break + } + } + + request.Context[ModWasmBeforeLocationKey] = fl + return retCode, resp + } + + return bfe_module.BfeHandlerGoOn, resp +} + +// +func (m *ModuleWasm) wasmRequestHandler(request *bfe_basic.Request) (int, *bfe_http.Response) { + var pl []bfe_wasmplugin.WasmPlugin + rl, _ := m.pluginTable.Search(request.Route.Product) + for _, rule := range rl { + if rule.Cond.Match(request) { + // find pluginlist + pl = rule.PluginList + break + } + } + + var resp *bfe_http.Response + if pl != nil { + // do the pluginlist + retCode := bfe_module.BfeHandlerGoOn + var fl []*bfe_wasmplugin.Filter + for _, plug := range pl { + filter := bfe_wasmplugin.NewFilter(plug, request) + var ret int + ret, resp = filter.RequestHandler(request) + fl = append(fl, filter) + if ret != bfe_module.BfeHandlerGoOn { + retCode = ret + break + } + } + + var fl0 []*bfe_wasmplugin.Filter + val, ok := request.Context[ModWasmBeforeLocationKey] + if ok { + fl0 = val.([]*bfe_wasmplugin.Filter) + } + + fl0 = append(fl0, fl...) + request.Context[ModWasmBeforeLocationKey] = fl0 + return retCode, resp + } + + return bfe_module.BfeHandlerGoOn, resp +} + +// +func (m *ModuleWasm) wasmResponseHandler(request *bfe_basic.Request, res *bfe_http.Response) int { + val, ok := request.Context[ModWasmBeforeLocationKey] + + if ok { + fl, matched := val.([]*bfe_wasmplugin.Filter) + if !matched { + // error + return bfe_module.BfeHandlerGoOn + } + + n := len(fl) + for i := n-1; i >= 0; i-- { + fl[i].ResponseHandler(request) + fl[i].OnDestroy() + } + } + + return bfe_module.BfeHandlerGoOn +} diff --git a/bfe_modules/mod_wasmplugin/plugin_rule_load.go b/bfe_modules/mod_wasmplugin/plugin_rule_load.go new file mode 100644 index 000000000..30c36eb76 --- /dev/null +++ b/bfe_modules/mod_wasmplugin/plugin_rule_load.go @@ -0,0 +1,211 @@ +// Copyright (c) 2024 The BFE Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mod_wasmplugin + +import ( + "fmt" + "os" + "path" + + "github.com/bfenetworks/bfe/bfe_basic/condition" + "github.com/bfenetworks/bfe/bfe_util/json" + "github.com/bfenetworks/bfe/bfe_wasmplugin" +) + +type PluginConfFile struct { + Version *string // version of the config + BeforeLocationRules *[]FilterRuleFile // rule list for BeforeLocation + FoundProductRules *map[string][]FilterRuleFile // product --> rule list for FoundProduct + PluginMap *map[string]PluginMeta +} + +type FilterRuleFile struct { + Cond *string // condition for plugin + PluginList *[]string +} + +type PluginMeta struct { + Name string + WasmVersion string + ConfVersion string + InstanceNum int + Product string +} + +type FilterRule struct { + Cond condition.Condition // condition for plugin + PluginList []bfe_wasmplugin.WasmPlugin +} + +type RuleList []FilterRule +type ProductRules map[string]RuleList // product => list of filter rules + +type PluginMap map[string]bfe_wasmplugin.WasmPlugin + +func buildRuleList(rules []FilterRuleFile, pluginMap PluginMap) (RuleList, error) { + var rulelist RuleList + + for _, r := range rules { + rule := FilterRule{} + cond, err := condition.Build(*r.Cond) + if err != nil { + return nil, err + } + + rule.Cond =cond + + for _, pn := range *r.PluginList { + plug := pluginMap[pn] + if plug == nil { + return nil, fmt.Errorf("unknown plugin: %s", pn) + } + rule.PluginList = append(rule.PluginList, plug) + } + + rulelist = append(rulelist, rule) + } + + return rulelist, nil +} + +func buildNewPluginMap(conf *map[string]PluginMeta, pmOld PluginMap, + pluginPath string) (pmNew PluginMap, unchanged map[string]bool, err error) { + + pmNew = PluginMap{} + unchanged = map[string]bool{} + + if conf != nil { + for pn, p := range *conf { + plugOld := pmOld[pn] + // check whether plugin version changed. + if plugOld != nil { + configOld := plugOld.GetConfig() + if configOld.WasmVersion == p.WasmVersion && configOld.ConfigVersion == p.ConfVersion { + // not change, just copy to new map + pmNew[pn] = plugOld + + // grow instance num if needed + if p.InstanceNum > plugOld.InstanceNum() { + actual := plugOld.EnsureInstanceNum(p.InstanceNum) + if actual != p.InstanceNum { + err = fmt.Errorf("can not EnsureInstanceNum, plugin:%s, num:%d", pn, p.InstanceNum) + return + } + } + + unchanged[pn] = true + continue + } + } + // if changed, construct a new plugin. + wasmconf := bfe_wasmplugin.WasmPluginConfig { + PluginName: pn, + WasmVersion: p.WasmVersion, + ConfigVersion: p.ConfVersion, + InstanceNum: p.InstanceNum, + Path: path.Join(pluginPath, pn), + } + plug, err1 := bfe_wasmplugin.NewWasmPlugin(wasmconf) + if err1 != nil { + // build plugin error + err = err1 + return + } + + pmNew[pn] = plug + } + } + + return +} + +func cleanPlugins(pm PluginMap, unchanged map[string]bool, conf *map[string]PluginMeta) { + for pn, plug := range pm { + if unchanged[pn] { + // shink instance num if needed + confnum := (*conf)[pn].InstanceNum + if plug.InstanceNum() > confnum { + plug.EnsureInstanceNum(confnum) + } + } else { + // stop plug + plug.OnPluginDestroy() + plug.Clear() + } + } +} + +func updatePluginConf(t *PluginTable, conf PluginConfFile, pluginPath string) error { + if conf.Version != nil && *conf.Version != t.GetVersion() { + + // 1. check plugin map + pm := t.GetPluginMap() + pluginMapNew, unchanged, err := buildNewPluginMap(conf.PluginMap, pm, pluginPath) + if err != nil { + return err + } + + // 2. construct product rules + var beforeLocationRulesNew RuleList + if conf.BeforeLocationRules != nil { + if rulelist, err := buildRuleList(*conf.BeforeLocationRules, pluginMapNew); err == nil { + beforeLocationRulesNew = rulelist + } else { + return err + } + } + + productRulesNew := make(ProductRules) + if conf.FoundProductRules != nil { + for product, rules := range *conf.FoundProductRules { + if rulelist, err := buildRuleList(rules, pluginMapNew); err == nil { + productRulesNew[product] = rulelist + } else { + return err + } + } + } + + // 3. update PluginTable + t.Update(*conf.Version, beforeLocationRulesNew, productRulesNew, pluginMapNew) + + // 4. stop & clean old plugins + cleanPlugins(pm, unchanged, conf.PluginMap) + } + return nil +} + +func pluginConfLoad(filename string) (PluginConfFile, error) { + var conf PluginConfFile + + /* open the file */ + file, err := os.Open(filename) + + if err != nil { + return conf, err + } + + /* decode the file */ + decoder := json.NewDecoder(file) + + err = decoder.Decode(&conf) + file.Close() + + if err != nil { + return conf, err + } + + return conf, nil +} diff --git a/bfe_modules/mod_wasmplugin/plugin_table.go b/bfe_modules/mod_wasmplugin/plugin_table.go new file mode 100644 index 000000000..53273ee9a --- /dev/null +++ b/bfe_modules/mod_wasmplugin/plugin_table.go @@ -0,0 +1,72 @@ +// Copyright (c) 2024 The BFE Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mod_wasmplugin + +import ( + "sync" +) + +type PluginTable struct { + lock sync.RWMutex + version string + beforeLocationRules RuleList + productRules ProductRules + pluginMap PluginMap +} + +func NewPluginTable() *PluginTable { + t := new(PluginTable) + t.productRules = make(ProductRules) + t.pluginMap = make(PluginMap) + return t +} + +func (t *PluginTable) Update(version string, beforeLocationRules RuleList, productRules ProductRules, pluginMap PluginMap) { + t.lock.Lock() + + t.version = version + t.beforeLocationRules = beforeLocationRules + t.productRules = productRules + t.pluginMap = pluginMap + + t.lock.Unlock() +} + +func (t *PluginTable) GetVersion() string { + defer t.lock.RUnlock() + t.lock.RLock() + return t.version +} + +func (t *PluginTable) GetPluginMap() PluginMap { + defer t.lock.RUnlock() + t.lock.RLock() + return t.pluginMap +} + +func (t *PluginTable) GetBeforeLocationRules() RuleList { + defer t.lock.RUnlock() + t.lock.RLock() + return t.beforeLocationRules +} + +func (t *PluginTable) Search(product string) (RuleList, bool) { + t.lock.RLock() + productRules := t.productRules + t.lock.RUnlock() + + rules, ok := productRules[product] + return rules, ok +} diff --git a/bfe_server/bfe_server.go b/bfe_server/bfe_server.go index c50fa5f67..cfd5fa3e6 100644 --- a/bfe_server/bfe_server.go +++ b/bfe_server/bfe_server.go @@ -76,7 +76,6 @@ type BfeServer struct { // module and callback CallBacks *bfe_module.BfeCallbacks // call back functions Modules *bfe_module.BfeModules // bfe modules - Plugins *bfe_module.BfePlugins // bfe plugins // web server for bfe monitor and reload Monitor *BfeMonitor @@ -121,8 +120,6 @@ func NewBfeServer(cfg bfe_conf.BfeConfig, confRoot string, s.CallBacks = bfe_module.NewBfeCallbacks() // create modules s.Modules = bfe_module.NewBfeModules() - // create plugins - s.Plugins = bfe_module.NewBfePlugins() // initialize balTable s.balTable = bfe_balance.NewBalTable(s.GetCheckConf) @@ -317,26 +314,6 @@ func (srv *BfeServer) InitModules() error { return srv.Modules.Init(srv.CallBacks, srv.Monitor.WebHandlers, srv.ConfRoot) } -func (srv *BfeServer) LoadPlugins(plugins []string) error { - if len(plugins) == 0 { - return nil - } - - for _, pluginPath := range plugins { - if err := srv.Plugins.RegisterPlugin(pluginPath, srv.Version); err != nil { - return err - } - - log.Logger.Info("RegisterPlugin():pluginPath=%s", pluginPath) - } - - return nil -} - -func (srv *BfeServer) InitPlugins() error { - return srv.Plugins.Init(srv.CallBacks, srv.Monitor.WebHandlers, srv.ConfRoot) -} - func (srv *BfeServer) InitSignalTable() { /* create signal table */ srv.SignalTable = signal_table.NewSignalTable() diff --git a/bfe_server/bfe_server_init.go b/bfe_server/bfe_server_init.go index f261ac354..43fa7e852 100644 --- a/bfe_server/bfe_server_init.go +++ b/bfe_server/bfe_server_init.go @@ -25,7 +25,7 @@ import ( "github.com/bfenetworks/bfe/bfe_modules" ) -func StartUp(cfg bfe_conf.BfeConfig, version string, confRoot string) error { +func StartUp(cfg bfe_conf.BfeConfig, version string, confRoot string, dryRun bool) error { var err error // set all available modules @@ -79,19 +79,9 @@ func StartUp(cfg bfe_conf.BfeConfig, version string, confRoot string) error { } log.Logger.Info("StartUp():bfeServer.InitModules() OK") - // load plugins - if err = bfeServer.LoadPlugins(cfg.Server.Plugins); err != nil { - log.Logger.Error("StartUp():bfeServer.LoadPlugins():%s", err.Error()) - return err - } - - // initialize plugins - if err = bfeServer.InitPlugins(); err != nil { - log.Logger.Error("StartUp():bfeServer.InitPlugins():%s", - err.Error()) - return err + if dryRun { + return nil } - log.Logger.Info("StartUp():bfeServer.InitPlugins() OK") // initialize listeners if err = bfeServer.InitListeners(cfg); err != nil { diff --git a/bfe_stream/server_conn_test.go b/bfe_stream/server_conn_test.go index d311a8b3f..8bd738c6e 100644 --- a/bfe_stream/server_conn_test.go +++ b/bfe_stream/server_conn_test.go @@ -136,7 +136,7 @@ func TestTLSProxyBackendUnavailable(t *testing.T) { &Server{ BalanceHandler: func(conn interface{}) (*backend.BfeBackend, error) { b := backend.NewBfeBackend() - b.AddrInfo = "8.8.8.8:12345" + b.AddrInfo = "127.8.8.8:12345" // balancer return unavailable backend return b, nil }, diff --git a/bfe_tls/handshake_client_test.go b/bfe_tls/handshake_client_test.go index 9a487a678..2e21a142c 100644 --- a/bfe_tls/handshake_client_test.go +++ b/bfe_tls/handshake_client_test.go @@ -408,32 +408,6 @@ func TestHandshakeClientCertRSA(t *testing.T) { runClientTestTLS12(t, test) } -func TestHandshakeClientCertECDSA(t *testing.T) { - config := prepareClientConfig() - cert, _ := X509KeyPair([]byte(clientECDSACertificatePEM), []byte(clientECDSAKeyPEM)) - config.Certificates = []Certificate{cert} - - test := &clientTest{ - name: "ClientCert-ECDSA-RSA", - command: []string{"openssl", "s_server", "-cipher", "RC4-SHA", "-verify", "1"}, - config: config, - } - - runClientTestTLS10(t, test) - runClientTestTLS12(t, test) - - test = &clientTest{ - name: "ClientCert-ECDSA-ECDSA", - command: []string{"openssl", "s_server", "-cipher", "ECDHE-ECDSA-AES128-SHA", "-verify", "1"}, - config: config, - cert: testECDSACertificate, - key: testECDSAPrivateKey, - } - - runClientTestTLS10(t, test) - runClientTestTLS12(t, test) -} - func TestClientResumption(t *testing.T) { serverConfig := &Config{ CipherSuites: []uint16{TLS_RSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_RC4_128_SHA}, diff --git a/bfe_tls/handshake_server_test.go b/bfe_tls/handshake_server_test.go index 76057ed2e..43bc67115 100644 --- a/bfe_tls/handshake_server_test.go +++ b/bfe_tls/handshake_server_test.go @@ -587,22 +587,6 @@ func TestHandshakeServerAESGCM(t *testing.T) { runServerTestTLS12(t, test) } -func TestHandshakeServerECDHEECDSAAES(t *testing.T) { - config := testConfig.Clone() - config.Certificates = make([]Certificate, 1) - config.Certificates[0].Certificate = [][]byte{testECDSACertificate} - config.Certificates[0].PrivateKey = testECDSAPrivateKey - config.BuildNameToCertificate() - - test := &serverTest{ - name: "ECDHE-ECDSA-AES", - command: []string{"openssl", "s_client", "-no_ticket", "-cipher", "ECDHE-ECDSA-AES256-SHA"}, - config: config, - } - runServerTestTLS10(t, test) - runServerTestTLS12(t, test) -} - func TestHandshakeServerALPN(t *testing.T) { config := testConfig.Clone() config.NextProtos = []string{"proto1", "proto2"} @@ -657,36 +641,6 @@ func TestHandshakeServerSNI(t *testing.T) { runServerTestTLS12(t, test) } -// TestCipherSuiteCertPreference ensures that we select an RSA ciphersuite with -// an RSA certificate and an ECDSA ciphersuite with an ECDSA certificate. -func TestCipherSuiteCertPreferenceECDSA(t *testing.T) { - config := testConfig.Clone() - config.CipherSuites = []uint16{TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA} - config.PreferServerCipherSuites = true - - test := &serverTest{ - name: "CipherSuiteCertPreferenceRSA", - config: config, - } - runServerTestTLS12(t, test) - - config = testConfig.Clone() - config.CipherSuites = []uint16{TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA} - config.Certificates = []Certificate{ - { - Certificate: [][]byte{testECDSACertificate}, - PrivateKey: testECDSAPrivateKey, - }, - } - config.BuildNameToCertificate() - config.PreferServerCipherSuites = true - - test = &serverTest{ - name: "CipherSuiteCertPreferenceECDSA", - config: config, - } - runServerTestTLS12(t, test) -} func TestResumption(t *testing.T) { sessionFilePath := tempFile("") diff --git a/bfe_util/exit.go b/bfe_util/exit.go index 707264eb3..3350cf09c 100644 --- a/bfe_util/exit.go +++ b/bfe_util/exit.go @@ -22,9 +22,19 @@ import ( "github.com/baidu/go-lib/log" ) -func AbnormalExit() { +func exit(code int) { // waiting for logger finish jobs log.Logger.Close() // exit - os.Exit(1) + os.Exit(code) +} + +// AbnormalExit abnormal status exit with code 1. +func AbnormalExit() { + exit(1) +} + +// NormalExit normal status exit with code 0. +func NormalExit() { + exit(0) } diff --git a/bfe_wasmplugin/abi/proxywasm010/factory.go b/bfe_wasmplugin/abi/proxywasm010/factory.go new file mode 100644 index 000000000..3cbf866ed --- /dev/null +++ b/bfe_wasmplugin/abi/proxywasm010/factory.go @@ -0,0 +1,27 @@ +// Copyright (c) 2024 The BFE Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package proxywasm010 + +import ( + "github.com/bfenetworks/proxy-wasm-go-host/proxywasm/common" + proxywasm "github.com/bfenetworks/proxy-wasm-go-host/proxywasm/v1" +) + +func ABIContextFactory(instance common.WasmInstance) proxywasm.ContextHandler { + return &proxywasm.ABIContext{ + Imports: &DefaultImportsHandler{Instance: instance}, + Instance: instance, + } +} diff --git a/bfe_wasmplugin/abi/proxywasm010/imports.go b/bfe_wasmplugin/abi/proxywasm010/imports.go new file mode 100644 index 000000000..52d0b9a1d --- /dev/null +++ b/bfe_wasmplugin/abi/proxywasm010/imports.go @@ -0,0 +1,198 @@ +// Copyright (c) 2024 The BFE Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package proxywasm010 + +import ( + "bytes" + "io/ioutil" + + "net/http" + "net/url" + "sync/atomic" + "time" + + "github.com/baidu/go-lib/log" + "github.com/bfenetworks/bfe/bfe_http" + "github.com/bfenetworks/proxy-wasm-go-host/proxywasm/common" + proxywasm "github.com/bfenetworks/proxy-wasm-go-host/proxywasm/v1" +) + +type DefaultImportsHandler struct { + proxywasm.DefaultImportsHandler + Instance common.WasmInstance + hc *httpCallout +} + +// override +func (d *DefaultImportsHandler) Log(level proxywasm.LogLevel, msg string) proxywasm.WasmResult { + logFunc := log.Logger.Info + + switch level { + case proxywasm.LogLevelTrace: + logFunc = log.Logger.Trace + case proxywasm.LogLevelDebug: + logFunc = log.Logger.Debug + case proxywasm.LogLevelInfo: + logFunc = log.Logger.Info + case proxywasm.LogLevelWarn: + logFunc = func(arg0 interface{}, args ...interface{}) { + log.Logger.Warn(arg0, args...) + } + case proxywasm.LogLevelError: + logFunc = func(arg0 interface{}, args ...interface{}) { + log.Logger.Error(arg0, args...) + } + case proxywasm.LogLevelCritical: + logFunc = func(arg0 interface{}, args ...interface{}) { + log.Logger.Error(arg0, args...) + } + } + + logFunc(msg) + + return proxywasm.WasmResultOk +} + +var httpCalloutID int32 + +type httpCallout struct { + id int32 + d *DefaultImportsHandler + instance common.WasmInstance + abiContext *proxywasm.ABIContext + + urlString string + client *http.Client + req *http.Request + resp *http.Response + respHeader common.HeaderMap + respBody common.IoBuffer + reqOnFly bool +} + +// override +func (d *DefaultImportsHandler) HttpCall(reqURL string, header common.HeaderMap, body common.IoBuffer, + trailer common.HeaderMap, timeoutMilliseconds int32) (int32, proxywasm.WasmResult) { + u, err := url.Parse(reqURL) + if err != nil { + log.Logger.Error("[proxywasm010][imports] HttpCall fail to parse url, err: %v, reqURL: %v", err, reqURL) + return 0, proxywasm.WasmResultBadArgument + } + + calloutID := atomic.AddInt32(&httpCalloutID, 1) + + d.hc = &httpCallout{ + id: calloutID, + d: d, + instance: d.Instance, + abiContext: d.Instance.GetData().(*proxywasm.ABIContext), + urlString: reqURL, + } + + d.hc.client = &http.Client{Timeout: time.Millisecond * time.Duration(timeoutMilliseconds)} + + d.hc.req, err = http.NewRequest(http.MethodGet, u.String(), bytes.NewReader(body.Bytes())) + if err != nil { + log.Logger.Error("[proxywasm010][imports] HttpCall fail to create http req, err: %v, reqURL: %v", err, reqURL) + return 0, proxywasm.WasmResultInternalFailure + } + + header.Range(func(key, value string) bool { + d.hc.req.Header.Add(key, value) + return true + }) + + d.hc.reqOnFly = true + + return calloutID, proxywasm.WasmResultOk +} + +// override +func (d *DefaultImportsHandler) Wait() proxywasm.Action { + if d.hc == nil || !d.hc.reqOnFly { + return proxywasm.ActionContinue + } + + // release the instance lock and do sync http req + d.Instance.Unlock() + resp, err := d.hc.client.Do(d.hc.req) + d.Instance.Lock(d.hc.abiContext) + + d.hc.reqOnFly = false + + if err != nil { + log.Logger.Error("[proxywasm010][imports] HttpCall id: %v fail to do http req, err: %v, reqURL: %v", + d.hc.id, err, d.hc.urlString) + return proxywasm.ActionPause + } + d.hc.resp = resp + + // process http resp header + // var respHeader common.HeaderMap = protocol.CommonHeader{} + // for key, _ := range resp.Header { + // respHeader.Set(key, resp.Header.Get(key)) + // } + d.hc.respHeader = HeaderMapWrapper{Header: bfe_http.Header(resp.Header)} + + // process http resp body + var respBody common.IoBuffer + respBodyLen := 0 + + respBodyBytes, err := ioutil.ReadAll(resp.Body) + if err != nil { + log.Logger.Error("[proxywasm010][imports] HttpCall id: %v fail to read bytes from resp body, err: %v, reqURL: %v", + d.hc.id, err, d.hc.urlString) + } + + err = resp.Body.Close() + if err != nil { + log.Logger.Error("[proxywasm010][imports] HttpCall id: %v fail to close resp body, err: %v, reqURL: %v", + d.hc.id, err, d.hc.urlString) + } + + if respBodyBytes != nil { + respBody = common.NewIoBufferBytes(respBodyBytes) + respBodyLen = respBody.Len() + } + d.hc.respBody = respBody + + // call proxy_on_http_call_response + rootContextID := d.hc.abiContext.Imports.GetRootContextID() + exports := d.hc.abiContext.GetExports() + + err = exports.ProxyOnHttpCallResponse(rootContextID, d.hc.id, int32(len(resp.Header)), int32(respBodyLen), 0) + if err != nil { + log.Logger.Error("[proxywasm010][imports] httpCall id: %v fail to call ProxyOnHttpCallResponse, err: %v", d.hc.id, err) + } + return proxywasm.ActionContinue +} + +// override +func (d *DefaultImportsHandler) GetHttpCallResponseHeaders() common.HeaderMap { + if d.hc != nil && d.hc.respHeader != nil { + return d.hc.respHeader + } + + return nil +} + +// override +func (d *DefaultImportsHandler) GetHttpCallResponseBody() common.IoBuffer { + if d.hc != nil && d.hc.respBody != nil { + return d.hc.respBody + } + + return nil +} diff --git a/bfe_wasmplugin/abi/proxywasm010/shim.go b/bfe_wasmplugin/abi/proxywasm010/shim.go new file mode 100644 index 000000000..ff895a92e --- /dev/null +++ b/bfe_wasmplugin/abi/proxywasm010/shim.go @@ -0,0 +1,55 @@ +// Copyright (c) 2024 The BFE Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package proxywasm010 + +import ( + "github.com/bfenetworks/bfe/bfe_http" + "github.com/bfenetworks/proxy-wasm-go-host/proxywasm/common" +) + +// HeaderMapWrapper wraps api.HeaderMap into proxy-wasm-go-host/common.HeaderMap +// implement common.HeaderMap +type HeaderMapWrapper struct { + bfe_http.Header +} + +// Override +func (h HeaderMapWrapper) Get(key string) (string, bool) { + s := h.Header.Get(key) + if s == "" { + return "", false + } else { + return s, true + } +} + +func (h HeaderMapWrapper) Range(f func(key, value string) bool) { + stopped := false + for k, v := range h.Header { + if stopped { + return + } + stopped = !f(k, v[0]) + } +} + +func (h HeaderMapWrapper) ByteSize() uint64 { + // TODO: to implement + return 0 +} + +func (h HeaderMapWrapper) Clone() common.HeaderMap { + return &HeaderMapWrapper{h.Header} +} diff --git a/bfe_wasmplugin/abi/registry.go b/bfe_wasmplugin/abi/registry.go new file mode 100644 index 000000000..05e9b3f2a --- /dev/null +++ b/bfe_wasmplugin/abi/registry.go @@ -0,0 +1,38 @@ +// Copyright (c) 2024 The BFE Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package abi + +import ( + "github.com/baidu/go-lib/log" + "github.com/bfenetworks/bfe/bfe_wasmplugin/abi/proxywasm010" + "github.com/bfenetworks/proxy-wasm-go-host/proxywasm/common" + proxywasm "github.com/bfenetworks/proxy-wasm-go-host/proxywasm/v1" +) + +func GetABIList(instance common.WasmInstance) []proxywasm.ContextHandler { + if instance == nil { + log.Logger.Error("[abi][registry] GetABIList nil instance: %v", instance) + return nil + } + + res := make([]proxywasm.ContextHandler, 0) + + abiNameList := instance.GetModule().GetABINameList() + if len(abiNameList) > 0 { + res = append(res, proxywasm010.ABIContextFactory(instance)) + } + + return res +} diff --git a/bfe_wasmplugin/adapter.go b/bfe_wasmplugin/adapter.go new file mode 100644 index 000000000..50f6c2df4 --- /dev/null +++ b/bfe_wasmplugin/adapter.go @@ -0,0 +1,109 @@ +// Copyright (c) 2024 The BFE Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package bfe_wasmplugin + +import ( + "bytes" + "io/ioutil" + + "github.com/bfenetworks/bfe/bfe_http" + "github.com/bfenetworks/bfe/bfe_wasmplugin/abi/proxywasm010" + "github.com/bfenetworks/proxy-wasm-go-host/proxywasm/common" + v1Host "github.com/bfenetworks/proxy-wasm-go-host/proxywasm/v1" +) + +// v1 Imports +type v1Imports struct { + proxywasm010.DefaultImportsHandler + plugin WasmPlugin + filter *Filter +} + +func (v1 *v1Imports) GetRootContextID() int32 { + return v1.plugin.GetRootContextID() +} + +func (v1 *v1Imports) GetVmConfig() common.IoBuffer { + return common.NewIoBufferBytes([]byte{}) +} + +func (v1 *v1Imports) GetPluginConfig() common.IoBuffer { + return common.NewIoBufferBytes(v1.plugin.GetPluginConfig()) +} + +func (v1 *v1Imports) GetHttpRequestHeader() common.HeaderMap { + if v1.filter.request == nil { + return nil + } + + return &proxywasm010.HeaderMapWrapper{Header: v1.filter.request.HttpRequest.Header} +} + +func (v1 *v1Imports) GetHttpRequestBody() common.IoBuffer { + if v1.filter.request == nil { + return nil + } + + return nil +} + +func (v1 *v1Imports) GetHttpRequestTrailer() common.HeaderMap { + if v1.filter.request == nil { + return nil + } + + return &proxywasm010.HeaderMapWrapper{Header: v1.filter.request.HttpRequest.Trailer} +} + +func (v1 *v1Imports) GetHttpResponseHeader() common.HeaderMap { + if v1.filter.request == nil || v1.filter.request.HttpResponse == nil { + return nil + } + + return &proxywasm010.HeaderMapWrapper{Header: v1.filter.request.HttpResponse.Header} +} + +func (v1 *v1Imports) GetHttpResponseBody() common.IoBuffer { + if v1.filter.request == nil || v1.filter.request.HttpResponse == nil { + return nil + } + + return nil +} + +func (v1 *v1Imports) GetHttpResponseTrailer() common.HeaderMap { + if v1.filter.request == nil || v1.filter.request.HttpResponse == nil { + return nil + } + + return &proxywasm010.HeaderMapWrapper{Header: v1.filter.request.HttpResponse.Trailer} +} + +func (v1 *v1Imports) SendHttpResp(respCode int32, respCodeDetail common.IoBuffer, respBody common.IoBuffer, additionalHeaderMap common.HeaderMap, grpcCode int32) v1Host.WasmResult { + resp := &bfe_http.Response{ + StatusCode: int(respCode), + Status: string(respCodeDetail.Bytes()), + Body: ioutil.NopCloser(bytes.NewReader(respBody.Bytes())), + Header: make(bfe_http.Header), + } + + additionalHeaderMap.Range(func(key, value string) bool { + resp.Header.Add(key, value) + return true + }) + + v1.filter.request.HttpResponse = resp + return v1Host.WasmResultOk +} diff --git a/bfe_module/bfe_plugin_info.go b/bfe_wasmplugin/engine.go similarity index 62% rename from bfe_module/bfe_plugin_info.go rename to bfe_wasmplugin/engine.go index 23ca40903..ade6f1241 100644 --- a/bfe_module/bfe_plugin_info.go +++ b/bfe_wasmplugin/engine.go @@ -1,4 +1,4 @@ -// Copyright (c) 2019 The BFE Authors. +// Copyright (c) 2024 The BFE Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -12,17 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. -package bfe_module +package bfe_wasmplugin import ( - "github.com/baidu/go-lib/web-monitor/web_monitor" + "github.com/bfenetworks/proxy-wasm-go-host/proxywasm/common" + "github.com/bfenetworks/proxy-wasm-go-host/wazero" ) -type PluginInfo struct { - Name string - Version string - Description string - Kind string // TODO plugin kind - Path string - Init func(cbs *BfeCallbacks, whs *web_monitor.WebHandlers, cr string) error +var defaultEngine = wazero.NewVM() + +func GetWasmEngine() common.WasmVM { + return defaultEngine } diff --git a/bfe_wasmplugin/filter.go b/bfe_wasmplugin/filter.go new file mode 100644 index 000000000..183187cea --- /dev/null +++ b/bfe_wasmplugin/filter.go @@ -0,0 +1,145 @@ +// Copyright (c) 2024 The BFE Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package bfe_wasmplugin + +import ( + "sync" + "sync/atomic" + + "github.com/bfenetworks/bfe/bfe_basic" + "github.com/bfenetworks/bfe/bfe_http" + "github.com/bfenetworks/bfe/bfe_module" + + "github.com/baidu/go-lib/log" + wasmABI "github.com/bfenetworks/bfe/bfe_wasmplugin/abi" + "github.com/bfenetworks/proxy-wasm-go-host/proxywasm/common" + v1Host "github.com/bfenetworks/proxy-wasm-go-host/proxywasm/v1" +) + +type Filter struct { + plugin WasmPlugin + instance common.WasmInstance + abi v1Host.ContextHandler + exports v1Host.Exports + + rootContextID int32 + contextID int32 + + request *bfe_basic.Request + + destroyOnce sync.Once +} + +var contextIDGenerator int32 + +func newContextID(rootContextID int32) int32 { + for { + id := atomic.AddInt32(&contextIDGenerator, 1) + if id != rootContextID { + return id + } + } +} + +func NewFilter(plugin WasmPlugin, request *bfe_basic.Request) *Filter { + instance := plugin.GetInstance() + rootContextID := plugin.GetRootContextID() + + filter := &Filter{ + plugin: plugin, + instance: instance, + rootContextID: rootContextID, + contextID: newContextID(rootContextID), + request: request, + } + + filter.abi = wasmABI.GetABIList(instance)[0] + log.Logger.Info("[proxywasm][filter] abi version: %v", filter.abi.Name()) + if filter.abi != nil { + // v1 + imports := &v1Imports{plugin: plugin, filter: filter} + imports.DefaultImportsHandler.Instance = instance + filter.abi.SetImports(imports) + filter.exports = filter.abi.GetExports() + } else { + log.Logger.Error("[proxywasm][filter] unknown abi list: %v", filter.abi) + return nil + } + + filter.instance.Lock(filter.abi) + defer filter.instance.Unlock() + + err := filter.exports.ProxyOnContextCreate(filter.contextID, filter.rootContextID) + if err != nil { + log.Logger.Error("[proxywasm][filter] NewFilter fail to create context id: %v, rootContextID: %v, err: %v", + filter.contextID, filter.rootContextID, err) + return nil + } + + return filter +} + +func (f *Filter) OnDestroy() { + f.destroyOnce.Do(func() { + f.instance.Lock(f.abi) + + _, err := f.exports.ProxyOnDone(f.contextID) + if err != nil { + log.Logger.Error("[proxywasm][filter] OnDestroy fail to call ProxyOnDone, err: %v", err) + } + + err = f.exports.ProxyOnDelete(f.contextID) + if err != nil { + // warn instead of error as some proxy_abi_version_0_1_0 wasm don't + // export proxy_on_delete + log.Logger.Warn("[proxywasm][filter] OnDestroy fail to call ProxyOnDelete, err: %v", err) + } + + f.instance.Unlock() + f.plugin.ReleaseInstance(f.instance) + }) +} + +func (f *Filter) RequestHandler(request *bfe_basic.Request) (int, *bfe_http.Response) { + f.instance.Lock(f.abi) + defer f.instance.Unlock() + + action, err := f.exports.ProxyOnRequestHeaders(f.contextID, int32(len(request.HttpRequest.Header)), 0) + if err != nil { + log.Logger.Error("[proxywasm][filter][v1] ProxyOnRequestHeaders action: %v, err: %v", action, err) + } + + status := bfe_module.BfeHandlerGoOn + if f.request.HttpResponse != nil { + status = bfe_module.BfeHandlerResponse + } + return status, f.request.HttpResponse +} + +func (f *Filter) ResponseHandler(request *bfe_basic.Request) (int, *bfe_http.Response) { + f.instance.Lock(f.abi) + defer f.instance.Unlock() + + action, err := f.exports.ProxyOnResponseHeaders(f.contextID, int32(len(request.HttpResponse.Header)), 0) + if err != nil { + log.Logger.Error("[proxywasm][filter][v1] ProxyOnResponseHeaders action: %v, err: %v", action, err) + } + + status := bfe_module.BfeHandlerGoOn + if f.request.HttpResponse != nil { + status = bfe_module.BfeHandlerResponse + } + return status, f.request.HttpResponse +} diff --git a/bfe_wasmplugin/plugin.go b/bfe_wasmplugin/plugin.go new file mode 100644 index 000000000..83ad2e6ba --- /dev/null +++ b/bfe_wasmplugin/plugin.go @@ -0,0 +1,394 @@ +// Copyright (c) 2024 The BFE Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package bfe_wasmplugin + +import ( + "crypto/md5" + "encoding/hex" + "errors" + "os" + "path" + "runtime" + "strings" + "sync" + "sync/atomic" + + "github.com/baidu/go-lib/log" + wasmABI "github.com/bfenetworks/bfe/bfe_wasmplugin/abi" + "github.com/bfenetworks/proxy-wasm-go-host/proxywasm/common" + v1Host "github.com/bfenetworks/proxy-wasm-go-host/proxywasm/v1" +) + +var ( + ErrEngineNotFound = errors.New("fail to get wasm engine") + ErrWasmBytesLoad = errors.New("fail to load wasm bytes") + ErrWasmBytesIncorrect = errors.New("incorrect hash of wasm bytes") + ErrConfigFileLoad = errors.New("fail to load config file") + ErrMd5FileLoad = errors.New("fail to load md5 file") + ErrInstanceCreate = errors.New("fail to create wasm instance") + ErrModuleCreate = errors.New("fail to create wasm module") +) + +type WasmPluginConfig struct { + PluginName string `json:"plugin_name,omitempty"` + Path string `json:"path,omitempty"` + Md5 string `json:"md5,omitempty"` + WasmVersion string + ConfigVersion string + InstanceNum int `json:"instance_num,omitempty"` +} + +// WasmPlugin manages the collection of wasm plugin instances +type WasmPlugin interface { + // PluginName returns the name of wasm plugin + PluginName() string + + // GetPluginConfig returns the config of wasm plugin + GetPluginConfig() []byte + + // GetPluginConfig returns the config of wasm plugin + GetConfig() WasmPluginConfig + + // EnsureInstanceNum tries to expand/shrink the num of instance to 'num' + // and returns the actual instance num + EnsureInstanceNum(num int) int + + // InstanceNum returns the current number of wasm instance + InstanceNum() int + + // GetInstance returns one plugin instance of the plugin + GetInstance() common.WasmInstance + + // ReleaseInstance releases the instance to the plugin + ReleaseInstance(instance common.WasmInstance) + + // Exec execute the f for each instance + Exec(f func(instance common.WasmInstance) bool) + + // Clear got called when the plugin is destroyed + Clear() + + // OnPluginStart got called when starting the wasm plugin + OnPluginStart() + + // OnPluginDestroy got called when destroying the wasm plugin + OnPluginDestroy() + + GetRootContextID() int32 +} + +type wasmPluginImpl struct { + config WasmPluginConfig + + lock sync.RWMutex + + instanceNum int32 + instances []common.WasmInstance + instancesIndex int32 + + occupy int32 + + vm common.WasmVM + wasmBytes []byte + module common.WasmModule + + pluginConfig []byte + rootContextID int32 +} + +// load wasm bytes +func loadWasmBytes(dir string, name string) (wasmBytes []byte, configBytes []byte, err error) { + wasmBytes, err = os.ReadFile(path.Join(dir, name + ".wasm")) + if err != nil || len(wasmBytes) == 0 { + // wasm file error + err = ErrWasmBytesLoad + return + } + + configBytes, err = os.ReadFile(path.Join(dir, name + ".conf")) + if err != nil { + // plugin config file error + err = ErrConfigFileLoad + return + } + + var md5File []byte + md5File, err = os.ReadFile(path.Join(dir, name + ".md5")) + if err != nil { + // md5 file error + err = ErrMd5FileLoad + return + } + md5str := "" + fields := strings.Fields(string(md5File)) + if len(fields) > 0 { + md5str = fields[0] + } + + md5Bytes := md5.Sum(wasmBytes) + newMd5 := hex.EncodeToString(md5Bytes[:]) + if newMd5 != md5str { + err = ErrWasmBytesIncorrect + return + } + + return +} + +func NewWasmPlugin(wasmConfig WasmPluginConfig) (WasmPlugin, error) { + // check instance num + instanceNum := wasmConfig.InstanceNum + if instanceNum <= 0 { + instanceNum = runtime.NumCPU() + } + + wasmConfig.InstanceNum = instanceNum + + // get wasm engine + vm := GetWasmEngine() + if vm == nil { + return nil, ErrEngineNotFound + } + + // load wasm bytes + wasmBytes, configBytes, err := loadWasmBytes(wasmConfig.Path, wasmConfig.PluginName) + if err != nil { + // wasm file error + return nil, err + } + + // create wasm module + module := vm.NewModule(wasmBytes) + if module == nil { + return nil, ErrModuleCreate + } + + plugin := &wasmPluginImpl{ + config: wasmConfig, + vm: vm, + wasmBytes: wasmBytes, + module: module, + pluginConfig: configBytes, + rootContextID: newContextID(0), + } + + // ensure instance num + actual := plugin.EnsureInstanceNum(wasmConfig.InstanceNum) + if actual == 0 { + return nil, ErrInstanceCreate + } + + return plugin, nil +} + +// reduce to n instances and return the cut-offs +func (w *wasmPluginImpl) cutInstance(n int) []common.WasmInstance { + w.lock.Lock() + defer w.lock.Unlock() + + oldcopy := make([]common.WasmInstance, w.InstanceNum() - n) + copy(oldcopy, w.instances[n:]) + w.instances = w.instances[:n] + atomic.StoreInt32(&w.instanceNum, int32(n)) + + return oldcopy +} + +func (w *wasmPluginImpl) appendInstance(newInstance []common.WasmInstance) { + w.lock.Lock() + defer w.lock.Unlock() + + w.instances = append(w.instances, newInstance...) + atomic.AddInt32(&w.instanceNum, int32(len(newInstance))) +} + +// EnsureInstanceNum try to expand/shrink the num of instance to 'num' +// and return the actual instance num. +func (w *wasmPluginImpl) EnsureInstanceNum(num int) int { + if num == w.InstanceNum() { + return w.InstanceNum() + } + + if num < w.InstanceNum() { + todel := w.cutInstance(num) + + // stop the cut-off instances + for _, instance := range todel { + instance.Stop() + } + } else { + newInstance := make([]common.WasmInstance, 0) + numToCreate := num - w.InstanceNum() + + for i := 0; i < numToCreate; i++ { + instance := w.module.NewInstance() + if instance == nil { + log.Logger.Error("[wasm][plugin] EnsureInstanceNum fail to create instance, i: %v", i) + continue + } + + // Instantiate any ABI needed by the guest. + abilist := wasmABI.GetABIList(instance) + if len(abilist) == 0 { + log.Logger.Error("[wasm][plugin] EnsureInstanceNum fail to get abilist, i: %v", i) + break + } + for _, abi := range abilist { + //abi.OnInstanceCreate(instance) + if err := instance.RegisterImports(abi.Name()); err != nil { + panic(err) + } + } + + err := instance.Start() + if err != nil { + log.Logger.Error("[wasm][plugin] EnsureInstanceNum fail to start instance, i: %v, err: %v", i, err) + continue + } + + if !w.OnInstanceStart(instance) { + log.Logger.Error("[wasm][plugin] EnsureInstanceNum fail on instance start, i: %v", i) + break + } + newInstance = append(newInstance, instance) + } + + w.appendInstance(newInstance) + } + + return w.InstanceNum() +} + +func (w *wasmPluginImpl) InstanceNum() int { + return int(atomic.LoadInt32(&w.instanceNum)) +} + +func (w *wasmPluginImpl) PluginName() string { + return w.config.PluginName +} + +func (w *wasmPluginImpl) Clear() { + // do nothing + log.Logger.Info("[wasm][plugin] Clear wasm plugin, config: %v, instanceNum: %v", w.config, w.instanceNum) + w.EnsureInstanceNum(0) + log.Logger.Info("[wasm][plugin] Clear wasm plugin done, config: %v, instanceNum: %v", w.config, w.instanceNum) +} + +// Exec execute the f for each instance. +func (w *wasmPluginImpl) Exec(f func(instance common.WasmInstance) bool) { + w.lock.RLock() + defer w.lock.RUnlock() + + for _, iw := range w.instances { + if !f(iw) { + break + } + } +} + +func (w *wasmPluginImpl) GetConfig() WasmPluginConfig { + return w.config +} + +func (w *wasmPluginImpl) GetPluginConfig() []byte { + return w.pluginConfig +} + +func (w *wasmPluginImpl) GetInstance() common.WasmInstance { + w.lock.RLock() + defer w.lock.RUnlock() + + for i := 0; i < len(w.instances); i++ { + idx := int(atomic.LoadInt32(&w.instancesIndex)) % len(w.instances) + atomic.AddInt32(&w.instancesIndex, 1) + + instance := w.instances[idx] + if !instance.Acquire() { + continue + } + + atomic.AddInt32(&w.occupy, 1) + return instance + } + + return nil +} + +func (w *wasmPluginImpl) ReleaseInstance(instance common.WasmInstance) { + instance.Release() + atomic.AddInt32(&w.occupy, -1) +} + +func (w *wasmPluginImpl) OnInstanceStart(instance common.WasmInstance) bool { + abilist := wasmABI.GetABIList(instance) + if len(abilist) == 0 { + log.Logger.Error("[proxywasm][factory] instance has no correct abi list") + return false + } + + abi := abilist[0] + var exports v1Host.Exports + if abi != nil { + // v1 + imports := &v1Imports{plugin: w} + imports.DefaultImportsHandler.Instance = instance + abi.SetImports(imports) + exports = abi.GetExports() + } else { + log.Logger.Error("[proxywasm][factory] unknown abi list: %v", abi) + return false + } + + instance.Lock(abi) + defer instance.Unlock() + + err := exports.ProxyOnContextCreate(w.rootContextID, 0) + if err != nil { + log.Logger.Error("[proxywasm][factory] OnPluginStart fail to create root context id, err: %v", err) + return true + } + + vmConfigSize := 0 + // no vm config + + _, err = exports.ProxyOnVmStart(w.rootContextID, int32(vmConfigSize)) + if err != nil { + log.Logger.Error("[proxywasm][factory] OnPluginStart fail to create root context id, err: %v", err) + return true + } + + pluginConfigSize := 0 + if pluginConfigBytes := w.GetPluginConfig(); pluginConfigBytes != nil { + pluginConfigSize = len(pluginConfigBytes) + } + + _, err = exports.ProxyOnConfigure(w.rootContextID, int32(pluginConfigSize)) + if err != nil { + log.Logger.Error("[proxywasm][factory] OnPluginStart fail to create root context id, err: %v", err) + return true + } + + return true +} + +func (w *wasmPluginImpl) OnPluginStart() { + // w.Exec(w.OnInstanceStart) +} + +func (d *wasmPluginImpl) OnPluginDestroy() {} + +func (w *wasmPluginImpl) GetRootContextID() int32 { + return w.rootContextID +} diff --git a/bfe_websocket/server_conn_test.go b/bfe_websocket/server_conn_test.go index e126ae7f3..04f674deb 100644 --- a/bfe_websocket/server_conn_test.go +++ b/bfe_websocket/server_conn_test.go @@ -252,7 +252,7 @@ func TestWebSocketProxyBackendUnavailable(t *testing.T) { &Server{ BalanceHandler: func(req interface{}) (*backend.BfeBackend, error) { b := backend.NewBfeBackend() - b.AddrInfo = "8.8.8.8:12345" + b.AddrInfo = "127.8.8.8:12345" // balancer return unavailable backend return b, nil }, diff --git a/conf/bfe.conf b/conf/bfe.conf index 83d3f0ce3..9a4d043b2 100644 --- a/conf/bfe.conf +++ b/conf/bfe.conf @@ -61,6 +61,7 @@ Modules = mod_access Modules = mod_prison #Modules = mod_auth_request # Modules = mod_cors +Modules = mod_wasm # interval for get diff of proxy-state MonitorInterval = 20 @@ -112,7 +113,7 @@ CipherSuites=TLS_RSA_WITH_RC4_128_SHA CipherSuites=TLS_RSA_WITH_AES_128_CBC_SHA CipherSuites=TLS_RSA_WITH_AES_256_CBC_SHA -# supported curve perference settings +# supported curve preference settings # # curves implemented in golang: # CurveP256 diff --git a/conf/mod_wasm/mod_wasm.conf b/conf/mod_wasm/mod_wasm.conf new file mode 100644 index 000000000..7a00935bb --- /dev/null +++ b/conf/mod_wasm/mod_wasm.conf @@ -0,0 +1,7 @@ +[basic] +DataPath = mod_wasm/mod_wasm.data +WasmPluginPath=wasm_plugin/ + +[log] +OpenDebug=true + diff --git a/conf/mod_wasm/mod_wasm.data b/conf/mod_wasm/mod_wasm.data new file mode 100644 index 000000000..d491ce813 --- /dev/null +++ b/conf/mod_wasm/mod_wasm.data @@ -0,0 +1,21 @@ +{ + "Version": "5", + "BeforeLocationRules": [{ + "Cond": "req_path_prefix_in(\"/headers\", false)", + "PluginList": [ "headers" ] + }], + "ProductRules": { + "local_product": [{ + "Cond": "default_t()", + "PluginList": [] + }] + }, + "PluginMap": { + "headers": { + "Name": "headers", + "WasmVersion": "3", + "ConfVersion": "6", + "InstanceNum": 20 + } + } +} diff --git a/conf/server_data_conf/host_rule.data b/conf/server_data_conf/host_rule.data index 49ee4b352..734d675f7 100644 --- a/conf/server_data_conf/host_rule.data +++ b/conf/server_data_conf/host_rule.data @@ -6,11 +6,17 @@ "example.org", "fcgi.example.org", "h2c.example.org" + ], + "localTag":[ + "localhost" ] }, "HostTags": { "example_product":[ "exampleTag" + ], + "local_product":[ + "localTag" ] } } diff --git a/conf/wasm_plugin/headers/headers.conf b/conf/wasm_plugin/headers/headers.conf new file mode 100644 index 000000000..77d8544e5 --- /dev/null +++ b/conf/wasm_plugin/headers/headers.conf @@ -0,0 +1,4 @@ +{ + "header": "Wasm-Header-1", + "value": "Hello WasmPlugin!" +} diff --git a/conf/wasm_plugin/headers/headers.md5 b/conf/wasm_plugin/headers/headers.md5 new file mode 100644 index 000000000..fc2ba2dd2 --- /dev/null +++ b/conf/wasm_plugin/headers/headers.md5 @@ -0,0 +1 @@ +82f14b56c9114d420f4624443bd76ac0 diff --git a/conf/wasm_plugin/headers/headers.wasm b/conf/wasm_plugin/headers/headers.wasm new file mode 100755 index 0000000000000000000000000000000000000000..767910bb826b70f5be29c7a416dcb3d78de701b0 GIT binary patch literal 1019243 zcmeFad%Tucb?^J!-pg9=yA}_(gak~U_Z91kf~7VlNNHU&hXe@3q^Gt!`yBTM3~0h4 zgv%0ROT&tyVnn3|6+KaxiiWn>P204knzq=|O52>4Pfu)V8+BQ+;yH0|wvCnDO?US9 zH|Bia%L1(S)6e;wKMn~zw>ifgbKK^bV~#oBXv5C?<0y*aliAYs>7G4%;yreW)@MBI ziPk6jr>1-UMC)S}uuok1#=kMItL67fDEDIj;$Qri`g5(&?oLsE$A>6d@4;D94+*7* z9_lux68s(LRI~y@()#g`p-HWDk1Ca2phmWbCZhFqRa9f)R*$|kWvFCT>EZ76F}F>9 zF8@%#YU`PMi1LscrC3cU@+ZL5eQ29o(di+5hpZ2&Vg=OnG^8q>KhqkE);BtzRJan5 z2A1C23+vEew-~Tzb)U++X#Je>w)a}L=LrwM(4IX<>pfU|0Bk^YT3P=X?@9hN8NBLE z8+P8eZs*nw+jidj!1%gtJ2vgQZ_}H8r2hJi>)y2EzVS^_^$I11@7eOeJ!9*}@4J7~ zx;JbZj}~01+=d-**tu@!eLuTtr>=>GiMQ zbkF#GyEd)6=Yg%`n;smGDk^c6FF}oUuX`g!cC35do5wfpjE42`+V01DH*MI+$NM*I zTeoe)eLHqWkqTVr3+&jmZOevxHm&O^v}?nbH*V^KvSH)KD-;;;P_{hq2B3Z*JD3g4 zimF4EG##wOLobNqc&HK$W)=NOD?>GZlcurmqrqAfC4)&?NupXkiIRFPj<1_LH%h8e zG+4h1-o$ZQsiwS+(|E>ETCJw(P`#d3>a*&)xxP|~>wK^ADNcuySu_ym70T()%&1n2 zlHp`H9;y#i<0LI+CWC{utX`=n1K^NG)i{m@2L@V6T$`P=UzpCQ)6&)RqIwj^Nv%Fe z-6&r;BhB+Xj^gUzV0Gp|lF&#ktpgyTew-vpbs(!GaW#HXbxstgwKT2INzxfVl*HFu z`{HC|&J8bl>7p6gwFxa!XJB!hzAR3tm<^`Mz(8_!oc-`Ma|Y@Cz^s8vt(L~M!NIf= zrS@Mf8jNa#fUMNh`q0c2Vk9YT4%DbF%GIL?a$WgPeQ>Zo5U2IogY_h?fNolY)M>R5 zH)0S^_^htKQ?EAFA!x> zZP)#w!k;9wIxkV6*WdSsH}2RJ{b_P_=k3-_Z<18j�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 A?s0qb8#Z(p$2om|tDQz6!b+Q_bG}G3B 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

_IEF_n9s4KJg0UH_eJ2luBC8 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

=$`ykhqlZ8O^G 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%0D7l5OC|ZTr+nFKK&V|Uyw^$0xO<5B7+xp~ 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 z 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 z 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 S6~`*oiTP7&s3^KPSpOe-;Dyxy literal 0 HcmV?d00001 diff --git a/docs/en_us/DOWNLOAD.md b/docs/en_us/DOWNLOAD.md index b3956378f..b7d328448 100644 --- a/docs/en_us/DOWNLOAD.md +++ b/docs/en_us/DOWNLOAD.md @@ -1,5 +1,27 @@ We provide precompiled binaries for bfe components. [Download the latest release](https://github.com/bfenetworks/bfe/releases) of BFE for your platform. +## bfe v1.6.0 + +* 2022-10-25 [Release notes](https://github.com/bfenetworks/bfe/releases/tag/v1.6.0) + +| File name | OS | Arch | Size | SHA256 Checksum | +| --------- | -------- | ---- | ---- | ------------ | +| [bfe_1.6.0_darwin_amd64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.6.0/bfe_1.6.0_darwin_amd64.tar.gz) | darwin | amd 64 | 9.3M | 61c8c5cab55c2b0ae7a5a0c027559efceddf58924fec7ff7dc9342e9ae8800e6 | +| [bfe_1.6.0_linux_amd64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.6.0/bfe_1.6.0_linux_amd64.tar.gz) | linux | amd64 | 9.56 MB | 26510e09a7da8618e860beb58823b12b4305bf83a48fde4d09fae5f5c4d18aba | +| [bfe_1.6.0_linux_arm64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.6.0/bfe_1.6.0_linux_arm64.tar.gz) | linux | arm64 | 8.84 MB | 135d3d8f45612633958df923a876b5481ca5d4221f3d997de952cfd797ccd77e | +| [bfe_1.6.0_windows_amd64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.6.0/bfe_1.6.0_windows_amd64.tar.gz) | windows | amd64 | 9.64 MB | 31e331335c87c2c44faf6dce915a53f5b7fada6c1925580ee2e19db6933fe450 | + +## bfe v1.5.0 + +* 2022-01-11 [Release notes](https://github.com/bfenetworks/bfe/releases/tag/v1.5.0) + +| File name | OS | Arch | Size | SHA256 Checksum | +| --------- | -------- | ---- | ---- | ------------ | +| [bfe_1.5.0_darwin_amd64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.5.0/bfe_1.5.0_darwin_amd64.tar.gz) | darwin | amd 64 | 9.29M | accf8ccebaf98ab38028f7beb8c4da0825a7c62976063bd844cebeb2d57760b0 | +| [bfe_1.5.0_linux_amd64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.5.0/bfe_1.5.0_linux_amd64.tar.gz) | linux | amd64 | 9.55 MB | a74818d26462995b4f79c72184bee005c3aa161d9cb7af42b41d18791733336d | +| [bfe_1.5.0_linux_arm64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.5.0/bfe_1.5.0_linux_arm64.tar.gz) | linux | arm64 | 8.83 MB | d9ee8877c679d2b7af2d1fa60cd4a498bc252c5832df0f8ced771cae1d36fa58 | +| [bfe_1.5.0_windows_amd64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.5.0/bfe_1.5.0_windows_amd64.tar.gz) | windows | amd64 | 9.63 MB | a9f54df2a2374bf53ba6ad1d728f82a27f2b2c8aaa6ae854141c58105a905992 | + ## bfe v1.4.0 * 2021-12-10 [Release notes](https://github.com/bfenetworks/bfe/releases/tag/v1.4.0) diff --git a/docs/en_us/SUMMARY.md b/docs/en_us/SUMMARY.md index 93c25d2fe..559086f42 100644 --- a/docs/en_us/SUMMARY.md +++ b/docs/en_us/SUMMARY.md @@ -3,7 +3,7 @@ * [About](ABOUT.md) * Introduction * [Overview](introduction/overview.md) - * [Comparsion to similar systems](introduction/comparison.md) + * [Comparison to similar systems](introduction/comparison.md) * Design overview * [Terminology](introduction/terminology.md) * [Traffic fowarding model](introduction/forward_model.md) @@ -18,7 +18,7 @@ * [Traffic blocking](example/block.md) * [Request redirect](example/redirect.md) * [Request rewrite](example/rewrite.md) - * [FastCGI procotol](example/fastcgi.md) + * [FastCGI protocol](example/fastcgi.md) * [TLS mutual authentication](example/client_auth.md) * [Installation](installation/install.md) * [Install from source](installation/install_from_source.md) @@ -64,6 +64,7 @@ * [mod_trust_clientip](modules/mod_trust_clientip/mod_trust_clientip.md) * [mod_userid](modules/mod_userid/mod_userid.md) * [mod_secure_link](modules/mod_secure_link/mod_secure_link.md) + * [mod_wasmplugin](modules/mod_wasmplugin/mod_wasmplugin.md) * Operations * [Command line options](operation/command.md) * [Environment variables](operation/env_var.md) diff --git a/docs/en_us/condition/condition_grammar.md b/docs/en_us/condition/condition_grammar.md index 3736f7d31..5d3068832 100644 --- a/docs/en_us/condition/condition_grammar.md +++ b/docs/en_us/condition/condition_grammar.md @@ -29,7 +29,7 @@ req_host_in("bfe-networks.com") && req_method_in("GET") - You can define a variable and assign a condition expression to it. ```go -// define a condition varaible +// define a condition variable bfe_host = req_host_in("bfe-networks.com") ``` @@ -41,7 +41,7 @@ bfe_host = req_host_in("bfe-networks.com") ```go // return true if the value of new_host is true and the request method is GET -$news_host && req_method_in("GET") +$new_host && req_method_in("GET") ``` ## Grammar diff --git a/docs/en_us/condition/system/time.md b/docs/en_us/condition/system/time.md index 43c179d99..ee4803aad 100644 --- a/docs/en_us/condition/system/time.md +++ b/docs/en_us/condition/system/time.md @@ -29,7 +29,7 @@ bfe_time_range("20190204203000H", "20190204204500H") | --------- | ---------- | | start_time | String
start time | | end_time | String
end time | -| period | String
period, defualt *Day* | +| period | String
period, default *Day* | Time format: hhmmssZ,Z is time zone,detail information is shown in "Appendix B: Time Zone Detail" diff --git a/docs/en_us/configuration/bfe.conf.md b/docs/en_us/configuration/bfe.conf.md index 073c2d6cd..213715c38 100644 --- a/docs/en_us/configuration/bfe.conf.md +++ b/docs/en_us/configuration/bfe.conf.md @@ -22,7 +22,7 @@ bfe.conf is the core configuration file of BFE. | Basic.KeepAliveEnabled | Boolean
If false, HTTP Keep-Alive is disabled
Default True | | Basic.GracefulShutdownTimeout | Integer
Timeout for graceful shutdown (maximum 300 sec)
Default 10 | | Basic.MaxHeaderBytes | Integer
Max length of request header, in bytes
Default 10485 | -| Basic.MaxHeaderUriBytes | Integer
Max lenght of request URI, in bytes
Default 8192 | +| Basic.MaxHeaderUriBytes | Integer
Max length of request URI, in bytes
Default 8192 | | Basic.HostRuleConf | String
Path of [host config](server_data_conf/host_rule.data.md)
Default server_data_conf/host_rule.data | | Basic.VipRuleConf | String
Path of [VIP config](server_data_conf/vip_rule.data.md)
Default server_data_conf/vip_rule.data | | Basic.RouteRuleConf | String
Path of [route rule config](server_data_conf/route_rule.data.md)
Default server_data_conf/route_rule.data | @@ -44,7 +44,7 @@ bfe.conf is the core configuration file of BFE. | HttpsBasic.ServerCertConf | String
Path of [cert config](tls_conf/server_cert_conf.data.md)
Default tls_conf/server_cert_conf.data | | HttpsBasic.TlsRuleConf | String
Path of [tls rule config](tls_conf/tls_rule_conf.data.md)
Default tls_conf/tls_rule_conf.data | | HttpsBasic.CipherSuites | String
CipherSuites preference settings
Default | -| HttpsBasic.CurvePreferences | String
Curve perference settings
Default CurveP256 | +| HttpsBasic.CurvePreferences | String
Curve preference settings
Default CurveP256 | | HttpsBasic.EnableSslv2ClientHello | Boolean
Enable Sslv2ClientHello for compatible with ancient sslv3 client
Default True | | HttpsBasic.ClientCABaseDir | String
Base directory of client ca certificates
Note: filename suffix of ca certificate must be ".crt"
Default tls_conf/client_ca | | SessioCache.SessionCacheDisabled | Boolean
Disable tls session cache or not
Default True | @@ -166,7 +166,7 @@ CipherSuites=TLS_RSA_WITH_RC4_128_SHA CipherSuites=TLS_RSA_WITH_AES_128_CBC_SHA CipherSuites=TLS_RSA_WITH_AES_256_CBC_SHA -# supported curve perference settings +# supported curve preference settings # # curves implemented in golang: # CurveP256 diff --git a/docs/en_us/configuration/cluster_conf/cluster_table.data.md b/docs/en_us/configuration/cluster_conf/cluster_table.data.md index fea02c3da..cfb5d3ef0 100644 --- a/docs/en_us/configuration/cluster_conf/cluster_table.data.md +++ b/docs/en_us/configuration/cluster_conf/cluster_table.data.md @@ -17,7 +17,7 @@ cluster_table.data records the load balancing config among instances. | Config{v}{k} | String
name of subcluster | | Config{v}{v} | Object
config of subcluster(a list of instance) | -### Instance configuraton +### Instance configuration | Config Item | Description | | --------------------- | ------------------------------- | diff --git a/docs/en_us/configuration/server_data_conf/cluster_conf.data.md b/docs/en_us/configuration/server_data_conf/cluster_conf.data.md index 5668d2677..2eb2ff8fc 100644 --- a/docs/en_us/configuration/server_data_conf/cluster_conf.data.md +++ b/docs/en_us/configuration/server_data_conf/cluster_conf.data.md @@ -29,7 +29,7 @@ BackendConf is config for backend. | MaxIdleConnsPerHost | Int
Max idle connections to each backend per BFE. Default value is 2. | | MaxConnsPerHost | Int
Max number of concurrent connections to each backend per BFE. 0 means no limitation. Default value is 0. | | RetryLevel | Int
Retry level if request fail. 0: retry after connecting backend fails; 1: retry after connecting backend fails or forwarding GET request fails. Default value is 0. | -| BackendConf.OutlierDetectionHttpCode | String
Backend HTTP status code outlier detection.
"" means disable detection, "500" means "500" is considered as backend failure.
Supports two formats: "\[0-9\]{3}"(e.g "500"), and "\[0-9\]xx"(e.g "4xx"). Multiple status codes are seperated by "\|".
Default value is "", which means disable the detection. | +| BackendConf.OutlierDetectionHttpCode | String
Backend HTTP status code outlier detection.
"" means disable detection, "500" means "500" is considered as backend failure.
Supports two formats: "\[0-9\]{3}"(e.g "500"), and "\[0-9\]xx"(e.g "4xx"). Multiple status codes are separated by "\|".
Default value is "", which means disable the detection. | | FCGIConf | Object
Conf for FastCGI Protocol | | FCGIConf.Root | String
The root folder of the website | | FCGIConf.EnvVars | Map\[string\]string
Extra environment variable | diff --git a/docs/en_us/example/redirect.md b/docs/en_us/example/redirect.md index 0e495368d..7f9ccb4b2 100644 --- a/docs/en_us/example/redirect.md +++ b/docs/en_us/example/redirect.md @@ -47,4 +47,4 @@ DataPath = mod_redirect/redirect.data curl -H "host: example.org" "http://127.1:8080/test" ``` -The repsonse stuatus code should be 301, and the value of Location response Header should be "https://example.org/test". +The response stuatus code should be 301, and the value of Location response Header should be "https://example.org/test". diff --git a/docs/en_us/modules/mod_wasmplugin/mod_wasmplugin.md b/docs/en_us/modules/mod_wasmplugin/mod_wasmplugin.md new file mode 100644 index 000000000..1ffaf7171 --- /dev/null +++ b/docs/en_us/modules/mod_wasmplugin/mod_wasmplugin.md @@ -0,0 +1,89 @@ +# mod_wasmplugin + +## Introduction + +Bfe supports calling user-defined wasm plugins (following the proxy-wasm specification, https://github.com/proxy-wasm/spec) in the processing flow of http request/response. +The mod_wasmplugin module is responsible for running wasm plugins and invoking them according to user-defined rules.。 + +## Module Configuration + +### Description + +conf/mod_wasm/mod_wasm.conf + +| Config Item | Description | +| ---------------------| ------------------------------------------- | +| Basic.DataPath | String
Path of rule configuration | +| Basic.WasmPluginPath | String
Folder path for storing wasm plugin files | +| Log.OpenDebug | Boolean
Debug flag of module
Default value: `False` | + +### Example + +```ini +[Basic] +DataPath = mod_wasm/mod_wasm.data +WasmPluginPath=wasm_plugin/ +``` + +## Rule Configuration + +### Description + +| Config Item | Description | +| ------- | -------------------------------------------------------------- | +| Version | String
Version of config file | +| BeforeLocationRules | Object
List of wasm plugin rules for the HandleBeforeLocation callback point | +| BeforeLocationRules[] | Object
A rule | +| BeforeLocationRules[].Cond | String
Condition expression, See [Condition](../../condition/condition_grammar.md) | +| BeforeLocationRules[].PluginList | Object
List of wasm plugins to invoke when the condition is matched | +| BeforeLocationRules[].PluginList[] | String
Name of the wasm plugin | +| ProductRules | Object
Wasm plugin rules for each product | +| ProductRules{k} | String
Product name | +| ProductRules{v} | Object
List of wasm plugin rules | +| ProductRules{v}[] | Object
A rule | +| ProductRules{v}[].Cond | String
Condition expression, See [Condition](../../condition/condition_grammar.md) | +| ProductRules{v}[].PluginList | Object
List of wasm plugins to invoke when the condition is matched | +| ProductRules{v}[].PluginList[] | String
Name of the wasm plugin | +| PluginMap | Object
Dictionary of wasm plugins | +| PluginMap{k} | String
Name of the wasm plugin | +| PluginMap{v} | Object
A wasm plugin | +| PluginMap{v}.Name | String
Name of the wasm plugin | +| PluginMap{v}.WasmVersion | String
Version of the wasm file | +| PluginMap{v}.ConfVersion | String
Version of the configuration file | +| PluginMap{v}.InstanceNum | Integer
Number of running instances of the wasm plugin | + +### Example + +```json +{ + "Version": "20240101000000", + "BeforeLocationRules": [{ + "Cond": "req_path_prefix_in(\"/headers\", false)", + "PluginList": [ "headers" ] + }], + "ProductRules": { + "local_product": [{ + "Cond": "default_t()", + "PluginList": [] + }] + }, + "PluginMap": { + "headers": { + "Name": "headers", + "WasmVersion": "20240101000000", + "ConfVersion": "20240101000000", + "InstanceNum": 20 + } + } +} +``` + +## Wasm Plugin Files + +For any wasm plugin (with name `PlugName` for example) in the PluginMap, the following files need to be prepared in advance and stored in the path: ``/`PlugName`/ + +| File Name | Description | +| ------- | -------------------------------------------------------------- | +| PlugName.wasm | wasm file | +| PlugName.md5 | md5 file of PlugName.wasm | +| PlugName.conf | Custom configuration file for the plugin | diff --git a/docs/en_us/operation/api.md b/docs/en_us/operation/api.md index c60b77c89..385c033c0 100644 --- a/docs/en_us/operation/api.md +++ b/docs/en_us/operation/api.md @@ -1,6 +1,6 @@ # Management API -BFE provides a set of management APIs for metrics exposing, configruation reloading, debugging and profiling etc. It should not publicly exposing the APIs, keeping them restricted to internal networks. +BFE provides a set of management APIs for metrics exposing, configurations reloading, debugging and profiling etc. It should not publicly exposing the APIs, keeping them restricted to internal networks. ## Configuration diff --git a/docs/en_us/operation/command.md b/docs/en_us/operation/command.md index ffef4f491..679a62e1f 100644 --- a/docs/en_us/operation/command.md +++ b/docs/en_us/operation/command.md @@ -30,4 +30,4 @@ Display verbose version information and exit. By default, this flag is set false * -h -Display help infomation and exit. By default, this flag is set false. +Display help information and exit. By default, this flag is set false. diff --git a/docs/mkdocs_en.yml b/docs/mkdocs_en.yml index 357fcd9a9..14d14c956 100644 --- a/docs/mkdocs_en.yml +++ b/docs/mkdocs_en.yml @@ -66,7 +66,7 @@ nav: - 'About': 'ABOUT.md' - 'Introduction': - 'Overview': 'introduction/overview.md' - - 'Comparsion to similar systems': 'introduction/comparison.md' + - 'Comparison to similar systems': 'introduction/comparison.md' - 'Design overview': - 'Terminology': 'introduction/terminology.md' - 'Traffic fowarding model': 'introduction/forward_model.md' @@ -127,6 +127,7 @@ nav: - 'mod_rewrite': 'modules/mod_rewrite/mod_rewrite.md' - 'mod_static': 'modules/mod_static/mod_static.md' - 'mod_tag': 'modules/mod_tag/mod_tag.md' + - 'mod_tcp_keepalive': 'modules/mod_tcp_keepalive/mod_tcp_keepalive.md' - 'mod_trace': 'modules/mod_trace/mod_trace.md' - 'mod_trust_clientip': 'modules/mod_trust_clientip/mod_trust_clientip.md' - 'mod_userid': 'modules/mod_userid/mod_userid.md' @@ -188,6 +189,7 @@ nav: - 'Cookie': 'condition/request/cookie.md' - 'Tag': 'condition/request/tag.md' - 'IP': 'condition/request/ip.md' + - 'Context': 'condition/request/context.md' - 'Response related primitives': - 'Code': 'condition/response/code.md' - 'Header': 'condition/response/header.md' diff --git a/docs/mkdocs_zh.yml b/docs/mkdocs_zh.yml index 72ff8d18a..073136fce 100644 --- a/docs/mkdocs_zh.yml +++ b/docs/mkdocs_zh.yml @@ -127,6 +127,7 @@ nav: - 'mod_rewrite': 'modules/mod_rewrite/mod_rewrite.md' - 'mod_static': 'modules/mod_static/mod_static.md' - 'mod_tag': 'modules/mod_tag/mod_tag.md' + - 'mod_tcp_keepalive': 'modules/mod_tcp_keepalive/mod_tcp_keepalive.md' - 'mod_trace': 'modules/mod_trace/mod_trace.md' - 'mod_trust_clientip': 'modules/mod_trust_clientip/mod_trust_clientip.md' - 'mod_userid': 'modules/mod_userid/mod_userid.md' @@ -188,6 +189,7 @@ nav: - 'Cookie': 'condition/request/cookie.md' - 'Tag': 'condition/request/tag.md' - 'IP': 'condition/request/ip.md' + - 'Context': 'condition/request/context.md' - '响应相关条件原语': - 'Code': 'condition/response/code.md' - 'Header': 'condition/response/header.md' diff --git a/docs/zh_cn/DOWNLOAD.md b/docs/zh_cn/DOWNLOAD.md index 14f06ca29..6155d58b4 100644 --- a/docs/zh_cn/DOWNLOAD.md +++ b/docs/zh_cn/DOWNLOAD.md @@ -1,5 +1,27 @@ BFE提供预编译二进制文件供下载。也可在GitHub下载各平台[最新版本BFE](https://github.com/bfenetworks/bfe/releases)。 +## bfe v1.6.0 + +* 2022-10-25 [发布说明](https://github.com/bfenetworks/bfe/releases/tag/v1.6.0) + +| 文件名 | 操作系统 | 平台 | 大小 | SHA256检验和 | +| --------- | -------- | ---- | ---- | ------------ | +| [bfe_1.6.0_darwin_amd64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.6.0/bfe_1.6.0_darwin_amd64.tar.gz) | darwin | amd 64 | 9.3M | 61c8c5cab55c2b0ae7a5a0c027559efceddf58924fec7ff7dc9342e9ae8800e6 | +| [bfe_1.6.0_linux_amd64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.6.0/bfe_1.6.0_linux_amd64.tar.gz) | linux | amd64 | 9.56 MB | 26510e09a7da8618e860beb58823b12b4305bf83a48fde4d09fae5f5c4d18aba | +| [bfe_1.6.0_linux_arm64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.6.0/bfe_1.6.0_linux_arm64.tar.gz) | linux | arm64 | 8.84 MB | 135d3d8f45612633958df923a876b5481ca5d4221f3d997de952cfd797ccd77e | +| [bfe_1.6.0_windows_amd64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.6.0/bfe_1.6.0_windows_amd64.tar.gz) | windows | amd64 | 9.64 MB | 31e331335c87c2c44faf6dce915a53f5b7fada6c1925580ee2e19db6933fe450 | + +## bfe v1.5.0 + +* 2022-01-11 [发布说明](https://github.com/bfenetworks/bfe/releases/tag/v1.5.0) + +| 文件名 | 操作系统 | 平台 | 大小 | SHA256检验和 | +| --------- | -------- | ---- | ---- | ------------ | +| [bfe_1.5.0_darwin_amd64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.5.0/bfe_1.5.0_darwin_amd64.tar.gz) | darwin | amd 64 | 9.29M | accf8ccebaf98ab38028f7beb8c4da0825a7c62976063bd844cebeb2d57760b0 | +| [bfe_1.5.0_linux_amd64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.5.0/bfe_1.5.0_linux_amd64.tar.gz) | linux | amd64 | 9.55 MB | a74818d26462995b4f79c72184bee005c3aa161d9cb7af42b41d18791733336d | +| [bfe_1.5.0_linux_arm64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.5.0/bfe_1.5.0_linux_arm64.tar.gz) | linux | arm64 | 8.83 MB | d9ee8877c679d2b7af2d1fa60cd4a498bc252c5832df0f8ced771cae1d36fa58 | +| [bfe_1.5.0_windows_amd64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.5.0/bfe_1.5.0_windows_amd64.tar.gz) | windows | amd64 | 9.63 MB | a9f54df2a2374bf53ba6ad1d728f82a27f2b2c8aaa6ae854141c58105a905992 | + ## bfe v1.4.0 * 2021-12-10 [发布说明](https://github.com/bfenetworks/bfe/releases/tag/v1.4.0) diff --git a/docs/zh_cn/SUMMARY.md b/docs/zh_cn/SUMMARY.md index b80e52c08..792126aeb 100644 --- a/docs/zh_cn/SUMMARY.md +++ b/docs/zh_cn/SUMMARY.md @@ -64,6 +64,7 @@ * [mod_trust_clientip](modules/mod_trust_clientip/mod_trust_clientip.md) * [mod_userid](modules/mod_userid/mod_userid.md) * [mod_secure_link](modules/mod_secure_link/mod_secure_link.md) + * [mod_wasmplugin](modules/mod_wasmplugin/mod_wasmplugin.md) * 运维管理 * [命令行工具及参数](operation/command.md) * [环境变量说明](operation/env_var.md) diff --git a/docs/zh_cn/configuration/bfe.conf.md b/docs/zh_cn/configuration/bfe.conf.md index d79ac39c3..d8a18d17c 100644 --- a/docs/zh_cn/configuration/bfe.conf.md +++ b/docs/zh_cn/configuration/bfe.conf.md @@ -170,7 +170,7 @@ CipherSuites=TLS_RSA_WITH_RC4_128_SHA CipherSuites=TLS_RSA_WITH_AES_128_CBC_SHA CipherSuites=TLS_RSA_WITH_AES_256_CBC_SHA -# supported curve perference settings +# supported curve preference settings # # curves implemented in golang: # CurveP256 diff --git a/docs/zh_cn/modules/mod_wasmplugin/mod_wasmplugin.md b/docs/zh_cn/modules/mod_wasmplugin/mod_wasmplugin.md new file mode 100644 index 000000000..11fb41f36 --- /dev/null +++ b/docs/zh_cn/modules/mod_wasmplugin/mod_wasmplugin.md @@ -0,0 +1,88 @@ +# mod_wasmplugin + +## 模块简介 + +Bfe 支持在 http request/response 的处理流程中引入用户自定义的 wasm插件 (遵循 proxy-wasm 规范, https://github.com/proxy-wasm/spec)。 +mod_wasmplugin 负责运行 wasm插件,并根据自定义规则调用 wasm插件。 + +## 基础配置 + +### 配置描述 + +模块配置文件: conf/mod_wasm/mod_wasm.conf + +| 配置项 | 描述 | +| ---------------------| ------------------------------------------- | +| Basic.DataPath | String
wasm插件规则配置的文件路径 | +| Basic.WasmPluginPath | String
存放wasm插件文件的文件夹路径 | +| Log.OpenDebug | Boolean
是否开启 debug 日志
默认值False | + +### 配置示例 + +```ini +[Basic] +DataPath = mod_wasm/mod_wasm.data +WasmPluginPath=wasm_plugin/ +``` + +## wasm插件规则配置 + +### 配置描述 + +| 配置项 | 描述 | +| ------- | -------------------------------------------------------------- | +| Version | String
配置文件版本 | +| BeforeLocationRules | Object
HandleBeforeLocation 回调点的 wasm插件规则列表 | +| BeforeLocationRules[] | Object
wasm插件规则详细信息 | +| BeforeLocationRules[].Cond | String
描述匹配请求或连接的条件, 语法详见[Condition](../../condition/condition_grammar.md) | +| BeforeLocationRules[].PluginList | Object
条件匹配时执行的wasm插件列表 | +| BeforeLocationRules[].PluginList[] | String
wasm插件名 | +| ProductRules | Object
各产品线的 wasm插件规则列表 | +| ProductRules{k} | String
产品线名称 | +| ProductRules{v} | Object
产品线下的 wasm插件规则列表 | +| ProductRules{v}[] | Object
wasm插件规则详细信息 | +| ProductRules{v}[].Cond | String
描述匹配请求或连接的条件, 语法详见[Condition](../../condition/condition_grammar.md) | +| ProductRules{v}[].PluginList | Object
条件匹配时执行的wasm插件列表 | +| ProductRules{v}[].PluginList[] | String
wasm插件名 | +| PluginMap | Object
wasm插件字典 | +| PluginMap{k} | String
wasm插件名 | +| PluginMap{v} | Object
wasm插件详细信息 | +| PluginMap{v}.Name | String
wasm插件名 | +| PluginMap{v}.WasmVersion | String
wasm插件文件版本 | +| PluginMap{v}.ConfVersion | String
wasm插件配置文件版本 | +| PluginMap{v}.InstanceNum | Integer
wasm插件运行实例数 | + +### 配置示例 + +```json +{ + "Version": "20240101000000", + "BeforeLocationRules": [{ + "Cond": "req_path_prefix_in(\"/headers\", false)", + "PluginList": [ "headers" ] + }], + "ProductRules": { + "local_product": [{ + "Cond": "default_t()", + "PluginList": [] + }] + }, + "PluginMap": { + "headers": { + "Name": "headers", + "WasmVersion": "20240101000000", + "ConfVersion": "20240101000000", + "InstanceNum": 20 + } + } +} +``` + +## wasm插件文件 + +对于 PluginMap 中的任意一个 wasm插件(名为`PlugName`),需要预先准备好以下文件,存放于路径: ``/`PlugName`/ +| 文件名 | 描述 | +| ------- | -------------------------------------------------------------- | +| PlugName.wasm | wasm 文件 | +| PlugName.md5 | PlugName.wasm 的 md5 文件 | +| PlugName.conf | 插件自定义配置文件 | diff --git a/go.mod b/go.mod index 04ee3e5fd..d1b2abf87 100644 --- a/go.mod +++ b/go.mod @@ -1,14 +1,15 @@ module github.com/bfenetworks/bfe -go 1.17 +go 1.21 + +toolchain go1.22.2 require ( github.com/abbot/go-http-auth v0.4.1-0.20181019201920-860ed7f246ff - github.com/andybalholm/brotli v1.0.0 + github.com/andybalholm/brotli v1.0.2 github.com/armon/go-radix v1.0.0 github.com/asergeyev/nradix v0.0.0-20170505151046-3872ab85bb56 // indirect github.com/baidu/go-lib v0.0.0-20200819072111-21df249f5e6a - github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd // indirect github.com/golang-jwt/jwt v3.2.2+incompatible github.com/gomodule/redigo v2.0.0+incompatible github.com/json-iterator/go v1.1.12 @@ -22,25 +23,29 @@ require ( github.com/russross/blackfriday/v2 v2.0.1 github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect github.com/spaolacci/murmur3 v1.1.0 - github.com/stretchr/testify v1.7.0 + github.com/stretchr/testify v1.9.0 github.com/tjfoc/gmsm v1.3.2 - github.com/uber/jaeger-client-go v2.22.1+incompatible - github.com/uber/jaeger-lib v2.2.0+incompatible + github.com/uber/jaeger-client-go v2.25.0+incompatible + github.com/uber/jaeger-lib v2.4.0+incompatible github.com/zmap/go-iptree v0.0.0-20170831022036-1948b1097e25 go.elastic.co/apm v1.11.0 go.elastic.co/apm/module/apmot v1.7.2 - go.uber.org/atomic v1.6.0 // indirect + go.uber.org/atomic v1.7.0 // indirect go.uber.org/automaxprocs v1.4.0 - golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 - golang.org/x/net v0.0.0-20211216030914-fe4d6282115f - golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e - golang.org/x/tools v0.1.8 // indirect + golang.org/x/crypto v0.25.0 + golang.org/x/net v0.25.0 + golang.org/x/sys v0.22.0 gopkg.in/gcfg.v1 v1.2.3 - gopkg.in/square/go-jose.v2 v2.4.1 gopkg.in/warnings.v0 v0.1.2 // indirect ) require ( + github.com/bfenetworks/proxy-wasm-go-host v0.0.0-20241202144118-62704e5df808 + github.com/go-jose/go-jose/v4 v4.0.4 +) + +require ( + github.com/HdrHistogram/hdrhistogram-go v1.0.1 // indirect github.com/aymerick/douceur v0.2.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/elastic/go-sysinfo v1.1.1 // indirect @@ -48,18 +53,20 @@ require ( github.com/gorilla/css v1.0.0 // indirect github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 // indirect github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901 // indirect - github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492 // indirect github.com/oschwald/maxminddb-golang v1.6.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/procfs v0.0.3 // indirect + github.com/prometheus/procfs v0.2.0 // indirect github.com/santhosh-tekuri/jsonschema v1.2.4 // indirect + github.com/tetratelabs/wazero v1.2.1 // indirect go.elastic.co/apm/module/apmhttp v1.7.2 // indirect go.elastic.co/fastjson v1.1.0 // indirect - golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect - golang.org/x/text v0.3.7 // indirect - google.golang.org/grpc v1.22.1 // indirect + golang.org/x/text v0.16.0 // indirect + google.golang.org/grpc v1.56.3 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect howett.net/plist v0.0.0-20181124034731-591f970eefbb // indirect ) + +// replace github.com/bfenetworks/proxy-wasm-go-host => ../proxy-wasm-go-host diff --git a/go.sum b/go.sum index 53d5a12f5..6532d8530 100644 --- a/go.sum +++ b/go.sum @@ -1,11 +1,13 @@ 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/HdrHistogram/hdrhistogram-go v1.0.1 h1:GX8GAYDuhlFQnI2fRDHQhTlkHMz8bEn0jTI6LJU0mpw= +github.com/HdrHistogram/hdrhistogram-go v1.0.1/go.mod h1:BWJ+nMSHY3L41Zj7CA3uXnloDp7xxV0YvstAE7nKTaM= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/abbot/go-http-auth v0.4.1-0.20181019201920-860ed7f246ff h1:9ZqcMQ0fB+ywKACVjGfZM4C7Uq9D5rq0iSmwIjX187k= github.com/abbot/go-http-auth v0.4.1-0.20181019201920-860ed7f246ff/go.mod h1:Cz6ARTIzApMJDzh5bRMSUou6UMSp0IEXg9km/ci7TJM= -github.com/andybalholm/brotli v1.0.0 h1:7UCwP93aiSfvWpapti8g88vVVGp2qqtGyePsSuDafo4= -github.com/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= +github.com/andybalholm/brotli v1.0.2 h1:JKnhI/XQ75uFBTiuzXpzFrUriDPiZjlOSzh6wXogP0E= +github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/asergeyev/nradix v0.0.0-20170505151046-3872ab85bb56 h1:Wi5Tgn8K+jDcBYL+dIMS1+qXYH2r7tpRAyBgqrWfQtw= @@ -14,9 +16,10 @@ github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuP github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= github.com/baidu/go-lib v0.0.0-20200819072111-21df249f5e6a h1:m/u39GNhkoUSC9WxTuM5hWShEqEfVioeXDiqiQd6tKg= github.com/baidu/go-lib v0.0.0-20200819072111-21df249f5e6a/go.mod h1:FneHDqz3wLeDGdWfRyW4CzBbCwaqesLGIFb09N80/ww= +github.com/bfenetworks/proxy-wasm-go-host v0.0.0-20241202144118-62704e5df808 h1:v0ckUMaZJFe8XvoM9x3kn+lDtMfI9EvpFadiOiV/s8A= +github.com/bfenetworks/proxy-wasm-go-host v0.0.0-20241202144118-62704e5df808/go.mod h1:VG3ZZ8Zg7dYkla2hHy9UsX0GLl/dgJYP4IxuPvoq+/U= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cucumber/godog v0.8.1 h1:lVb+X41I4YDreE+ibZ50bdXmySxgRviYFgKY6Aw4XE8= github.com/cucumber/godog v0.8.1/go.mod h1:vSh3r/lM+psC1BPXvdkSEuNjmXfpVqrMGYAElF6hxnA= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -31,6 +34,8 @@ github.com/elastic/go-windows v1.0.0 h1:qLURgZFkkrYyTTkvYpsZIgf83AUsdIHfvlJaqaZ7 github.com/elastic/go-windows v1.0.0/go.mod h1:TsU0Nrp7/y3+VwE82FoZF8gC/XFg/Elz6CcloAxnPgU= github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/go-jose/go-jose/v4 v4.0.4 h1:VsjPI33J0SB9vQM6PLmNjoHqMQNGPiZ0rHL7Ni7Q6/E= +github.com/go-jose/go-jose/v4 v4.0.4/go.mod h1:NKb5HO1EZccyMpiZNbdUw/14tiXNyUJh188dfnMCAfc= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= @@ -43,8 +48,10 @@ github.com/gomodule/redigo v2.0.0+incompatible h1:K/R+8tc58AaqLkqG2Ol3Qk+DR/TlNu github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= @@ -60,20 +67,24 @@ github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901 h1:rp+c0RAYOWj8 github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/microcosm-cc/bluemonday v1.0.16 h1:kHmAq2t7WPWLjiGvzKa5o3HzSfahUKiOq7fAPUiMNIc= github.com/microcosm-cc/bluemonday v1.0.16/go.mod h1:Z0r70sCuXHig8YpBzCc5eGHAap2K7e/u082ZUpDRRqM= github.com/miekg/dns v1.1.29 h1:xHBEhR+t5RzcFJjBLJlax2daXOrTYtr9z4WdKEfWFzg= github.com/miekg/dns v1.1.29/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= @@ -99,9 +110,12 @@ github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6J github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/procfs v0.0.0-20190425082905-87a4384529e0/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.3 h1:CTwfnzjQ+8dS6MhHHu4YswVAD99sL2wjPqP+VkURmKE= github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.2.0 h1:wH4vA7pcjKuZzjF7lM8awk4fnuJO6idemZXoKnULUx4= +github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/santhosh-tekuri/jsonschema v1.2.4 h1:hNhW8e7t+H1vgY+1QeEQpveR6D4+OwKPXCfD2aieJis= @@ -112,18 +126,22 @@ github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0b github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/tetratelabs/wazero v1.2.1 h1:J4X2hrGzJvt+wqltuvcSjHQ7ujQxA9gb6PeMs4qlUWs= +github.com/tetratelabs/wazero v1.2.1/go.mod h1:wYx2gNRg8/WihJfSDxA1TIL8H+GkfLYm+bIfbblu9VQ= github.com/tjfoc/gmsm v1.3.2 h1:7JVkAn5bvUJ7HtU08iW6UiD+UTmJTIToHCfeFzkcCxM= github.com/tjfoc/gmsm v1.3.2/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w= -github.com/uber/jaeger-client-go v2.22.1+incompatible h1:NHcubEkVbahf9t3p75TOCR83gdUHXjRJvjoBh1yACsM= -github.com/uber/jaeger-client-go v2.22.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -github.com/uber/jaeger-lib v2.2.0+incompatible h1:MxZXOiR2JuoANZ3J6DE/U0kSFv/eJ/GfSYVCjK7dyaw= -github.com/uber/jaeger-lib v2.2.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= +github.com/uber/jaeger-client-go v2.25.0+incompatible h1:IxcNZ7WRY1Y3G4poYlx24szfsn/3LvK9QHCq9oQw8+U= +github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= +github.com/uber/jaeger-lib v2.4.0+incompatible h1:fY7QsGQWiCt8pajv4r7JEvmATdCVaWxXbjwyYwsNaLQ= +github.com/uber/jaeger-lib v2.4.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/zmap/go-iptree v0.0.0-20170831022036-1948b1097e25 h1:LRoXAcKX48QV4LV23W5ZtsG/MbJOgNUNvWiXwM0iLWw= github.com/zmap/go-iptree v0.0.0-20170831022036-1948b1097e25/go.mod h1:qOasALtPByO1Jk6LhgpNv6htPMK2QJfiGorUk57nO/U= go.elastic.co/apm v1.7.2/go.mod h1:tCw6CkOJgkWnzEthFN9HUP1uL3Gjc/Ur6m7gRPLaoH0= @@ -136,21 +154,18 @@ go.elastic.co/apm/module/apmot v1.7.2/go.mod h1:VD2nUkebUPrP1hqIarimIEsoM9xyuK0l go.elastic.co/fastjson v1.0.0/go.mod h1:PmeUOMMtLHQr9ZS9J9owrAVg0FkaZDRZJEFTTGHtchs= go.elastic.co/fastjson v1.1.0 h1:3MrGBWWVIxe/xvsbpghtkFoPciPhOCmjsR/HfwEeQR4= go.elastic.co/fastjson v1.1.0/go.mod h1:boNGISWMjQsUPy/t6yqt2/1Wx4YNPSe+mZjlyw9vKKI= -go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/automaxprocs v1.4.0 h1:CpDZl6aOlLhReez+8S3eEotD7Jx0Os++lemPlMULQP0= go.uber.org/automaxprocs v1.4.0/go.mod h1:/mTEdr7LvHhs0v7mjdxDreTz1OG5zdZGqgOnhWiR/+Q= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -159,17 +174,16 @@ golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211216030914-fe4d6282115f h1:hEYJvxw1lSnWIl8X9ofsYMklzaDs90JI2az5YMd4fPM= -golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= 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-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/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.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -177,26 +191,23 @@ golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191025021431-6c3a3bfe00ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191224085550-c709ea063b76/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 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/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.1.8 h1:P1HhGGuLW4aAclzjtmJdf0mJOjVUZUzOTqkAkWL+l6w= -golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -204,16 +215,17 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= -google.golang.org/grpc v1.22.1 h1:/7cs52RnTJmD43s3uxzlq2U7nqVTd/37viQwMrMNlOM= google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.56.3 h1:8I4C0Yq1EjstUzUJzpcRVbuYA2mODtEmpWiQoN/b2nc= +google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3 h1:m8OOJ4ccYHnx2f4gQwpno8nAX5OGOh7RLaaz0pj3Ogs= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/square/go-jose.v2 v2.4.1 h1:H0TmLt7/KmzlrDOpa1F+zr0Tk90PbJYBfsVUmRLrf9Y= -gopkg.in/square/go-jose.v2 v2.4.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= From 5e12c28d122923ae6601d795c77f658e17fbc663 Mon Sep 17 00:00:00 2001 From: Song Jian Date: Tue, 21 Jan 2025 17:55:50 +0800 Subject: [PATCH 2/2] update website files --- docs/en_us/DOWNLOAD.md | 11 +++++++++++ docs/mkdocs_en.yml | 3 +++ docs/mkdocs_zh.yml | 3 +++ docs/zh_cn/DOWNLOAD.md | 11 +++++++++++ 4 files changed, 28 insertions(+) diff --git a/docs/en_us/DOWNLOAD.md b/docs/en_us/DOWNLOAD.md index b7d328448..cc7618169 100644 --- a/docs/en_us/DOWNLOAD.md +++ b/docs/en_us/DOWNLOAD.md @@ -1,5 +1,16 @@ We provide precompiled binaries for bfe components. [Download the latest release](https://github.com/bfenetworks/bfe/releases) of BFE for your platform. +## bfe v1.7.0 + +* 2025-01-19 [Release notes](https://github.com/bfenetworks/bfe/releases/tag/v1.7.0) + +| File Name | OS | Arch | Size | SHA256 Checksum | +| ------------------------------------------------------------ | -------- | --------- | ------ | ------------------------------------------------------------ | +| [bfe_1.7.0_darwin_amd64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.7.0/bfe_1.7.0_darwin_amd64.tar.gz) | darwin | amd 64 | 12.2MB | ca8704784989cf84590552a0a641b284c7ff377fe81c78ad49ada04a364d950d | +| [bfe_1.7.0_linux_amd64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.7.0/bfe_1.7.0_linux_amd64.tar.gz) | linux | amd64 | 12.4MB | ef8886e8068c6323070e689da6d2958f0f129f63d96d14b3c426cdce20c2c0da | +| [bfe_1.7.0_linux_arm64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.7.0/bfe_1.7.0_linux_arm64.tar.gz) | linux | arm64 | 11.6MB | 53c0fe287ac93bca3d4454cfb22b5f0a11c47cd5bb51626453d4672852f17cb8 | +| [bfe_1.7.0_windows_amd64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.7.0/bfe_1.7.0_windows_amd64.tar.gz) | windows | amd64 | 12.5MB | 2579940f8a1854cb5de1f4bd6197e7615b53c784db1ef17ed5063fcfc1d82598 | + ## bfe v1.6.0 * 2022-10-25 [Release notes](https://github.com/bfenetworks/bfe/releases/tag/v1.6.0) diff --git a/docs/mkdocs_en.yml b/docs/mkdocs_en.yml index 14d14c956..01bf8851d 100644 --- a/docs/mkdocs_en.yml +++ b/docs/mkdocs_en.yml @@ -115,6 +115,7 @@ nav: - 'mod_auth_request': 'modules/mod_auth_request/mod_auth_request.md' - 'mod_block': 'modules/mod_block/mod_block.md' - 'mod_compress': 'modules/mod_compress/mod_compress.md' + - 'mod_cors': 'modules/mod_cors/mod_cors.md' - 'mod_doh': 'modules/mod_doh/mod_doh.md' - 'mod_errors': 'modules/mod_errors/mod_errors.md' - 'mod_geo': 'modules/mod_geo/mod_geo.md' @@ -125,12 +126,14 @@ nav: - 'mod_prison': 'modules/mod_prison/mod_prison.md' - 'mod_redirect': 'modules/mod_redirect/mod_redirect.md' - 'mod_rewrite': 'modules/mod_rewrite/mod_rewrite.md' + - 'mod_secure_link': 'modules/mod_secure_link/mod_secure_link.md' - 'mod_static': 'modules/mod_static/mod_static.md' - 'mod_tag': 'modules/mod_tag/mod_tag.md' - 'mod_tcp_keepalive': 'modules/mod_tcp_keepalive/mod_tcp_keepalive.md' - 'mod_trace': 'modules/mod_trace/mod_trace.md' - 'mod_trust_clientip': 'modules/mod_trust_clientip/mod_trust_clientip.md' - 'mod_userid': 'modules/mod_userid/mod_userid.md' + - 'mod_wasmplugin': 'modules/mod_wasmplugin/mod_wasmplugin.md' - 'Operations': - 'Command line options': 'operation/command.md' - 'Environment variables': 'operation/env_var.md' diff --git a/docs/mkdocs_zh.yml b/docs/mkdocs_zh.yml index 073136fce..7988e56f4 100644 --- a/docs/mkdocs_zh.yml +++ b/docs/mkdocs_zh.yml @@ -115,6 +115,7 @@ nav: - 'mod_auth_request': 'modules/mod_auth_request/mod_auth_request.md' - 'mod_block': 'modules/mod_block/mod_block.md' - 'mod_compress': 'modules/mod_compress/mod_compress.md' + - 'mod_cors': 'modules/mod_cors/mod_cors.md' - 'mod_doh': 'modules/mod_doh/mod_doh.md' - 'mod_errors': 'modules/mod_errors/mod_errors.md' - 'mod_geo': 'modules/mod_geo/mod_geo.md' @@ -125,12 +126,14 @@ nav: - 'mod_prison': 'modules/mod_prison/mod_prison.md' - 'mod_redirect': 'modules/mod_redirect/mod_redirect.md' - 'mod_rewrite': 'modules/mod_rewrite/mod_rewrite.md' + - 'mod_secure_link': 'modules/mod_secure_link/mod_secure_link.md' - 'mod_static': 'modules/mod_static/mod_static.md' - 'mod_tag': 'modules/mod_tag/mod_tag.md' - 'mod_tcp_keepalive': 'modules/mod_tcp_keepalive/mod_tcp_keepalive.md' - 'mod_trace': 'modules/mod_trace/mod_trace.md' - 'mod_trust_clientip': 'modules/mod_trust_clientip/mod_trust_clientip.md' - 'mod_userid': 'modules/mod_userid/mod_userid.md' + - 'mod_wasmplugin': 'modules/mod_wasmplugin/mod_wasmplugin.md' - '运维管理': - '命令行工具及参数': 'operation/command.md' - '环境变量说明': 'operation/env_var.md' diff --git a/docs/zh_cn/DOWNLOAD.md b/docs/zh_cn/DOWNLOAD.md index 6155d58b4..a5ac1d49a 100644 --- a/docs/zh_cn/DOWNLOAD.md +++ b/docs/zh_cn/DOWNLOAD.md @@ -1,5 +1,16 @@ BFE提供预编译二进制文件供下载。也可在GitHub下载各平台[最新版本BFE](https://github.com/bfenetworks/bfe/releases)。 +## bfe v1.7.0 + +* 2025-01-19 [发布说明](https://github.com/bfenetworks/bfe/releases/tag/v1.7.0) + +| 文件名 | 操作系统 | 平台 | 大小 | SHA256检验和 | +| --------- | -------- | ---- | ---- | ------------ | +| [bfe_1.7.0_darwin_amd64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.7.0/bfe_1.7.0_darwin_amd64.tar.gz) | darwin | amd 64 | 12.2MB | ca8704784989cf84590552a0a641b284c7ff377fe81c78ad49ada04a364d950d | +| [bfe_1.7.0_linux_amd64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.7.0/bfe_1.7.0_linux_amd64.tar.gz) | linux | amd64 | 12.4MB | ef8886e8068c6323070e689da6d2958f0f129f63d96d14b3c426cdce20c2c0da | +| [bfe_1.7.0_linux_arm64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.7.0/bfe_1.7.0_linux_arm64.tar.gz) | linux | arm64 | 11.6MB | 53c0fe287ac93bca3d4454cfb22b5f0a11c47cd5bb51626453d4672852f17cb8 | +| [bfe_1.7.0_windows_amd64.tar.gz](https://github.com/bfenetworks/bfe/releases/download/v1.7.0/bfe_1.7.0_windows_amd64.tar.gz) | windows | amd64 | 12.5MB | 2579940f8a1854cb5de1f4bd6197e7615b53c784db1ef17ed5063fcfc1d82598 | + ## bfe v1.6.0 * 2022-10-25 [发布说明](https://github.com/bfenetworks/bfe/releases/tag/v1.6.0)