-
v0.5.0
Stablereleased this
2026-10-26 23:04:14 +00:00 | 0 commits to main since this releaseAdded
headers.Rule.SetFunccomputes headers per request; an error answers the request with 502 Bad Gateway instead of forwarding it.handlers.ConnectAcceptorlets a ResponseWriter answer an acceptedCONNECTin its own protocol;TunnelandMITMHandleruse it where present, behindUnwraptoo.issuer.Cachekeeps the certificates another Issuer issues, per common name, and issues again pastNotAfter.- The
proxypackage assembles a complete proxy from host patterns, an Issuer, middleware and loggers withproxy.New. router.Router.HandleConnectHosttakes*as the fallback for hosts no other pattern matches.-upstream-catrusts a private CA for intercepted upstreams, and-upstream-insecureaccepts any upstream certificate.proxy.Config.Transportsets the transport for upstream requests.
Changed
- Breaking:
socks5.Serverno longer offersHijackon its ResponseWriter; a handler accepts the connection withAcceptConnectinstead of hijacking it and writing200 OK. - Breaking:
MITMHandler.CertCacheSizeis removed andMITMHandlerkeeps no certificates itself; an Issuer you set is called on everyCONNECTunless you wrap it inissuer.Cache. - Breaking: intercepted upstreams must present a certificate that verifies against the system roots, or
502 Bad Gatewayis answered;handlers.DefaultTransportverifies. Add-upstream-cafor a private CA, or-upstream-insecurefor the old behaviour. - Breaking:
issuernames the proxy CA a CA instead of a root:NewRootisNewCA,RootTemplateisCATemplate,SelfSignedCA.RootBitSizeandRootTmplareCABitSizeandCATmpl, andDefaultIssuerRootBitSizeandDefaultIssuerRootTmplareDefaultIssuerCABitSizeandDefaultIssuerCATmpl. - A proxy CA that multiproxy creates is named
multiproxy CA, of organizationmultiproxy, instead ofroot.example.orgofMultiproxy Root Org; a CA read from-ca-certkeeps its name. - The default templates carry no placeholder DNS name, OCSP server or issuer name on the proxy CA, and no country on leaf certificates.
Fixed
- Responses to intercepted requests stream to the client instead of reaching it only once complete.
- Every request pipelined on an intercepted connection is answered, where requests after the first could be lost.
- A client that starts its TLS handshake before reading the
CONNECTresponse is intercepted instead of stalling. - A certificate that cannot be issued refuses the
CONNECTrequest with 500, where the client was told the connection was established first. - Access records carry the status and byte count of every response, including errors multiproxy answers itself and refused
CONNECTrequests.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads