Project: BFE (Orchestration & Management / Service Proxy)
File: CHANGELOG.md

<!-- This changelog should always be read on `master` branch. Its contents on other branches does not necessarily reflect the changes. --> All notable changes to this project will be documented in this file. The format is based on , and this project adheres to . Allow user to disable monitor port () Support HTTP2 fingerprint () Documents optimization Optimize idle connection handling () Performance optimize in smooth least connection balancing algorithm() Miscellaneous golang dependency updates Miscellaneous improvements in makefile and other CI tools modtrustclientip: fix incorrect private IP address range () arm build error in golang 1.18 Add modtcpkeepalive to support custom TCP KeepAlive configuration Documents optimization Change JSON parser: use json-iterator to replace encoding/json Optimize error handling in io.Write Fix issue in go.mod which may cause build error (Issue #933) Fix http security issue (Issue #940) Fix http security issue (Issue #941) Documents optimization Upgrade golang version from 1.13 to 1.17 mod_markdown: upgrade bluemonday version to 1.0.16 Optimize mutex Improve Makefile and pre-commit Support basic route rules that are similar to k8s ingress rules Documents optimization Ignore GREASE values for JA3 fingerprint Set GOMAXPROCS according to real CPU quota if running on container Support condition primitive bfetimerange/bfeperiodictime_range Support URI hash strategy mod_block: support global request rules and ALLOW action mod_header: support variables about client certificate mod_access: support log to single file and stdout Change primitive params of reqcontextvalue_in Support JA3 fingerprint for SSL/TLS client Support SlowStart to allow a backend instance gradually recover its weight Add maxConnPerHost to limit the number of connections to a backend mod_header: add header renaming actions Merge some updates from golang/net/textproto Merge some updates from golang/net/http Merge some updates from golang/net/http2 Documents optimization Change outlierDetectionLevel to OutlierDetectionHttpCode Fix panic when write internal response timeout Fix unit test in bfespdy/frametest.go under go 1.16 Fix config loading for multi-value option Add condition primitive: reqpathcontain/reqpathelementprefixin/reqcontextvalue_in Add outlier detection options Add mod_waf with rule to detect exploitation of "Shellshock" GNU Bash RCE vulnerability. Fix build issue under go1.15 environment Fix processing X-Forwarded-For header value Fix write timeout of internal response generated by bfe Support gRPC over HTTP/2 Support communication with FastCGI server Reduce objects number by release some objects that are not used as soon as possible Replace ffjson with json-iterator net/textproto: turn an ancient DoS BUG annotation into a comment Optimize processing of new connections under PROXY mode Support integration testing in CI Add mod_cors to enable cross-origin resource sharing Add modsecurelink to check authenticity and limit lifetime of links Support PROXY protocol for TCP connections to backend Support checking revocation status of the client certificate modauthrequest: send request with X-Forwarded-Method/X-Forwarded-Uri headers mod_userid: support global rules modkeylog: support conditional logging Add arm64 support for goreleaser Create listeners in the final initialization step Change package name to

Drops words like blacklist from programming to make vocabulary more inclusive Remove legacy signature of response Fix getTransport() and modify transports map with write lock Fix textproto: not normalize headers with spaces before the colon (CVE-2019-16276) modauthrequest: authorize clients based on thirdparty authorization service mod_trace: support tracing based on Elastic APM mod_compress: support brotli algorithm mod_rewrite: add HostSuffixReplace action Add condition primitive: reqhosttagin/reqhostsuffixin Add static content of website based on mkdocs Documents optimization Refactor and simplify modauthjwt Remove legacy type of Layer4LoadBalancer Support loading dynamic modules that may be written and complied by thirdparty vendors Add modauthjwt for JWT authentication mod_trace: support distributed tracing based on jaeger mod_doh: support timeout for DNS requests mod_doh: support edns-client-subnet (ECS) mod_doh: optimize max-age for DoH response Optimize textproto reader cache Documents optimization Change base directory of ServerCertFile/ServerKeyFile to ConfRoot Fix failed unit tests about parsing request line under go1.14 environment Add mod_trace for distributed tracing based on zipkin Add mod_doh for processing DNS over HTTPS(DoH) requests Support TLS protocol with SM related ciphersuites mod_header: add cookie related actions Documents optimization Disable sanitization of cookie value mod_access support NCSA Common Log Format(CLF) and W3C Extended Log Format(ELF) mod_static suuport HTTP HEAD method Add mod_userid for client identification Add mod_tag for tagging and tracking groups of requests http cookie: support Expires attribute in GMT format http cookie: support SameSite attribute Add static check in Makefile Compiling on Windows OS is supported Documents optimization Fix a bug that causes invalid ips are parsed and treated as domain names Add mod_prison to limit the amount of requests a user can make in a given period of time. Add condition primitive: sestlssniin/sestlsclientauth/sestlsclientcain Add tls mutual authentication mod_header support client cert related variables mod_header support geo related variables mod_static support customized mime rules mod_static allow sending precompressed files instead of regular files Expose information about module handlers in web monitor Optimize number of accept goroutines Optimize lock of bfe_balance.BalTable Optimize io.Copy while forwarding responses Compiling on Mac OS is supported Documents optimization Change default Layer4LoadBalancer to NONE Upgrade from go1.12 to go1.13 Add mod_geo to determine user geolocation by MaxMind database Add modauthbasic to restrict access from unknown users Add mod_compress to compress response by customize rules Add mod_errors to replace unexpected resposne mod_static detect content type based on file extension or content Expose pprof items in web monitor Add default resFlushInterval for SSE(Server-Sent Events) response Support X-Forwarded-Host Header Support docker image in Makefile Documents optimization Change default monitor port to 8421 Rename HANDLEREADBACKEND to HANDLEREADRESPONSE Remove some legacy fields from mod_access Expose metrics in prometheus text-based format Add default value for core configs to reduce configuration cost Add mod_static to serve static content by customize rules Documents optimization mod_logid: random logid in hex encoding format Remove signal SIGSTKFLT Add condition primitive: reqciphashin/reqheadervaluehashin/reqcookievaluehashin/reqqueryvaluehash_in Add modheader variable: bfelog_id Add modhttpcode to maintain basic status about response forwarded Fix http2: limit number of control frames in server send queue (CVE-2019-9512, CVE-2019-9514) Add proxy protocol to be compatible with F5 BigIP/Citrix ADC etc Add mod_access to write request/session log in customized format Add modkeylog to wirte tls key log so that external programs(eg. wireshark) can decrypt TLS connections for trouble shooting Add security grade 'A+' in tls Add condition primitive: reqqueryvaluecontain/reqheadervaluecontain/reqcookievalue_contain Documents optimization reverseproxy: flush response header immediately if flushInterval<0 Multiple protocols supported, including HTTP, HTTPS, SPDY, HTTP2, WebSocket, TLS, etc Content based routing, support user-defined routing rule in advanced domain-specific language Support multiple load balancing policies Flexible plugin framework to extend functionality. Based on the framework, developer can add new features rapidly Detailed built-in metrics available for service status monitor