fix metadata

This commit is contained in:
ginuerzh
2022-01-09 00:07:26 +08:00
parent f45dc93e92
commit 37e77bdce5
12 changed files with 118 additions and 159 deletions

View File

@ -20,14 +20,17 @@ type metadata struct {
func (l *dnsListener) parseMetadata(md mdata.Metadata) (err error) {
const (
backlog = "backlog"
mode = "mode"
readBufferSize = "readBufferSize"
backlog = "backlog"
readTimeout = "readTimeout"
writeTimeout = "writeTimeout"
)
l.md.mode = mdata.GetString(md, mode)
l.md.readBufferSize = mdata.GetInt(md, readBufferSize)
l.md.readTimeout = mdata.GetDuration(md, readTimeout)
l.md.writeTimeout = mdata.GetDuration(md, writeTimeout)
l.md.backlog = mdata.GetInt(md, backlog)
if l.md.backlog <= 0 {

View File

@ -1,9 +1,6 @@
package http2
import (
"net/http"
"time"
mdata "github.com/go-gost/gost/pkg/metadata"
)
@ -12,24 +9,12 @@ const (
)
type metadata struct {
path string
handshakeTimeout time.Duration
readHeaderTimeout time.Duration
readBufferSize int
writeBufferSize int
enableCompression bool
responseHeader http.Header
backlog int
backlog int
}
func (l *http2Listener) parseMetadata(md mdata.Metadata) (err error) {
const (
path = "path"
handshakeTimeout = "handshakeTimeout"
readHeaderTimeout = "readHeaderTimeout"
readBufferSize = "readBufferSize"
writeBufferSize = "writeBufferSize"
backlog = "backlog"
backlog = "backlog"
)
l.md.backlog = mdata.GetInt(md, backlog)

View File

@ -4,6 +4,7 @@ import (
"crypto/tls"
"net/url"
"github.com/go-gost/gost/pkg/chain"
"github.com/go-gost/gost/pkg/logger"
)
@ -11,6 +12,7 @@ type Options struct {
Addr string
Auths []*url.Userinfo
TLSConfig *tls.Config
Chain *chain.Chain
Logger logger.Logger
}
@ -34,6 +36,12 @@ func TLSConfigOption(tlsConfig *tls.Config) 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

@ -17,47 +17,42 @@ func init() {
}
type rtcpListener struct {
addr string
laddr net.Addr
chain *chain.Chain
ln net.Listener
md metadata
router *chain.Router
logger logger.Logger
closed chan struct{}
laddr net.Addr
ln net.Listener
md metadata
router *chain.Router
logger logger.Logger
closed chan struct{}
options listener.Options
}
func NewListener(opts ...listener.Option) listener.Listener {
options := &listener.Options{}
options := listener.Options{}
for _, opt := range opts {
opt(options)
opt(&options)
}
return &rtcpListener{
addr: options.Addr,
closed: make(chan struct{}),
router: &chain.Router{
Logger: options.Logger,
},
logger: options.Logger,
closed: make(chan struct{}),
logger: options.Logger,
options: options,
}
}
// implements chain.Chainable interface
func (l *rtcpListener) WithChain(chain *chain.Chain) {
l.router.Chain = chain
}
func (l *rtcpListener) Init(md md.Metadata) (err error) {
if err = l.parseMetadata(md); err != nil {
return
}
laddr, err := net.ResolveTCPAddr("tcp", l.addr)
laddr, err := net.ResolveTCPAddr("tcp", l.options.Addr)
if err != nil {
return
}
l.laddr = laddr
l.router = &chain.Router{
Chain: l.options.Chain,
Logger: l.logger,
}
return
}

View File

@ -12,24 +12,8 @@ const (
)
type metadata struct {
enableMux bool
backlog int
retryCount int
}
func (l *rtcpListener) parseMetadata(md mdata.Metadata) (err error) {
const (
enableMux = "mux"
backlog = "backlog"
retryCount = "retry"
)
l.md.enableMux = mdata.GetBool(md, enableMux)
l.md.retryCount = mdata.GetInt(md, retryCount)
l.md.backlog = mdata.GetInt(md, backlog)
if l.md.backlog <= 0 {
l.md.backlog = defaultBacklog
}
return
}

View File

@ -17,47 +17,42 @@ func init() {
}
type rudpListener struct {
addr string
laddr *net.UDPAddr
chain *chain.Chain
ln net.Listener
md metadata
router *chain.Router
logger logger.Logger
closed chan struct{}
laddr *net.UDPAddr
ln net.Listener
router *chain.Router
closed chan struct{}
logger logger.Logger
md metadata
options listener.Options
}
func NewListener(opts ...listener.Option) listener.Listener {
options := &listener.Options{}
options := listener.Options{}
for _, opt := range opts {
opt(options)
opt(&options)
}
return &rudpListener{
addr: options.Addr,
closed: make(chan struct{}),
router: &chain.Router{
Logger: options.Logger,
},
logger: options.Logger,
closed: make(chan struct{}),
logger: options.Logger,
options: options,
}
}
// implements chain.Chainable interface
func (l *rudpListener) WithChain(chain *chain.Chain) {
l.router.Chain = chain
}
func (l *rudpListener) Init(md md.Metadata) (err error) {
if err = l.parseMetadata(md); err != nil {
return
}
laddr, err := net.ResolveUDPAddr("udp", l.addr)
laddr, err := net.ResolveUDPAddr("udp", l.options.Addr)
if err != nil {
return
}
l.laddr = laddr
l.router = &chain.Router{
Chain: l.options.Chain,
Logger: l.logger,
}
return
}

View File

@ -15,22 +15,22 @@ func init() {
}
type tunListener struct {
saddr string
addr net.Addr
cqueue chan net.Conn
closed chan struct{}
logger logger.Logger
md metadata
addr net.Addr
cqueue chan net.Conn
closed chan struct{}
logger logger.Logger
md metadata
options listener.Options
}
func NewListener(opts ...listener.Option) listener.Listener {
options := &listener.Options{}
options := listener.Options{}
for _, opt := range opts {
opt(options)
opt(&options)
}
return &tunListener{
saddr: options.Addr,
logger: options.Logger,
logger: options.Logger,
options: options,
}
}
@ -39,7 +39,7 @@ func (l *tunListener) Init(md md.Metadata) (err error) {
return
}
l.addr, err = net.ResolveUDPAddr("udp", l.saddr)
l.addr, err = net.ResolveUDPAddr("udp", l.options.Addr)
if err != nil {
return
}