Saucelabs Forwarder Versions Save

Forwarder is a production-ready, fast MITM proxy with PAC support. It's suitable for debugging, intercepting and manipulating HTTP traffic. It's used as a core component of Sauce Labs Sauce Connect Proxy.

v1.2.1

1 month ago

What's Changed

Full Changelog: https://github.com/saucelabs/forwarder/compare/v1.2.0...v1.2.1

v1.2.0

2 months ago

What's Changed

Full Changelog: https://github.com/saucelabs/forwarder/compare/v1.1.2...v1.2.0

v1.1.2

4 months ago

What's Changed

New Contributors

Full Changelog: https://github.com/saucelabs/forwarder/compare/v1.1.1...v1.1.2

v1.1.1

4 months ago

Relevant Changes

What's Changed

Full Changelog: https://github.com/saucelabs/forwarder/compare/v1.1.0...v1.1.1

v1.1.0

5 months ago

New Features

  • Man-In-The-Middle (MITM) support #335
  • Rate limiting #411
  • Direct domains #428
  • Upstream proxy headers modification #403
  • Proxy errors are written in response body (and headers) #502
  • Default config files contain all field description and can be generated from command line #517

Relevant changes

  • Our Google Martian fork has been internalized and largely modernized #350
  • On Windows End-Of-File is properly handled #471

What's Changed

Full Changelog: https://github.com/saucelabs/forwarder/compare/v1.0.2...v1.1.0

v1.1-rc1

7 months ago

Changelog

  • a9e5d1c bind: rephrase --log-http usage
  • 1bdbc3b cmd/forwarder/run: initialize runctx.Group with a function
  • 5fce40a cmd/forwarder/run: register process metrics
  • af5d444 http_proxy: add proxy errors metric
  • 8088def http_proxy: make errorResponse func a proxy method
  • f11b5b5 martian: add TestReadHeaderConnectionReset
  • 8455fb6 martian: add isClosedConnError from http2
  • 01e4130 martian: always close connection on readRequest error
  • 4474a8d martian: modernize isClosedConnError
  • 888aa15 martian: move readRequest error logging to handle
  • 6da7936 martian: refactor isCloseable
  • 2dece1d martian: use isClosedConnError instead of isCloseable outside of handleLoop
  • 180744c runctx: allow to start group without notify signals
  • 26a961f utlis/httpx: add RoundTripperFunc

v1.1-rc0

7 months ago

