add metadata
This commit is contained in:
@ -1,12 +1,12 @@
|
||||
package ftcp
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
|
||||
"github.com/go-gost/gost/pkg/components/listener"
|
||||
md "github.com/go-gost/gost/pkg/components/metadata"
|
||||
"github.com/go-gost/gost/pkg/logger"
|
||||
"github.com/go-gost/gost/pkg/registry"
|
||||
"github.com/xtaci/tcpraw"
|
||||
@ -17,6 +17,7 @@ func init() {
|
||||
}
|
||||
|
||||
type Listener struct {
|
||||
addr string
|
||||
md metadata
|
||||
conn net.PacketConn
|
||||
connChan chan net.Conn
|
||||
@ -31,13 +32,13 @@ func NewListener(opts ...listener.Option) listener.Listener {
|
||||
opt(options)
|
||||
}
|
||||
return &Listener{
|
||||
addr: options.Addr,
|
||||
logger: options.Logger,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *Listener) Init(md listener.Metadata) (err error) {
|
||||
l.md, err = l.parseMetadata(md)
|
||||
if err != nil {
|
||||
func (l *Listener) Init(md md.Metadata) (err error) {
|
||||
if err = l.parseMetadata(md); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
@ -118,14 +119,7 @@ func (l *Listener) listenLoop() {
|
||||
}
|
||||
}
|
||||
|
||||
func (l *Listener) parseMetadata(md listener.Metadata) (m metadata, err error) {
|
||||
if val, ok := md[addr]; ok {
|
||||
m.addr = val
|
||||
} else {
|
||||
err = errors.New("missing address")
|
||||
return
|
||||
}
|
||||
|
||||
func (l *Listener) parseMetadata(md md.Metadata) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -14,8 +14,7 @@ const (
|
||||
)
|
||||
|
||||
type metadata struct {
|
||||
addr string
|
||||
ttl time.Duration
|
||||
ttl time.Duration
|
||||
|
||||
readBufferSize int
|
||||
readQueueSize int
|
||||
|
@ -9,6 +9,7 @@ import (
|
||||
|
||||
"github.com/go-gost/gost/pkg/components/internal/utils"
|
||||
"github.com/go-gost/gost/pkg/components/listener"
|
||||
md "github.com/go-gost/gost/pkg/components/metadata"
|
||||
"github.com/go-gost/gost/pkg/logger"
|
||||
"github.com/go-gost/gost/pkg/registry"
|
||||
"golang.org/x/net/http2"
|
||||
@ -19,6 +20,7 @@ func init() {
|
||||
}
|
||||
|
||||
type Listener struct {
|
||||
addr string
|
||||
net.Listener
|
||||
md metadata
|
||||
server *http2.Server
|
||||
@ -33,17 +35,17 @@ func NewListener(opts ...listener.Option) listener.Listener {
|
||||
opt(options)
|
||||
}
|
||||
return &Listener{
|
||||
addr: options.Addr,
|
||||
logger: options.Logger,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *Listener) Init(md listener.Metadata) (err error) {
|
||||
l.md, err = l.parseMetadata(md)
|
||||
if err != nil {
|
||||
func (l *Listener) Init(md md.Metadata) (err error) {
|
||||
if err = l.parseMetadata(md); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
ln, err := net.Listen("tcp", l.md.addr)
|
||||
ln, err := net.Listen("tcp", l.addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@ -170,15 +172,12 @@ func (l *Listener) upgrade(w http.ResponseWriter, r *http.Request) (*conn, error
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (l *Listener) parseMetadata(md listener.Metadata) (m metadata, err error) {
|
||||
if val, ok := md[addr]; ok {
|
||||
m.addr = val
|
||||
} else {
|
||||
err = errors.New("missing address")
|
||||
return
|
||||
}
|
||||
|
||||
m.tlsConfig, err = utils.LoadTLSConfig(md[certFile], md[keyFile], md[caFile])
|
||||
func (l *Listener) parseMetadata(md md.Metadata) (err error) {
|
||||
l.md.tlsConfig, err = utils.LoadTLSConfig(
|
||||
md.GetString(certFile),
|
||||
md.GetString(keyFile),
|
||||
md.GetString(caFile),
|
||||
)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -7,7 +7,6 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
addr = "addr"
|
||||
path = "path"
|
||||
certFile = "certFile"
|
||||
keyFile = "keyFile"
|
||||
@ -24,7 +23,6 @@ const (
|
||||
)
|
||||
|
||||
type metadata struct {
|
||||
addr string
|
||||
path string
|
||||
tlsConfig *tls.Config
|
||||
handshakeTimeout time.Duration
|
||||
|
@ -2,12 +2,12 @@ package http2
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"errors"
|
||||
"net"
|
||||
"net/http"
|
||||
|
||||
"github.com/go-gost/gost/pkg/components/internal/utils"
|
||||
"github.com/go-gost/gost/pkg/components/listener"
|
||||
md "github.com/go-gost/gost/pkg/components/metadata"
|
||||
"github.com/go-gost/gost/pkg/logger"
|
||||
"github.com/go-gost/gost/pkg/registry"
|
||||
"golang.org/x/net/http2"
|
||||
@ -18,6 +18,7 @@ func init() {
|
||||
}
|
||||
|
||||
type Listener struct {
|
||||
saddr string
|
||||
md metadata
|
||||
server *http.Server
|
||||
addr net.Addr
|
||||
@ -32,18 +33,18 @@ func NewListener(opts ...listener.Option) listener.Listener {
|
||||
opt(options)
|
||||
}
|
||||
return &Listener{
|
||||
saddr: options.Addr,
|
||||
logger: options.Logger,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *Listener) Init(md listener.Metadata) (err error) {
|
||||
l.md, err = l.parseMetadata(md)
|
||||
if err != nil {
|
||||
func (l *Listener) Init(md md.Metadata) (err error) {
|
||||
if err = l.parseMetadata(md); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
l.server = &http.Server{
|
||||
Addr: l.md.addr,
|
||||
Addr: l.saddr,
|
||||
Handler: http.HandlerFunc(l.handleFunc),
|
||||
TLSConfig: l.md.tlsConfig,
|
||||
}
|
||||
@ -51,7 +52,7 @@ func (l *Listener) Init(md listener.Metadata) (err error) {
|
||||
return err
|
||||
}
|
||||
|
||||
ln, err := net.Listen("tcp", addr)
|
||||
ln, err := net.Listen("tcp", l.saddr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -124,15 +125,12 @@ func (l *Listener) handleFunc(w http.ResponseWriter, r *http.Request) {
|
||||
<-conn.closed
|
||||
}
|
||||
|
||||
func (l *Listener) parseMetadata(md listener.Metadata) (m metadata, err error) {
|
||||
if val, ok := md[addr]; ok {
|
||||
m.addr = val
|
||||
} else {
|
||||
err = errors.New("missing address")
|
||||
return
|
||||
}
|
||||
|
||||
m.tlsConfig, err = utils.LoadTLSConfig(md[certFile], md[keyFile], md[caFile])
|
||||
func (l *Listener) parseMetadata(md md.Metadata) (err error) {
|
||||
l.md.tlsConfig, err = utils.LoadTLSConfig(
|
||||
md.GetString(certFile),
|
||||
md.GetString(keyFile),
|
||||
md.GetString(caFile),
|
||||
)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -7,7 +7,6 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
addr = "addr"
|
||||
path = "path"
|
||||
certFile = "certFile"
|
||||
keyFile = "keyFile"
|
||||
@ -24,7 +23,6 @@ const (
|
||||
)
|
||||
|
||||
type metadata struct {
|
||||
addr string
|
||||
path string
|
||||
tlsConfig *tls.Config
|
||||
handshakeTimeout time.Duration
|
||||
|
@ -1,12 +1,12 @@
|
||||
package kcp
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net"
|
||||
"time"
|
||||
|
||||
"github.com/go-gost/gost/pkg/components/internal/utils"
|
||||
"github.com/go-gost/gost/pkg/components/listener"
|
||||
md "github.com/go-gost/gost/pkg/components/metadata"
|
||||
"github.com/go-gost/gost/pkg/logger"
|
||||
"github.com/go-gost/gost/pkg/registry"
|
||||
"github.com/xtaci/kcp-go/v5"
|
||||
@ -19,6 +19,7 @@ func init() {
|
||||
}
|
||||
|
||||
type Listener struct {
|
||||
addr string
|
||||
md metadata
|
||||
ln *kcp.Listener
|
||||
connChan chan net.Conn
|
||||
@ -32,13 +33,13 @@ func NewListener(opts ...listener.Option) listener.Listener {
|
||||
opt(options)
|
||||
}
|
||||
return &Listener{
|
||||
addr: options.Addr,
|
||||
logger: options.Logger,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *Listener) Init(md listener.Metadata) (err error) {
|
||||
l.md, err = l.parseMetadata(md)
|
||||
if err != nil {
|
||||
func (l *Listener) Init(md md.Metadata) (err error) {
|
||||
if err = l.parseMetadata(md); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
@ -52,14 +53,14 @@ func (l *Listener) Init(md listener.Metadata) (err error) {
|
||||
|
||||
if config.TCP {
|
||||
var conn net.PacketConn
|
||||
conn, err = tcpraw.Listen("tcp", addr)
|
||||
conn, err = tcpraw.Listen("tcp", l.addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ln, err = kcp.ServeConn(
|
||||
blockCrypt(config.Key, config.Crypt, Salt), config.DataShard, config.ParityShard, conn)
|
||||
} else {
|
||||
ln, err = kcp.ListenWithOptions(addr,
|
||||
ln, err = kcp.ListenWithOptions(l.addr,
|
||||
blockCrypt(config.Key, config.Crypt, Salt), config.DataShard, config.ParityShard)
|
||||
}
|
||||
if err != nil {
|
||||
@ -168,13 +169,6 @@ func (l *Listener) mux(conn net.Conn) {
|
||||
}
|
||||
}
|
||||
|
||||
func (l *Listener) parseMetadata(md listener.Metadata) (m metadata, err error) {
|
||||
if val, ok := md[addr]; ok {
|
||||
m.addr = val
|
||||
} else {
|
||||
err = errors.New("missing address")
|
||||
return
|
||||
}
|
||||
|
||||
func (l *Listener) parseMetadata(md md.Metadata) (err error) {
|
||||
return
|
||||
}
|
||||
|
@ -1,8 +1,6 @@
|
||||
package kcp
|
||||
|
||||
const (
|
||||
addr = "addr"
|
||||
|
||||
connQueueSize = "connQueueSize"
|
||||
)
|
||||
|
||||
@ -11,7 +9,6 @@ const (
|
||||
)
|
||||
|
||||
type metadata struct {
|
||||
addr string
|
||||
config *Config
|
||||
|
||||
connQueueSize int
|
||||
|
@ -3,6 +3,8 @@ package listener
|
||||
import (
|
||||
"errors"
|
||||
"net"
|
||||
|
||||
"github.com/go-gost/gost/pkg/components/metadata"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -11,7 +13,7 @@ var (
|
||||
|
||||
// Listener is a server listener, just like a net.Listener.
|
||||
type Listener interface {
|
||||
Init(Metadata) error
|
||||
Init(metadata.Metadata) error
|
||||
net.Listener
|
||||
}
|
||||
|
||||
|
@ -1,3 +0,0 @@
|
||||
package listener
|
||||
|
||||
type Metadata map[string]string
|
@ -1,13 +1,11 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/go-gost/gost/pkg/components/internal/utils"
|
||||
"github.com/go-gost/gost/pkg/components/listener"
|
||||
md "github.com/go-gost/gost/pkg/components/metadata"
|
||||
"github.com/go-gost/gost/pkg/logger"
|
||||
"github.com/go-gost/gost/pkg/registry"
|
||||
)
|
||||
@ -17,7 +15,8 @@ func init() {
|
||||
}
|
||||
|
||||
type Listener struct {
|
||||
md metadata
|
||||
addr string
|
||||
md metadata
|
||||
net.Listener
|
||||
logger logger.Logger
|
||||
}
|
||||
@ -28,17 +27,17 @@ func NewListener(opts ...listener.Option) listener.Listener {
|
||||
opt(options)
|
||||
}
|
||||
return &Listener{
|
||||
addr: options.Addr,
|
||||
logger: options.Logger,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *Listener) Init(md listener.Metadata) (err error) {
|
||||
l.md, err = l.parseMetadata(md)
|
||||
if err != nil {
|
||||
func (l *Listener) Init(md md.Metadata) (err error) {
|
||||
if err = l.parseMetadata(md); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
laddr, err := net.ResolveTCPAddr("tcp", l.md.addr)
|
||||
laddr, err := net.ResolveTCPAddr("tcp", l.addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@ -68,22 +67,9 @@ func (l *Listener) Accept() (net.Conn, error) {
|
||||
return &conn{Conn: c}, nil
|
||||
}
|
||||
|
||||
func (l *Listener) parseMetadata(md listener.Metadata) (m metadata, err error) {
|
||||
if val, ok := md[addr]; ok {
|
||||
m.addr = val
|
||||
} else {
|
||||
err = errors.New("missing address")
|
||||
return
|
||||
}
|
||||
|
||||
m.keepAlive = true
|
||||
if val, ok := md[keepAlive]; ok {
|
||||
m.keepAlive, _ = strconv.ParseBool(val)
|
||||
}
|
||||
|
||||
if val, ok := md[keepAlivePeriod]; ok {
|
||||
m.keepAlivePeriod, _ = time.ParseDuration(val)
|
||||
}
|
||||
func (l *Listener) parseMetadata(md md.Metadata) (err error) {
|
||||
l.md.keepAlive = md.GetBool(keepAlive)
|
||||
l.md.keepAlivePeriod = md.GetDuration(keepAlivePeriod)
|
||||
|
||||
return
|
||||
}
|
||||
|
@ -3,7 +3,6 @@ package http
|
||||
import "time"
|
||||
|
||||
const (
|
||||
addr = "addr"
|
||||
keepAlive = "keepAlive"
|
||||
keepAlivePeriod = "keepAlivePeriod"
|
||||
)
|
||||
@ -13,7 +12,6 @@ const (
|
||||
)
|
||||
|
||||
type metadata struct {
|
||||
addr string
|
||||
keepAlive bool
|
||||
keepAlivePeriod time.Duration
|
||||
}
|
||||
|
@ -1,13 +1,11 @@
|
||||
package tls
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/go-gost/gost/pkg/components/internal/utils"
|
||||
"github.com/go-gost/gost/pkg/components/listener"
|
||||
md "github.com/go-gost/gost/pkg/components/metadata"
|
||||
"github.com/go-gost/gost/pkg/logger"
|
||||
"github.com/go-gost/gost/pkg/registry"
|
||||
)
|
||||
@ -17,7 +15,8 @@ func init() {
|
||||
}
|
||||
|
||||
type Listener struct {
|
||||
md metadata
|
||||
addr string
|
||||
md metadata
|
||||
net.Listener
|
||||
logger logger.Logger
|
||||
}
|
||||
@ -28,17 +27,17 @@ func NewListener(opts ...listener.Option) listener.Listener {
|
||||
opt(options)
|
||||
}
|
||||
return &Listener{
|
||||
addr: options.Addr,
|
||||
logger: options.Logger,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *Listener) Init(md listener.Metadata) (err error) {
|
||||
l.md, err = l.parseMetadata(md)
|
||||
if err != nil {
|
||||
func (l *Listener) Init(md md.Metadata) (err error) {
|
||||
if err = l.parseMetadata(md); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
laddr, err := net.ResolveTCPAddr("tcp", l.md.addr)
|
||||
laddr, err := net.ResolveTCPAddr("tcp", l.addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@ -68,22 +67,9 @@ func (l *Listener) Accept() (net.Conn, error) {
|
||||
return &conn{Conn: c}, nil
|
||||
}
|
||||
|
||||
func (l *Listener) parseMetadata(md listener.Metadata) (m metadata, err error) {
|
||||
if val, ok := md[addr]; ok {
|
||||
m.addr = val
|
||||
} else {
|
||||
err = errors.New("missing address")
|
||||
return
|
||||
}
|
||||
|
||||
m.keepAlive = true
|
||||
if val, ok := md[keepAlive]; ok {
|
||||
m.keepAlive, _ = strconv.ParseBool(val)
|
||||
}
|
||||
|
||||
if val, ok := md[keepAlivePeriod]; ok {
|
||||
m.keepAlivePeriod, _ = time.ParseDuration(val)
|
||||
}
|
||||
func (l *Listener) parseMetadata(md md.Metadata) (err error) {
|
||||
l.md.keepAlive = md.GetBool(keepAlive)
|
||||
l.md.keepAlivePeriod = md.GetDuration(keepAlivePeriod)
|
||||
|
||||
return
|
||||
}
|
||||
|
@ -3,7 +3,6 @@ package tls
|
||||
import "time"
|
||||
|
||||
const (
|
||||
addr = "addr"
|
||||
keepAlive = "keepAlive"
|
||||
keepAlivePeriod = "keepAlivePeriod"
|
||||
)
|
||||
@ -13,7 +12,6 @@ const (
|
||||
)
|
||||
|
||||
type metadata struct {
|
||||
addr string
|
||||
keepAlive bool
|
||||
keepAlivePeriod time.Duration
|
||||
}
|
||||
|
@ -2,11 +2,11 @@ package quic
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"net"
|
||||
|
||||
"github.com/go-gost/gost/pkg/components/internal/utils"
|
||||
"github.com/go-gost/gost/pkg/components/listener"
|
||||
md "github.com/go-gost/gost/pkg/components/metadata"
|
||||
"github.com/go-gost/gost/pkg/logger"
|
||||
"github.com/go-gost/gost/pkg/registry"
|
||||
"github.com/lucas-clemente/quic-go"
|
||||
@ -17,6 +17,7 @@ func init() {
|
||||
}
|
||||
|
||||
type Listener struct {
|
||||
addr string
|
||||
md metadata
|
||||
ln quic.Listener
|
||||
connChan chan net.Conn
|
||||
@ -30,17 +31,17 @@ func NewListener(opts ...listener.Option) listener.Listener {
|
||||
opt(options)
|
||||
}
|
||||
return &Listener{
|
||||
addr: options.Addr,
|
||||
logger: options.Logger,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *Listener) Init(md listener.Metadata) (err error) {
|
||||
l.md, err = l.parseMetadata(md)
|
||||
if err != nil {
|
||||
func (l *Listener) Init(md md.Metadata) (err error) {
|
||||
if err = l.parseMetadata(md); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
laddr, err := net.ResolveUDPAddr("udp", l.md.addr)
|
||||
laddr, err := net.ResolveUDPAddr("udp", l.addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@ -131,13 +132,7 @@ func (l *Listener) mux(ctx context.Context, session quic.Session) {
|
||||
}
|
||||
}
|
||||
|
||||
func (l *Listener) parseMetadata(md listener.Metadata) (m metadata, err error) {
|
||||
if val, ok := md[addr]; ok {
|
||||
m.addr = val
|
||||
} else {
|
||||
err = errors.New("missing address")
|
||||
return
|
||||
}
|
||||
func (l *Listener) parseMetadata(md md.Metadata) (err error) {
|
||||
|
||||
return
|
||||
}
|
||||
|
@ -6,8 +6,6 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
addr = "addr"
|
||||
|
||||
certFile = "certFile"
|
||||
keyFile = "keyFile"
|
||||
caFile = "caFile"
|
||||
@ -21,7 +19,6 @@ const (
|
||||
)
|
||||
|
||||
type metadata struct {
|
||||
addr string
|
||||
tlsConfig *tls.Config
|
||||
keepAlive bool
|
||||
HandshakeTimeout time.Duration
|
||||
|
@ -2,11 +2,10 @@ package tcp
|
||||
|
||||
import (
|
||||
"net"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/go-gost/gost/pkg/components/internal/utils"
|
||||
"github.com/go-gost/gost/pkg/components/listener"
|
||||
md "github.com/go-gost/gost/pkg/components/metadata"
|
||||
"github.com/go-gost/gost/pkg/logger"
|
||||
"github.com/go-gost/gost/pkg/registry"
|
||||
)
|
||||
@ -33,9 +32,8 @@ func NewListener(opts ...listener.Option) listener.Listener {
|
||||
}
|
||||
}
|
||||
|
||||
func (l *Listener) Init(md listener.Metadata) (err error) {
|
||||
l.md, err = l.parseMetadata(md)
|
||||
if err != nil {
|
||||
func (l *Listener) Init(md md.Metadata) (err error) {
|
||||
if err = l.parseMetadata(md); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
@ -57,18 +55,13 @@ func (l *Listener) Init(md listener.Metadata) (err error) {
|
||||
}
|
||||
|
||||
l.Listener = ln
|
||||
l.logger.Info("listening on:", l.Listener.Addr())
|
||||
return
|
||||
}
|
||||
|
||||
func (l *Listener) parseMetadata(md listener.Metadata) (m metadata, err error) {
|
||||
m.keepAlive = true
|
||||
if val, ok := md[keepAlive]; ok {
|
||||
m.keepAlive, _ = strconv.ParseBool(val)
|
||||
}
|
||||
|
||||
if val, ok := md[keepAlivePeriod]; ok {
|
||||
m.keepAlivePeriod, _ = time.ParseDuration(val)
|
||||
}
|
||||
func (l *Listener) parseMetadata(md md.Metadata) (err error) {
|
||||
l.md.keepAlive = md.GetBool(keepAlive)
|
||||
l.md.keepAlivePeriod = md.GetDuration(keepAlivePeriod)
|
||||
|
||||
return
|
||||
}
|
||||
|
@ -2,12 +2,11 @@ package tls
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"errors"
|
||||
"net"
|
||||
"time"
|
||||
|
||||
"github.com/go-gost/gost/pkg/components/internal/utils"
|
||||
"github.com/go-gost/gost/pkg/components/listener"
|
||||
md "github.com/go-gost/gost/pkg/components/metadata"
|
||||
"github.com/go-gost/gost/pkg/logger"
|
||||
"github.com/go-gost/gost/pkg/registry"
|
||||
)
|
||||
@ -17,7 +16,8 @@ func init() {
|
||||
}
|
||||
|
||||
type Listener struct {
|
||||
md metadata
|
||||
addr string
|
||||
md metadata
|
||||
net.Listener
|
||||
logger logger.Logger
|
||||
}
|
||||
@ -28,17 +28,17 @@ func NewListener(opts ...listener.Option) listener.Listener {
|
||||
opt(options)
|
||||
}
|
||||
return &Listener{
|
||||
addr: options.Addr,
|
||||
logger: options.Logger,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *Listener) Init(md listener.Metadata) (err error) {
|
||||
l.md, err = l.parseMetadata(md)
|
||||
if err != nil {
|
||||
func (l *Listener) Init(md md.Metadata) (err error) {
|
||||
if err = l.parseMetadata(md); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
ln, err := net.Listen("tcp", l.md.addr)
|
||||
ln, err := net.Listen("tcp", l.addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@ -55,22 +55,16 @@ func (l *Listener) Init(md listener.Metadata) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func (l *Listener) parseMetadata(md listener.Metadata) (m metadata, err error) {
|
||||
if val, ok := md[addr]; ok {
|
||||
m.addr = val
|
||||
} else {
|
||||
err = errors.New("missing address")
|
||||
return
|
||||
}
|
||||
|
||||
m.tlsConfig, err = utils.LoadTLSConfig(md[certFile], md[keyFile], md[caFile])
|
||||
func (l *Listener) parseMetadata(md md.Metadata) (err error) {
|
||||
l.md.tlsConfig, err = utils.LoadTLSConfig(
|
||||
md.GetString(certFile),
|
||||
md.GetString(keyFile),
|
||||
md.GetString(caFile),
|
||||
)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if val, ok := md[keepAlivePeriod]; ok {
|
||||
m.keepAlivePeriod, _ = time.ParseDuration(val)
|
||||
}
|
||||
|
||||
l.md.keepAlivePeriod = md.GetDuration(keepAlivePeriod)
|
||||
return
|
||||
}
|
||||
|
@ -6,7 +6,6 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
addr = "addr"
|
||||
certFile = "certFile"
|
||||
keyFile = "keyFile"
|
||||
caFile = "caFile"
|
||||
@ -14,7 +13,6 @@ const (
|
||||
)
|
||||
|
||||
type metadata struct {
|
||||
addr string
|
||||
tlsConfig *tls.Config
|
||||
keepAlivePeriod time.Duration
|
||||
}
|
||||
|
@ -2,11 +2,11 @@ package mux
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"errors"
|
||||
"net"
|
||||
|
||||
"github.com/go-gost/gost/pkg/components/internal/utils"
|
||||
"github.com/go-gost/gost/pkg/components/listener"
|
||||
md "github.com/go-gost/gost/pkg/components/metadata"
|
||||
"github.com/go-gost/gost/pkg/logger"
|
||||
"github.com/go-gost/gost/pkg/registry"
|
||||
"github.com/xtaci/smux"
|
||||
@ -17,7 +17,8 @@ func init() {
|
||||
}
|
||||
|
||||
type Listener struct {
|
||||
md metadata
|
||||
addr string
|
||||
md metadata
|
||||
net.Listener
|
||||
connChan chan net.Conn
|
||||
errChan chan error
|
||||
@ -30,17 +31,17 @@ func NewListener(opts ...listener.Option) listener.Listener {
|
||||
opt(options)
|
||||
}
|
||||
return &Listener{
|
||||
addr: options.Addr,
|
||||
logger: options.Logger,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *Listener) Init(md listener.Metadata) (err error) {
|
||||
l.md, err = l.parseMetadata(md)
|
||||
if err != nil {
|
||||
func (l *Listener) Init(md md.Metadata) (err error) {
|
||||
if err = l.parseMetadata(md); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
ln, err := net.Listen("tcp", l.md.addr)
|
||||
ln, err := net.Listen("tcp", l.addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@ -125,15 +126,12 @@ func (l *Listener) Accept() (conn net.Conn, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func (l *Listener) parseMetadata(md listener.Metadata) (m metadata, err error) {
|
||||
if val, ok := md[addr]; ok {
|
||||
m.addr = val
|
||||
} else {
|
||||
err = errors.New("missing address")
|
||||
return
|
||||
}
|
||||
|
||||
m.tlsConfig, err = utils.LoadTLSConfig(md[certFile], md[keyFile], md[caFile])
|
||||
func (l *Listener) parseMetadata(md md.Metadata) (err error) {
|
||||
l.md.tlsConfig, err = utils.LoadTLSConfig(
|
||||
md.GetString(certFile),
|
||||
md.GetString(keyFile),
|
||||
md.GetString(caFile),
|
||||
)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -6,7 +6,6 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
addr = "addr"
|
||||
certFile = "certFile"
|
||||
keyFile = "keyFile"
|
||||
caFile = "caFile"
|
||||
@ -24,7 +23,6 @@ const (
|
||||
)
|
||||
|
||||
type metadata struct {
|
||||
addr string
|
||||
tlsConfig *tls.Config
|
||||
|
||||
muxKeepAliveDisabled bool
|
||||
|
@ -1,12 +1,12 @@
|
||||
package udp
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
|
||||
"github.com/go-gost/gost/pkg/components/listener"
|
||||
md "github.com/go-gost/gost/pkg/components/metadata"
|
||||
"github.com/go-gost/gost/pkg/logger"
|
||||
"github.com/go-gost/gost/pkg/registry"
|
||||
)
|
||||
@ -16,6 +16,7 @@ func init() {
|
||||
}
|
||||
|
||||
type Listener struct {
|
||||
addr string
|
||||
md metadata
|
||||
conn net.PacketConn
|
||||
connChan chan net.Conn
|
||||
@ -30,17 +31,17 @@ func NewListener(opts ...listener.Option) listener.Listener {
|
||||
opt(options)
|
||||
}
|
||||
return &Listener{
|
||||
addr: options.Addr,
|
||||
logger: options.Logger,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *Listener) Init(md listener.Metadata) (err error) {
|
||||
l.md, err = l.parseMetadata(md)
|
||||
if err != nil {
|
||||
func (l *Listener) Init(md md.Metadata) (err error) {
|
||||
if err = l.parseMetadata(md); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
laddr, err := net.ResolveUDPAddr("udp", l.md.addr)
|
||||
laddr, err := net.ResolveUDPAddr("udp", l.addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@ -124,14 +125,7 @@ func (l *Listener) listenLoop() {
|
||||
}
|
||||
}
|
||||
|
||||
func (l *Listener) parseMetadata(md listener.Metadata) (m metadata, err error) {
|
||||
if val, ok := md[addr]; ok {
|
||||
m.addr = val
|
||||
} else {
|
||||
err = errors.New("missing address")
|
||||
return
|
||||
}
|
||||
|
||||
func (l *Listener) parseMetadata(md md.Metadata) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -9,13 +9,8 @@ const (
|
||||
defaultConnQueueSize = 128
|
||||
)
|
||||
|
||||
const (
|
||||
addr = "addr"
|
||||
)
|
||||
|
||||
type metadata struct {
|
||||
addr string
|
||||
ttl time.Duration
|
||||
ttl time.Duration
|
||||
|
||||
readBufferSize int
|
||||
readQueueSize int
|
||||
|
@ -2,12 +2,12 @@ package ws
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"errors"
|
||||
"net"
|
||||
"net/http"
|
||||
|
||||
"github.com/go-gost/gost/pkg/components/internal/utils"
|
||||
"github.com/go-gost/gost/pkg/components/listener"
|
||||
md "github.com/go-gost/gost/pkg/components/metadata"
|
||||
"github.com/go-gost/gost/pkg/logger"
|
||||
"github.com/go-gost/gost/pkg/registry"
|
||||
"github.com/gorilla/websocket"
|
||||
@ -19,6 +19,7 @@ func init() {
|
||||
}
|
||||
|
||||
type Listener struct {
|
||||
saddr string
|
||||
md metadata
|
||||
addr net.Addr
|
||||
upgrader *websocket.Upgrader
|
||||
@ -34,13 +35,13 @@ func NewListener(opts ...listener.Option) listener.Listener {
|
||||
opt(options)
|
||||
}
|
||||
return &Listener{
|
||||
saddr: options.Addr,
|
||||
logger: options.Logger,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *Listener) Init(md listener.Metadata) (err error) {
|
||||
l.md, err = l.parseMetadata(md)
|
||||
if err != nil {
|
||||
func (l *Listener) Init(md md.Metadata) (err error) {
|
||||
if err = l.parseMetadata(md); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
@ -59,7 +60,7 @@ func (l *Listener) Init(md listener.Metadata) (err error) {
|
||||
mux := http.NewServeMux()
|
||||
mux.Handle(path, http.HandlerFunc(l.upgrade))
|
||||
l.srv = &http.Server{
|
||||
Addr: l.md.addr,
|
||||
Addr: l.saddr,
|
||||
TLSConfig: l.md.tlsConfig,
|
||||
Handler: mux,
|
||||
ReadHeaderTimeout: l.md.readHeaderTimeout,
|
||||
@ -72,7 +73,7 @@ func (l *Listener) Init(md listener.Metadata) (err error) {
|
||||
l.connChan = make(chan net.Conn, queueSize)
|
||||
l.errChan = make(chan error, 1)
|
||||
|
||||
ln, err := net.Listen("tcp", l.md.addr)
|
||||
ln, err := net.Listen("tcp", l.saddr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@ -113,15 +114,12 @@ func (l *Listener) Addr() net.Addr {
|
||||
return l.addr
|
||||
}
|
||||
|
||||
func (l *Listener) parseMetadata(md listener.Metadata) (m metadata, err error) {
|
||||
if val, ok := md[addr]; ok {
|
||||
m.addr = val
|
||||
} else {
|
||||
err = errors.New("missing address")
|
||||
return
|
||||
}
|
||||
|
||||
m.tlsConfig, err = utils.LoadTLSConfig(md[certFile], md[keyFile], md[caFile])
|
||||
func (l *Listener) parseMetadata(md md.Metadata) (err error) {
|
||||
l.md.tlsConfig, err = utils.LoadTLSConfig(
|
||||
md.GetString(certFile),
|
||||
md.GetString(keyFile),
|
||||
md.GetString(caFile),
|
||||
)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -7,7 +7,6 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
addr = "addr"
|
||||
path = "path"
|
||||
certFile = "certFile"
|
||||
keyFile = "keyFile"
|
||||
@ -27,7 +26,6 @@ const (
|
||||
)
|
||||
|
||||
type metadata struct {
|
||||
addr string
|
||||
path string
|
||||
tlsConfig *tls.Config
|
||||
handshakeTimeout time.Duration
|
||||
|
@ -2,12 +2,12 @@ package mux
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"errors"
|
||||
"net"
|
||||
"net/http"
|
||||
|
||||
"github.com/go-gost/gost/pkg/components/internal/utils"
|
||||
"github.com/go-gost/gost/pkg/components/listener"
|
||||
md "github.com/go-gost/gost/pkg/components/metadata"
|
||||
"github.com/go-gost/gost/pkg/logger"
|
||||
"github.com/go-gost/gost/pkg/registry"
|
||||
"github.com/gorilla/websocket"
|
||||
@ -20,6 +20,7 @@ func init() {
|
||||
}
|
||||
|
||||
type Listener struct {
|
||||
saddr string
|
||||
md metadata
|
||||
addr net.Addr
|
||||
upgrader *websocket.Upgrader
|
||||
@ -39,9 +40,8 @@ func NewListener(opts ...listener.Option) listener.Listener {
|
||||
}
|
||||
}
|
||||
|
||||
func (l *Listener) Init(md listener.Metadata) (err error) {
|
||||
l.md, err = l.parseMetadata(md)
|
||||
if err != nil {
|
||||
func (l *Listener) Init(md md.Metadata) (err error) {
|
||||
if err = l.parseMetadata(md); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
@ -60,7 +60,7 @@ func (l *Listener) Init(md listener.Metadata) (err error) {
|
||||
mux := http.NewServeMux()
|
||||
mux.Handle(path, http.HandlerFunc(l.upgrade))
|
||||
l.srv = &http.Server{
|
||||
Addr: l.md.addr,
|
||||
Addr: l.saddr,
|
||||
TLSConfig: l.md.tlsConfig,
|
||||
Handler: mux,
|
||||
ReadHeaderTimeout: l.md.readHeaderTimeout,
|
||||
@ -69,7 +69,7 @@ func (l *Listener) Init(md listener.Metadata) (err error) {
|
||||
l.connChan = make(chan net.Conn, l.md.connQueueSize)
|
||||
l.errChan = make(chan error, 1)
|
||||
|
||||
ln, err := net.Listen("tcp", l.md.addr)
|
||||
ln, err := net.Listen("tcp", l.saddr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@ -110,15 +110,12 @@ func (l *Listener) Addr() net.Addr {
|
||||
return l.addr
|
||||
}
|
||||
|
||||
func (l *Listener) parseMetadata(md listener.Metadata) (m metadata, err error) {
|
||||
if val, ok := md[addr]; ok {
|
||||
m.addr = val
|
||||
} else {
|
||||
err = errors.New("missing address")
|
||||
return
|
||||
}
|
||||
|
||||
m.tlsConfig, err = utils.LoadTLSConfig(md[certFile], md[keyFile], md[caFile])
|
||||
func (l *Listener) parseMetadata(md md.Metadata) (err error) {
|
||||
l.md.tlsConfig, err = utils.LoadTLSConfig(
|
||||
md.GetString(certFile),
|
||||
md.GetString(keyFile),
|
||||
md.GetString(caFile),
|
||||
)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -7,7 +7,6 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
addr = "addr"
|
||||
path = "path"
|
||||
certFile = "certFile"
|
||||
keyFile = "keyFile"
|
||||
@ -34,7 +33,6 @@ const (
|
||||
)
|
||||
|
||||
type metadata struct {
|
||||
addr string
|
||||
path string
|
||||
tlsConfig *tls.Config
|
||||
handshakeTimeout time.Duration
|
||||
|
Reference in New Issue
Block a user