add relay proxy

This commit is contained in:
ginuerzh
2021-11-18 22:54:23 +08:00
parent 1a1ee384b7
commit 8185d1124f
31 changed files with 747 additions and 106 deletions

View File

@ -4,6 +4,7 @@ import (
"errors"
"net"
"github.com/go-gost/gost/pkg/chain"
"github.com/go-gost/gost/pkg/metadata"
)
@ -21,3 +22,7 @@ type Listener interface {
type Accepter interface {
Accept() (net.Conn, error)
}
type Chainable interface {
Chain(chain *chain.Chain)
}

View File

@ -1,13 +1,11 @@
package listener
import (
"github.com/go-gost/gost/pkg/chain"
"github.com/go-gost/gost/pkg/logger"
)
type Options struct {
Addr string
Chain *chain.Chain
Logger logger.Logger
}
@ -19,12 +17,6 @@ func AddrOption(addr string) Option {
}
}
func ChainOption(chain *chain.Chain) Option {
return func(opts *Options) {
opts.Chain = chain
}
}
func LoggerOption(logger logger.Logger) Option {
return func(opts *Options) {
opts.Logger = logger

View File

@ -40,12 +40,16 @@ func NewListener(opts ...listener.Option) listener.Listener {
}
return &rtcpListener{
addr: options.Addr,
chain: options.Chain,
closed: make(chan struct{}),
logger: options.Logger,
}
}
// implements listener.Chainable interface
func (l *rtcpListener) Chain(chain *chain.Chain) {
l.chain = chain
}
func (l *rtcpListener) Init(md md.Metadata) (err error) {
if err = l.parseMetadata(md); err != nil {
return

View File

@ -39,12 +39,16 @@ func NewListener(opts ...listener.Option) listener.Listener {
}
return &rudpListener{
addr: options.Addr,
chain: options.Chain,
closed: make(chan struct{}),
logger: options.Logger,
}
}
// implements listener.Chainable interface
func (l *rudpListener) Chain(chain *chain.Chain) {
l.chain = chain
}
func (l *rudpListener) Init(md md.Metadata) (err error) {
if err = l.parseMetadata(md); err != nil {
return