Changelog

  • 753084e Revert "log/stdlog: implement WithValue"
  • 3e0d95b Revert "log: extend Logger interface with WithValue method"
  • d37e335 Revert "martian(context): do not initialize ID value"
  • 4b7e381 Revert "martian(handler): use traced logger"
  • 7c2edb4 Revert "martian(proxy): use traced logger"
  • 6ebaae3 Revert "martian/context: store id as string"
  • 483e90d Revert "martian/context: use base 10 when converting id to string"
  • beb0acd api: add configurable endpoints
  • dcb33d4 api: make readiness check optional
  • 8a08c40 api: refactor script, config and version to APIEndpoint
  • e1eb3c2 bind: add --log-http-request-id-header flag
  • 4e96a0b bind: add func to bind prometheus namespace
  • 2e2570e bind: add proxy-header flag
  • 8297fe9 bind: add read and write limit
  • 37f9a1b bind: fix --basic-auth and --credentials values in usage description
  • 5ad9761 bind: redact base64 cert and key value
  • dc1a869 bind: replace route with short-url http log mode
  • ae8d2db bind: update credentials and basic-auth value types in usage
  • 8d9a6f5 bind: update deny-domain-exclude usage description
  • e078fdf cmd/forwarder/run: add --mitm-domains flag
  • 68026c4 cmd/forwarder/run: add /cacert if MITM is enabled
  • d491e9b cmd/forwarder/run: add ProxyHeaders
  • da64271 cmd/forwarder/run: add direct domains flag
  • 5c3679b cmd/forwarder/run: only add /pac endpoint if pac is set
  • 08f1569 cmd/forwarder/run: remove decorate func from martian logger
  • 09bd2ad cmd/forwarder: do not defer when building commands
  • 93b1263 cmd/forwarder: log fatal error if logger is available
  • 814f757 cmd/fowarder/run: bind prometheus namespace
  • d187193 cmd: runE functions don't need to be exported
  • ee5fc58 cmd: remove note on url escaping of user and password
  • 49aee3a config: rename ParseUserInfo -> ParseUserinfo
  • 6d9f351 config: rework parse host port and user
  • 073eada config: rework parse proxy url
  • 7da8a62 config: rework parse user info
  • a2155d6 dialvia: add connect request modifier
  • f5b3aaf dialvia: do not send default GO HTTP client User-Agent
  • 0d6de38 dialvia: do not url escape user and pass for proxy auth header
  • 9071f47 e2e (setups): remove deny domain exclude only setup
  • 5d6a855 e2e(mk): ignore stderr in copying httpbin env vars in make test
  • 36c78d1 e2e(mk): pre pull docker e2e test image
  • d684d69 e2e(mk): run profiling concurrently with the benchmark
  • 3e765e5 e2e/setup(callback): log SKIP: lines from test's stdout
  • 9e86b9c e2e/setup(callback): return error on nonempty stderr
  • e47d6ff e2e/tests (TestProxyUpstream): use httpbin/headers/ endpoint to assert traffic
  • 789e0b8 e2e/tests: rework request and response header flag tests to use /headers/ endpoint
  • 83801d1 e2e: add direct domains flag test
  • 595f74c e2e: add rate limit tests
  • a599a70 e2e: add test for --mitm-domains
  • 2af6f01 e2e: add tests for MITM with generated CA
  • 20e7a2d e2e: set dns timeout to 1 second
  • 8a34fe5 e2e: use special characters for basic auth and credentials
  • 88c514f forwarder: add SizeSuffix type
  • c1ffc16 http_(proxy,server) remove TunnelScheme
  • 212cbb6 http_(proxy,server): remove Listener
  • 571c52f http_proxy: add ConnectRequestModifier
  • 98100dc http_proxy: add MITMDomains to HTTPProxyConfig
  • 32cb1ed http_proxy: add NewHTTPProxyHandler
  • 0e7d355 http_proxy: add direct domains support
  • b091ca8 http_proxy: add missing log line "PROXY server listen address"
  • ed64507 http_proxy: adjust usage of ruleset NewRegexp
  • 5e0a9ab http_proxy: alias all martian types to avoid exposing them
  • 04d306c http_proxy: allow to read request ID from header and use in logs
  • 833de33 http_proxy: do not check if proxy is closing on Close()
  • 8442986 http_proxy: enable getting MITM CA cert
  • 44221d0 http_proxy: move deny domains parsing to command
  • 52196e3 http_proxy: only update upstream proxy user from credentials if user is not set
  • 0fc4e21 http_proxy: start listener on construction
  • fa5ecce http_proxy: support read and write limit
  • 5b52d66 http_proxy: unexport Handler function
  • 2be927d http_server: start listener on construction
  • c38c870 httplog: change trace format and the way it is retrieved
  • 1df1df3 httplog: replace route mode with short-url
  • 627add0 log/martianlog: export martian log setting
  • 290433e log/stdlog: change log level print format
  • 5c12190 log/stdlog: log timestamp with microseconds resolution
  • 12c4cff maritan: delete internal multierror
  • 43fb8e0 martian (mitm): add possibility to MITM only selected requests
  • 8cbd509 martian (mitm): improve logging
  • 9a7a80f martian (mitm): use Peek and avoid allocating reader for 1 byte slice
  • b76ca56 martian(context): add trace id to context.Context when wrapping martian.Context there
  • be38ac2 martian(httpspec): add Transfer-Encoding to unit test
  • b47a00a martian(mitm): check if peeked data is not nil
  • 80c8031 martian/fifo: replace multierror with go uber's one
  • e1ccb6d martian/log: add context.Context to logging functions
  • 34edee3 martian/log: make martian's logger interface
  • d6ea3fc martian/mitm: enable getting CA cert from Config
  • 737a653 martian/proxyutil: use http.NoBody
  • 4dad5c6 martian: add ConnectRequestModifier
  • 719bd2c martian: add TLS termination in CONNECT
  • 06a56b5 martian: close proxy only once
  • b7e80ea martian: fix Excess found: excess = 2 url = / (zero-length body) in HEAD response
  • c1a6aef martian: fix TestReadHeaderTimeout
  • c00af3a martian: handler, do not copy http.NoBody
  • 502fef8 martian: improve request IDs format
  • ef63de5 martian: log request id from header
  • 235e635 martian: pass context.TODO() to logging functions
  • 1a1bad5 martian: peek the connection before setting read timeout
  • 4fbcf23 martian: reformat duplicate code in Proxy.connectHTTP
  • f6e851d martian: remove martian: prefix from logs
  • 243b179 martian: test ConnectRequestModifier for HTTP upstream proxy
  • 2296ca0 martian: use context logging functions in proxy and handler
  • 4f94ae0 middleware: remove metrics labels
  • d5620c1 packaging: add powershell to completions.sh
  • 84f4b8b ratelimit: implement rate limiting package
  • 10d1079 ruleset: RegexpMatcher add inverse
  • ed8e4d0 ruleset: add RegexpList to support parsing Regexp from slice and rename Regexp to RegexpMatcher for clarity
  • ff558bf ruleset: rename RuleSet to Regexp
  • 066eb8c ruleset: rename files to regex
  • 3681cb3 ruleset: return error on creation when specified exclude rules without includes
  • 1e466b7 utils/cobrautil(bind): always get config file type from extension
  • 8fe63cc utils/cobrautil(bind): extract setFlagFromViper to function
  • 00fe2eb utils/cobrautil(bind): implementation based on Replace(val []string) with tests
  • df50e5f utils/cobrautil: handle errors and flag state when updating from viper
  • 4ccf9e9 utils/cobrautil: refactor DescribeFlags
  • 0683990 utils/cobrautil: reformat describe unit tests
  • 138fae7 utils/cobrautil: support pasring lists from env vars and config file
  • 7e0061c utils/cobrautil: use any instead of interface{}
  • ea3479c utils/golden: support diff of Prometheus Metrics from api server
  • 9ed2543 utils/httpbin: add count-bytes endpoint
  • d789027 utils/httpbin: add headers endpoint
  • 91d0d31 utils/httpbin: remove /header/ endpoint
  • 76c1d95 utils/httpbin: remove comment with implemented handlers
  • cfa0cc7 utils/httphandler: add SendCACert

