add sni handler
This commit is contained in:
@ -5,7 +5,6 @@ import (
|
||||
"net"
|
||||
|
||||
"github.com/go-gost/gost/pkg/common/util"
|
||||
tls_util "github.com/go-gost/gost/pkg/common/util/tls"
|
||||
"github.com/go-gost/gost/pkg/listener"
|
||||
"github.com/go-gost/gost/pkg/logger"
|
||||
md "github.com/go-gost/gost/pkg/metadata"
|
||||
@ -55,17 +54,3 @@ func (l *tlsListener) Init(md md.Metadata) (err error) {
|
||||
l.Listener = ln
|
||||
return
|
||||
}
|
||||
|
||||
func (l *tlsListener) parseMetadata(md md.Metadata) (err error) {
|
||||
l.md.tlsConfig, err = tls_util.LoadTLSConfig(
|
||||
md.GetString(certFile),
|
||||
md.GetString(keyFile),
|
||||
md.GetString(caFile),
|
||||
)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
l.md.keepAlivePeriod = md.GetDuration(keepAlivePeriod)
|
||||
return
|
||||
}
|
||||
|
@ -3,16 +3,39 @@ package tls
|
||||
import (
|
||||
"crypto/tls"
|
||||
"time"
|
||||
)
|
||||
|
||||
const (
|
||||
certFile = "certFile"
|
||||
keyFile = "keyFile"
|
||||
caFile = "caFile"
|
||||
keepAlivePeriod = "keepAlivePeriod"
|
||||
tls_util "github.com/go-gost/gost/pkg/common/util/tls"
|
||||
md "github.com/go-gost/gost/pkg/metadata"
|
||||
)
|
||||
|
||||
type metadata struct {
|
||||
tlsConfig *tls.Config
|
||||
keepAlivePeriod time.Duration
|
||||
}
|
||||
|
||||
func (l *tlsListener) parseMetadata(md md.Metadata) (err error) {
|
||||
const (
|
||||
certFile = "certFile"
|
||||
keyFile = "keyFile"
|
||||
caFile = "caFile"
|
||||
keepAlivePeriod = "keepAlivePeriod"
|
||||
)
|
||||
|
||||
if md.GetString(certFile) != "" ||
|
||||
md.GetString(keyFile) != "" ||
|
||||
md.GetString(caFile) != "" {
|
||||
l.md.tlsConfig, err = tls_util.LoadTLSConfig(
|
||||
md.GetString(certFile),
|
||||
md.GetString(keyFile),
|
||||
md.GetString(caFile),
|
||||
)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
} else {
|
||||
l.md.tlsConfig = tls_util.DefaultConfig
|
||||
}
|
||||
|
||||
l.md.keepAlivePeriod = md.GetDuration(keepAlivePeriod)
|
||||
return
|
||||
}
|
||||
|
Reference in New Issue
Block a user