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

@ -21,23 +21,23 @@ func init() {
}
type dnsListener struct {
saddr string
addr net.Addr
server Server
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 &dnsListener{
saddr: options.Addr,
logger: options.Logger,
logger: options.Logger,
options: options,
}
}
@ -46,7 +46,7 @@ func (l *dnsListener) Init(md md.Metadata) (err error) {
return
}
l.addr, err = net.ResolveTCPAddr("tcp", l.saddr)
l.addr, err = net.ResolveTCPAddr("tcp", l.options.Addr)
if err != nil {
return err
}
@ -55,7 +55,7 @@ func (l *dnsListener) Init(md md.Metadata) (err error) {
case "tcp":
l.server = &dns.Server{
Net: "tcp",
Addr: l.saddr,
Addr: l.options.Addr,
Handler: l,
ReadTimeout: l.md.readTimeout,
WriteTimeout: l.md.writeTimeout,
@ -63,16 +63,16 @@ func (l *dnsListener) Init(md md.Metadata) (err error) {
case "tls":
l.server = &dns.Server{
Net: "tcp-tls",
Addr: l.saddr,
Addr: l.options.Addr,
Handler: l,
TLSConfig: l.md.tlsConfig,
TLSConfig: l.options.TLSConfig,
ReadTimeout: l.md.readTimeout,
WriteTimeout: l.md.writeTimeout,
}
case "https":
l.server = &dohServer{
addr: l.saddr,
tlsConfig: l.md.tlsConfig,
addr: l.options.Addr,
tlsConfig: l.options.TLSConfig,
server: &http.Server{
Handler: l,
ReadTimeout: l.md.readTimeout,
@ -80,10 +80,10 @@ func (l *dnsListener) Init(md md.Metadata) (err error) {
},
}
default:
l.addr, err = net.ResolveUDPAddr("udp", l.saddr)
l.addr, err = net.ResolveUDPAddr("udp", l.options.Addr)
l.server = &dns.Server{
Net: "udp",
Addr: l.saddr,
Addr: l.options.Addr,
Handler: l,
UDPSize: l.md.readBufferSize,
ReadTimeout: l.md.readTimeout,

View File

@ -1,10 +1,8 @@
package dns
import (
"crypto/tls"
"time"
tls_util "github.com/go-gost/gost/pkg/common/util/tls"
mdata "github.com/go-gost/gost/pkg/metadata"
)
@ -17,7 +15,6 @@ type metadata struct {
readBufferSize int
readTimeout time.Duration
writeTimeout time.Duration
tlsConfig *tls.Config
backlog int
}
@ -26,24 +23,12 @@ func (l *dnsListener) parseMetadata(md mdata.Metadata) (err error) {
mode = "mode"
readBufferSize = "readBufferSize"
certFile = "certFile"
keyFile = "keyFile"
caFile = "caFile"
backlog = "backlog"
)
l.md.mode = mdata.GetString(md, mode)
l.md.readBufferSize = mdata.GetInt(md, readBufferSize)
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