v1.0.2

10 months ago

Changelog

  • 820efd5 README.md: add more information on installation
  • 1d4014c api: add context to ready func
  • 264affe bind: add "c" as shorthand for config-file
  • 067b4d3 bind: remove "socks" as supported proxy protocol, the supported protocol is "socks5"
  • be8f5f7 bind: remove shorthand "k" for "insecure" flag
  • f779f8b cmd/forwarder/ready: add readiness check command
  • 9f50d52 cobrautil (templater): pass custom envPrefix for flag usages
  • 17ee304 e2e (compose): make OnStart function mandatory
  • 6d8ed51 e2e (compose): wait for all containers in parallel
  • 35672e4 e2e (setups): change and document the naming scheme to use httpbin scheme first
  • 70b9b31 e2e (setups): change formatting to improve readability
  • 8d87ddb e2e (setups): split components to different files
  • 3c1c34e e2e (test): replace Errorf With Fatalf
  • f59dce3 e2e (tests): extract basic proxy tests to separate file and add Proxy
  • 4161c7f e2e (wait): automatically extend MaxWait time in CI
  • f2632bb e2e/forwarder: streamline service creation
  • 6b46a27 e2e/forwarder: unexport HealthCheck and make increase retries to 10
  • b66d69c e2e/forwarder: use compose healthcheck instead of WaitFunc
  • 0122d68 e2e: add debug flag to simplify debugging
  • 0cb9123 e2e: add possibility to run tests for a specific environment setup
  • 8b15b1e e2e: avoid reading env var multiple times
  • 21d8175 e2e: export test setups
  • b7f0c16 e2e: extract run into e2e
  • adc5418 e2e: make e2e.test phony
  • 3a5d72e e2e: make waiting time configurable
  • 545de07 e2e: move browser-pac.js to repo root
  • 4c1bf0d e2e: move compose to utils
  • ae817e3 e2e: move run/setups service and opts to forwarder
  • c674f3c e2e: move tests to tests package
  • 0f7b21d e2e: move wait to utils
  • ff660f9 e2e: quote RUN and SETUP
  • 0ce4f61 e2e: refactor setups and tests
  • cfe326b e2e: refactor test setup creation
  • b0f36b3 e2e: rename default to defaults
  • 1400bc1 e2e: rename framework to client
  • bc70897 e2e: rephrase why the 1xx tests are skipped
  • afd22b5 e2e: status, check multiple methods
  • 4efe0f0 e2e: test statusCodes for HEAD method
  • f125caf e2e: use httpexpect.NewURLWithBasicAuth
  • fc95df3 fix (readme): remove shorthand for "insecure" flag
  • a53cee2 fix: improve logging
  • 311759d go mod update github.com/saucelabs/martian/v3
  • 02ebded http proxy: add function to return ProxyFunc used by the proxy
  • 04bae21 http_server: debug log loading TLS certificate
  • 7fbca70 http_transport: reduce dial timeout to 10s
  • 7a43be8 runctx: add unit tests
  • 1e70b19 runctx: ignore context canceled error
  • edb6251 runctx: refactoring
  • b3e7c66 runctx: unregister signals after ctx is done
  • 3e6cd21 utils/compose: add Service healthcheck
  • a906054 utils/compose: extract Service to separate file
  • d9aa591 utils/compose: remove wait
  • c7cf14a utils/httpexpect: add NewURLWithBasicAuth
  • bcb914c utils/httpexpect: export Request function
  • 890ea0e utils/wait: remove

v1.0.1

1 year ago

