/
config.go
54 lines (43 loc) · 1.25 KB
/
config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package tlslistener
import (
"context"
"net"
"github.com/rekby/lets-proxy2/internal/log"
zc "github.com/rekby/zapcontext"
"go.uber.org/zap"
)
type Config struct {
TLSAddresses []string
TCPAddresses []string
MinTLSVersion string
}
func (c Config) Apply(ctx context.Context, l *ListenersHandler) error {
logger := zc.L(ctx)
var tlsListeners = make([]net.Listener, 0, len(c.TLSAddresses))
for _, addr := range c.TLSAddresses { //nolint:wsl
listener, err := net.Listen("tcp", addr)
log.DebugError(logger, err, "Start listen tls binding", zap.String("address", addr))
if err != nil {
return err
}
tlsListeners = append(tlsListeners, listener)
}
var tcpListeners = make([]net.Listener, 0, len(c.TCPAddresses))
for _, addr := range c.TCPAddresses {
listener, err := net.Listen("tcp", addr)
log.DebugError(logger, err, "Start listen tcp binding", zap.String("address", addr))
if err != nil {
return err
}
tcpListeners = append(tcpListeners, listener)
}
l.ListenersForHandleTLS = tlsListeners
l.Listeners = tcpListeners
if tlsVersion, err := ParseTLSVersion(c.MinTLSVersion); err == nil {
l.MinTLSVersion = tlsVersion
logger.Info("Min tls version", zap.String("tls_version", c.MinTLSVersion))
} else {
return err
}
return nil
}