add tls config option
This commit is contained in:
@ -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,
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user