add tls config option

This commit is contained in:
ginuerzh
2022-01-05 00:02:55 +08:00
parent c428b37a36
commit 3b48c4acfb
43 changed files with 395 additions and 496 deletions

View File

@ -22,35 +22,35 @@ func init() {
type h2Listener struct {
server *http.Server
saddr string
addr net.Addr
cqueue chan net.Conn
errChan chan error
logger logger.Logger
md metadata
h2c bool
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 &h2Listener{
saddr: options.Addr,
logger: options.Logger,
h2c: true,
h2c: true,
logger: options.Logger,
options: options,
}
}
func NewTLSListener(opts ...listener.Option) listener.Listener {
options := &listener.Options{}
options := listener.Options{}
for _, opt := range opts {
opt(options)
opt(&options)
}
return &h2Listener{
saddr: options.Addr,
logger: options.Logger,
logger: options.Logger,
options: options,
}
}
@ -60,10 +60,10 @@ func (l *h2Listener) Init(md md.Metadata) (err error) {
}
l.server = &http.Server{
Addr: l.saddr,
Addr: l.options.Addr,
}
ln, err := net.Listen("tcp", l.saddr)
ln, err := net.Listen("tcp", l.options.Addr)
if err != nil {
return err
}
@ -74,12 +74,12 @@ func (l *h2Listener) Init(md md.Metadata) (err error) {
http.HandlerFunc(l.handleFunc), &http2.Server{})
} else {
l.server.Handler = http.HandlerFunc(l.handleFunc)
l.server.TLSConfig = l.md.tlsConfig
l.server.TLSConfig = l.options.TLSConfig
if err := http2.ConfigureServer(l.server, nil); err != nil {
ln.Close()
return err
}
ln = tls.NewListener(ln, l.md.tlsConfig)
ln = tls.NewListener(ln, l.options.TLSConfig)
}
l.cqueue = make(chan net.Conn, l.md.backlog)

View File

@ -1,9 +1,6 @@
package h2
import (
"crypto/tls"
tls_util "github.com/go-gost/gost/pkg/common/util/tls"
mdata "github.com/go-gost/gost/pkg/metadata"
)
@ -12,29 +9,16 @@ const (
)
type metadata struct {
path string
tlsConfig *tls.Config
backlog int
path string
backlog int
}
func (l *h2Listener) parseMetadata(md mdata.Metadata) (err error) {
const (
path = "path"
certFile = "certFile"
keyFile = "keyFile"
caFile = "caFile"
backlog = "backlog"
path = "path"
backlog = "backlog"
)
l.md.tlsConfig, err = tls_util.LoadServerConfig(
mdata.GetString(md, certFile),
mdata.GetString(md, keyFile),
mdata.GetString(md, caFile),
)
if err != nil {
return
}
l.md.backlog = mdata.GetInt(md, backlog)
if l.md.backlog <= 0 {
l.md.backlog = defaultBacklog

View File

@ -20,22 +20,22 @@ func init() {
type http2Listener struct {
server *http.Server
saddr string
addr net.Addr
cqueue chan net.Conn
errChan chan error
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 &http2Listener{
saddr: options.Addr,
logger: options.Logger,
logger: options.Logger,
options: options,
}
}
@ -45,15 +45,15 @@ func (l *http2Listener) Init(md md.Metadata) (err error) {
}
l.server = &http.Server{
Addr: l.saddr,
Addr: l.options.Addr,
Handler: http.HandlerFunc(l.handleFunc),
TLSConfig: l.md.tlsConfig,
TLSConfig: l.options.TLSConfig,
}
if err := http2.ConfigureServer(l.server, nil); err != nil {
return err
}
ln, err := net.Listen("tcp", l.saddr)
ln, err := net.Listen("tcp", l.options.Addr)
if err != nil {
return err
}
@ -63,7 +63,7 @@ func (l *http2Listener) Init(md md.Metadata) (err error) {
&util.TCPKeepAliveListener{
TCPListener: ln.(*net.TCPListener),
},
l.md.tlsConfig,
l.options.TLSConfig,
)
l.cqueue = make(chan net.Conn, l.md.backlog)

View File

@ -1,11 +1,9 @@
package http2
import (
"crypto/tls"
"net/http"
"time"
tls_util "github.com/go-gost/gost/pkg/common/util/tls"
mdata "github.com/go-gost/gost/pkg/metadata"
)
@ -15,7 +13,6 @@ const (
type metadata struct {
path string
tlsConfig *tls.Config
handshakeTimeout time.Duration
readHeaderTimeout time.Duration
readBufferSize int
@ -28,9 +25,6 @@ type metadata struct {
func (l *http2Listener) parseMetadata(md mdata.Metadata) (err error) {
const (
path = "path"
certFile = "certFile"
keyFile = "keyFile"
caFile = "caFile"
handshakeTimeout = "handshakeTimeout"
readHeaderTimeout = "readHeaderTimeout"
readBufferSize = "readBufferSize"
@ -38,15 +32,6 @@ func (l *http2Listener) parseMetadata(md mdata.Metadata) (err error) {
backlog = "backlog"
)
l.md.tlsConfig, err = tls_util.LoadServerConfig(
mdata.GetString(md, certFile),
mdata.GetString(md, keyFile),
mdata.GetString(md, caFile),
)
if err != nil {
return
}
l.md.backlog = mdata.GetInt(md, backlog)
if l.md.backlog <= 0 {
l.md.backlog = defaultBacklog