-
Notifications
You must be signed in to change notification settings - Fork 29
/
tcp_handler.go
38 lines (28 loc) · 845 Bytes
/
tcp_handler.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
package main
import (
"crypto/tls"
"fmt"
"net"
"github.com/kdudkov/goatak/pkg/tlsutil"
)
func (app *App) connect() (net.Conn, error) {
addr := fmt.Sprintf("%s:%s", app.host, app.tcpPort)
if app.tls {
app.logger.Info(fmt.Sprintf("connecting with SSL to %s...", addr))
conn, err := tls.Dial("tcp", addr, app.getTLSConfig())
if err != nil {
return nil, err
}
app.logger.Debug("handshake...")
if err := conn.Handshake(); err != nil {
return conn, err
}
cs := conn.ConnectionState()
app.logger.Info(fmt.Sprintf("Handshake complete: %t", cs.HandshakeComplete))
app.logger.Info(fmt.Sprintf("version: %d", cs.Version))
tlsutil.LogCerts(app.logger, cs.PeerCertificates...)
return conn, nil
}
app.logger.Info(fmt.Sprintf("connecting to %s...", addr))
return net.DialTimeout("tcp", addr, app.dialTimeout)
}