Changelog

  • 3efddff Fix usage example
  • 58c7f3f bind: export redact functions
  • 12d16e8 bind: header, escape flag values
  • 2fb7229 e2e/bench: fix linter issues
  • cf90166 e2e/mk: add run-e2e, bench and adjust to test rework
  • 7bb45fa e2e/mk: test, escape env vars that are copied from containers
  • 26998fe e2e: add compose
  • c79e602 e2e: delete bash scripts and configs
  • 255afe1 e2e: framework, improve error logging
  • 3b85685 e2e: gitignore docker-compose.yaml
  • c120899 e2e: move httpexpect Client to its own util module
  • d3e1ed3 e2e: remove go mod
  • 0d6c07f e2e: replace httpexpect with light substitute
  • e5929ce e2e: rework test and framework
  • d4f675e e2e: rewrite test setups in go
  • fb5946e e2e: test request and response headers modifiers
  • 7afdd2a e2e: update readme
  • 96af44d go mod tidy
  • e99d1f8 go mod tidy
  • 09371cd header: implement Stringer
  • eab4074 http_server: move TLS{Cert,Key}File to TLSConfig
  • 5e19ab0 utils/cobrautil: process env prefix

v1.0.0

1 year ago

Changelog

  • 5dbecca Ingest templates from k8s.io/kubectl/pkg/util/templates as utils/cobrautil/templates
  • d13ddf2 Revert "http_[server, proxy]: remove Listener field"
  • a5bd54f Update LICENSE.3RD_PARTY
  • 847a1d6 Update README.md
  • 12ccf9a api: add explicit readiness check
  • 6789a4b api: add index with links
  • f662505 bind: improved format of configuration description
  • 2326136 build(deps): bump golang.org/x/net from 0.2.0 to 0.7.0
  • e2db0f0 build(deps): bump golang.org/x/net in /e2e
  • e6daa9f cmd/forwarder/proxy: remove apiEndpoints from help
  • 15d0495 cmd/forwarder/run: add -H, --header and -R --response-header flags
  • 3d57492 cmd/forwarder: add httpbin by default as a hidden command
  • 100d2fc cmd/forwarder: add support for config files
  • 71a3aee cmd/forwarder: do not print command errors in main
  • 954934f cmd/forwarder: mark flags as filename by flag name and/or usage
  • 0a0d3e1 cmd/forwarder: move listing of supported PAC functions from help to README.md
  • 871044a cmd/forwarder: on exit try to write error message to /dev/termination-log
  • 30cc7a6 cmd/forwarder: rename "Flags" to "Options"
  • c60c44d cmd/forwarder: rename --http-insecure to -k, --insecure
  • d5c2cb4 cmd/forwarder: renaming and moving of subcommands
  • bf47c10 cmd/forwarder: rework flags
  • 510347a cmd/forwarder: use utils/cobrautil/templates
  • 39e630c cmd: sort flags in help
  • 557f176 cmd[pacserver,proxy]: pac, execute FindProxyForURL for validation
  • 4eae47e config,dns: harden DNS server address parsing
  • 6020dd7 config: URL decode username and password
  • 941dc69 config: harden proxy URL parsing
  • 7549d5b config: support UserInfo in proxy URL
  • e350f66 e2e: add debug.yaml to turn on debug logs in proxy and upstream-proxy
  • d879cf1 e2e: add readiness check in tests
  • c2c65f3 go mod tidy
  • 387a480 go mod update github.com/google/martian/v3
  • a411a1d go mod update github.com/saucelabs/martian/v3 to v3.0.0-20230310141251-deabc39b934d
  • f560858 header: a package to add and remove headers
  • 1739270 http_proxy: Remove header removal
  • 16a6be7 http_proxy: add Prometheus middleware if PromRegistry != nil
  • 6e5ed37 http_proxy: add http handler support in testing
  • e24ab26 http_proxy: config, add ConnectPassthrough
  • 2bb6ac2 http_proxy: don't send the default Go HTTP client User-Agent
  • 40b3871 httplog: reimplementation of http logging
  • adc421d httplog: rename LoggerMode to Mode
  • 8fe25c4 license: add Sauce Labs copyright to file header
  • cd84787 license: apply MPL file header
  • d6091aa license: full license content
  • 395b909 log: replace verbosity with log levels
  • a20ea0e utils/cobrautil/templates: add prefix based flags grouping
  • ce90840 utils/cobrautil/templates: improve flags printing
  • 6c9f1fd utils/cobrautil/templates: print persistent flags
  • 8ef88cd utils/cobrautil/templates: support custom value information
  • 4516877 utils/cobrautil/templates: support multiple prefixes in FlagGroup
  • 1190573 utils/cobrautil/templates: use strings.Replacer for env vars names
  • 696388b utils/cobrautil: add BindAll a helper function for binding flags, env vars and config files
  • d3a70d1 utils/httpbin: ws, add websocket testing html page
  • a9038cd utlils/httpbin: move httpbin to utils