Skip to content

Commit 3ede32e

Browse files
authored
Merge pull request docker#40 from vdemeester/remove-logrus-dep
Remove logrus dependency from any packages in go-connections
2 parents e15c023 + b38325e commit 3ede32e

File tree

6 files changed

+39
-22
lines changed

6 files changed

+39
-22
lines changed

proxy/logger.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package proxy
2+
3+
type logger interface {
4+
Printf(format string, args ...interface{})
5+
}
6+
7+
type noopLogger struct{}
8+
9+
func (l *noopLogger) Printf(_ string, _ ...interface{}) {
10+
// Do nothing :)
11+
}

proxy/tcp_proxy.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,37 +4,43 @@ import (
44
"io"
55
"net"
66
"syscall"
7-
8-
"github.com/Sirupsen/logrus"
97
)
108

119
// TCPProxy is a proxy for TCP connections. It implements the Proxy interface to
1210
// handle TCP traffic forwarding between the frontend and backend addresses.
1311
type TCPProxy struct {
12+
Logger logger
1413
listener *net.TCPListener
1514
frontendAddr *net.TCPAddr
1615
backendAddr *net.TCPAddr
1716
}
1817

1918
// NewTCPProxy creates a new TCPProxy.
20-
func NewTCPProxy(frontendAddr, backendAddr *net.TCPAddr) (*TCPProxy, error) {
19+
func NewTCPProxy(frontendAddr, backendAddr *net.TCPAddr, ops ...func(*TCPProxy)) (*TCPProxy, error) {
2120
listener, err := net.ListenTCP("tcp", frontendAddr)
2221
if err != nil {
2322
return nil, err
2423
}
2524
// If the port in frontendAddr was 0 then ListenTCP will have a picked
2625
// a port to listen on, hence the call to Addr to get that actual port:
27-
return &TCPProxy{
26+
proxy := &TCPProxy{
2827
listener: listener,
2928
frontendAddr: listener.Addr().(*net.TCPAddr),
3029
backendAddr: backendAddr,
31-
}, nil
30+
Logger: &noopLogger{},
31+
}
32+
33+
for _, op := range ops {
34+
op(proxy)
35+
}
36+
37+
return proxy, nil
3238
}
3339

3440
func (proxy *TCPProxy) clientLoop(client *net.TCPConn, quit chan bool) {
3541
backend, err := net.DialTCP("tcp", nil, proxy.backendAddr)
3642
if err != nil {
37-
logrus.Printf("Can't forward traffic to backend tcp/%v: %s\n", proxy.backendAddr, err)
43+
proxy.Logger.Printf("Can't forward traffic to backend tcp/%v: %s\n", proxy.backendAddr, err)
3844
client.Close()
3945
return
4046
}
@@ -82,7 +88,7 @@ func (proxy *TCPProxy) Run() {
8288
for {
8389
client, err := proxy.listener.Accept()
8490
if err != nil {
85-
logrus.Printf("Stopping proxy on tcp/%v for tcp/%v (%s)", proxy.frontendAddr, proxy.backendAddr, err)
91+
proxy.Logger.Printf("Stopping proxy on tcp/%v for tcp/%v (%s)", proxy.frontendAddr, proxy.backendAddr, err)
8692
return
8793
}
8894
go proxy.clientLoop(client.(*net.TCPConn), quit)

proxy/udp_proxy.go

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ import (
77
"sync"
88
"syscall"
99
"time"
10-
11-
"github.com/Sirupsen/logrus"
1210
)
1311

1412
const (
@@ -47,6 +45,7 @@ type connTrackMap map[connTrackKey]*net.UDPConn
4745
// interface to handle UDP traffic forwarding between the frontend and backend
4846
// addresses.
4947
type UDPProxy struct {
48+
Logger logger
5049
listener *net.UDPConn
5150
frontendAddr *net.UDPAddr
5251
backendAddr *net.UDPAddr
@@ -55,17 +54,25 @@ type UDPProxy struct {
5554
}
5655

5756
// NewUDPProxy creates a new UDPProxy.
58-
func NewUDPProxy(frontendAddr, backendAddr *net.UDPAddr) (*UDPProxy, error) {
57+
func NewUDPProxy(frontendAddr, backendAddr *net.UDPAddr, ops ...func(*UDPProxy)) (*UDPProxy, error) {
5958
listener, err := net.ListenUDP("udp", frontendAddr)
6059
if err != nil {
6160
return nil, err
6261
}
63-
return &UDPProxy{
62+
63+
proxy := &UDPProxy{
6464
listener: listener,
6565
frontendAddr: listener.LocalAddr().(*net.UDPAddr),
6666
backendAddr: backendAddr,
6767
connTrackTable: make(connTrackMap),
68-
}, nil
68+
Logger: &noopLogger{},
69+
}
70+
71+
for _, op := range ops {
72+
op(proxy)
73+
}
74+
75+
return proxy, nil
6976
}
7077

7178
func (proxy *UDPProxy) replyLoop(proxyConn *net.UDPConn, clientAddr *net.UDPAddr, clientKey *connTrackKey) {
@@ -112,7 +119,7 @@ func (proxy *UDPProxy) Run() {
112119
// ECONNREFUSED like Read do (see comment in
113120
// UDPProxy.replyLoop)
114121
if !isClosedError(err) {
115-
logrus.Printf("Stopping proxy on udp/%v for udp/%v (%s)", proxy.frontendAddr, proxy.backendAddr, err)
122+
proxy.Logger.Printf("Stopping proxy on udp/%v for udp/%v (%s)", proxy.frontendAddr, proxy.backendAddr, err)
116123
}
117124
break
118125
}
@@ -123,7 +130,7 @@ func (proxy *UDPProxy) Run() {
123130
if !hit {
124131
proxyConn, err = net.DialUDP("udp", nil, proxy.backendAddr)
125132
if err != nil {
126-
logrus.Printf("Can't proxy a datagram to udp/%s: %s\n", proxy.backendAddr, err)
133+
proxy.Logger.Printf("Can't proxy a datagram to udp/%s: %s\n", proxy.backendAddr, err)
127134
proxy.connTrackLock.Unlock()
128135
continue
129136
}
@@ -134,7 +141,7 @@ func (proxy *UDPProxy) Run() {
134141
for i := 0; i != read; {
135142
written, err := proxyConn.Write(readBuf[i:read])
136143
if err != nil {
137-
logrus.Printf("Can't proxy a datagram to udp/%s: %s\n", proxy.backendAddr, err)
144+
proxy.Logger.Printf("Can't proxy a datagram to udp/%s: %s\n", proxy.backendAddr, err)
138145
break
139146
}
140147
i += written

tlsconfig/certpool_go17.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,13 @@ package tlsconfig
55
import (
66
"crypto/x509"
77
"runtime"
8-
9-
"github.com/Sirupsen/logrus"
108
)
119

1210
// SystemCertPool returns a copy of the system cert pool,
1311
// returns an error if failed to load or empty pool on windows.
1412
func SystemCertPool() (*x509.CertPool, error) {
1513
certpool, err := x509.SystemCertPool()
1614
if err != nil && runtime.GOOS == "windows" {
17-
logrus.Infof("Unable to use system certificate pool: %v", err)
1815
return x509.NewCertPool(), nil
1916
}
2017
return certpool, err

tlsconfig/certpool_other.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,10 @@ package tlsconfig
55
import (
66
"crypto/x509"
77

8-
"github.com/Sirupsen/logrus"
98
)
109

1110
// SystemCertPool returns an new empty cert pool,
1211
// accessing system cert pool is supported in go 1.7
1312
func SystemCertPool() (*x509.CertPool, error) {
14-
logrus.Warn("Unable to use system certificate pool: requires building with go 1.7 or later")
1513
return x509.NewCertPool(), nil
1614
}

tlsconfig/config.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import (
1313
"io/ioutil"
1414
"os"
1515

16-
"github.com/Sirupsen/logrus"
1716
"github.com/pkg/errors"
1817
)
1918

@@ -106,7 +105,6 @@ func certPool(caFile string, exclusivePool bool) (*x509.CertPool, error) {
106105
if !certPool.AppendCertsFromPEM(pem) {
107106
return nil, fmt.Errorf("failed to append certificates from PEM file: %q", caFile)
108107
}
109-
logrus.Debugf("Trusting %d certs", len(certPool.Subjects()))
110108
return certPool, nil
111109
}
112110

0 commit comments

Comments
 (0)