From 0a0756e60932328e272fc0bbff5d9ed5e4b9b141 Mon Sep 17 00:00:00 2001 From: Roman Vasilyev Date: Fri, 12 Apr 2019 13:13:00 -0700 Subject: [PATCH 1/2] ability to disable certificate check --- recws.go | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/recws.go b/recws.go index 62ba6c4..2fc6ca9 100644 --- a/recws.go +++ b/recws.go @@ -3,6 +3,7 @@ package recws import ( + "crypto/tls" "errors" "log" "math/rand" @@ -36,6 +37,7 @@ type RecConn struct { // Proxy specifies the proxy function for the dialer // defaults to ProxyFromEnvironment Proxy func(*http.Request) (*url.URL, error) + TLSClientConfig *tls.Config // SubscribeHandler fires after the connection successfully establish. SubscribeHandler func() error // KeepAliveTimeout is an interval for sending ping/pong messages @@ -243,13 +245,14 @@ func (rc *RecConn) setDefaultProxy() { } } -func (rc *RecConn) setDefaultDialer(handshakeTimeout time.Duration) { +func (rc *RecConn) setDefaultDialer(tlsClientConfig *tls.Config, handshakeTimeout time.Duration) { rc.mu.Lock() defer rc.mu.Unlock() rc.dialer = &websocket.Dialer{ HandshakeTimeout: handshakeTimeout, Proxy: rc.Proxy, + TLSClientConfig: tlsClientConfig, } } @@ -260,6 +263,20 @@ func (rc *RecConn) getHandshakeTimeout() time.Duration { return rc.HandshakeTimeout } +func (rc *RecConn) getTLSClientConfig() *tls.Config { + rc.mu.RLock() + defer rc.mu.RUnlock() + + return rc.TLSClientConfig +} + +func (rc *RecConn) SetTLSClientConfig(tlsClientConfig *tls.Config) { + rc.mu.Lock() + defer rc.mu.Unlock() + + rc.TLSClientConfig = tlsClientConfig +} + // Dial creates a new client connection. // The URL url specifies the host and request URI. Use requestHeader to specify // the origin (Origin), subprotocols (Sec-WebSocket-Protocol) and cookies @@ -280,7 +297,7 @@ func (rc *RecConn) Dial(urlStr string, reqHeader http.Header) { rc.setDefaultRecIntvlFactor() rc.setDefaultHandshakeTimeout() rc.setDefaultProxy() - rc.setDefaultDialer(rc.getHandshakeTimeout()) + rc.setDefaultDialer(rc.getTLSClientConfig(), rc.getHandshakeTimeout()) // Connect go rc.connect() From 8f5f157d7b6014826440dba8b3c913686c9b8023 Mon Sep 17 00:00:00 2001 From: Roman Vasilyev Date: Thu, 28 Nov 2019 10:18:45 -0800 Subject: [PATCH 2/2] more descriptive comment --- recws.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recws.go b/recws.go index 2fc6ca9..60eeb91 100644 --- a/recws.go +++ b/recws.go @@ -37,7 +37,8 @@ type RecConn struct { // Proxy specifies the proxy function for the dialer // defaults to ProxyFromEnvironment Proxy func(*http.Request) (*url.URL, error) - TLSClientConfig *tls.Config + // Client TLS config to use on reconnect + TLSClientConfig *tls.Config // SubscribeHandler fires after the connection successfully establish. SubscribeHandler func() error // KeepAliveTimeout is an interval for sending ping/pong messages