add router handler option

This commit is contained in:
ginuerzh
2021-12-31 00:03:24 +08:00
parent a430384bba
commit 9769efe33c
35 changed files with 98 additions and 281 deletions

View File

@ -8,7 +8,6 @@ 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"
@ -21,7 +20,6 @@ func init() {
}
type autoHandler struct {
chain *chain.Chain
httpHandler handler.Handler
socks4Handler handler.Handler
socks5Handler handler.Handler
@ -68,43 +66,23 @@ 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
}