add http2 transport

This commit is contained in:
ginuerzh
2021-12-14 21:52:11 +08:00
parent 15f9aa091b
commit c651743ea2
33 changed files with 1647 additions and 266 deletions

View File

@ -8,6 +8,7 @@ import (
"github.com/go-gost/gosocks4"
"github.com/go-gost/gosocks5"
"github.com/go-gost/gost/pkg/chain"
"github.com/go-gost/gost/pkg/handler"
"github.com/go-gost/gost/pkg/logger"
md "github.com/go-gost/gost/pkg/metadata"
@ -20,6 +21,7 @@ func init() {
}
type autoHandler struct {
chain *chain.Chain
httpHandler handler.Handler
socks4Handler handler.Handler
socks5Handler handler.Handler
@ -66,23 +68,43 @@ func NewHandler(opts ...handler.Option) handler.Handler {
return h
}
func (h *autoHandler) WithChain(chain *chain.Chain) {
h.chain = chain
}
func (h *autoHandler) Init(md md.Metadata) error {
if h.httpHandler != nil {
if chainable, ok := h.httpHandler.(chain.Chainable); ok {
chainable.WithChain(h.chain)
}
if err := h.httpHandler.Init(md); err != nil {
return err
}
}
if h.socks4Handler != nil {
if chainable, ok := h.socks4Handler.(chain.Chainable); ok {
chainable.WithChain(h.chain)
}
if err := h.socks4Handler.Init(md); err != nil {
return err
}
}
if h.socks5Handler != nil {
if chainable, ok := h.socks5Handler.(chain.Chainable); ok {
chainable.WithChain(h.chain)
}
if err := h.socks5Handler.Init(md); err != nil {
return err
}
}
if h.relayHandler != nil {
if chainable, ok := h.relayHandler.(chain.Chainable); ok {
chainable.WithChain(h.chain)
}
if err := h.relayHandler.Init(md); err != nil {
return err
}