add relay proxy
This commit is contained in:
@ -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)
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user