add sni handler

This commit is contained in:
ginuerzh
2021-11-25 23:08:03 +08:00
parent 6daf0a4d0f
commit 5b97b878fb
12 changed files with 351 additions and 56 deletions

View File

@ -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
}

View File

@ -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
}