diff options
author | Wim <wim@42.be> | 2018-01-08 22:41:38 +0100 |
---|---|---|
committer | Wim <wim@42.be> | 2018-01-08 22:41:38 +0100 |
commit | 4a96a977c0e86e22edcda40730779279334685be (patch) | |
tree | fea5efa54d17af2d3cadb4d4d5a42f57e9bb7fbe /vendor/github.com/matterbridge/slack/websocket_proxy.go | |
parent | 9a95293bdf74a4d02827018649b6ea0ffdef74ba (diff) | |
download | matterbridge-msglm-4a96a977c0e86e22edcda40730779279334685be.tar.gz matterbridge-msglm-4a96a977c0e86e22edcda40730779279334685be.tar.bz2 matterbridge-msglm-4a96a977c0e86e22edcda40730779279334685be.zip |
Update vendor (slack)
Diffstat (limited to 'vendor/github.com/matterbridge/slack/websocket_proxy.go')
-rw-r--r-- | vendor/github.com/matterbridge/slack/websocket_proxy.go | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/vendor/github.com/matterbridge/slack/websocket_proxy.go b/vendor/github.com/matterbridge/slack/websocket_proxy.go deleted file mode 100644 index 440015d6..00000000 --- a/vendor/github.com/matterbridge/slack/websocket_proxy.go +++ /dev/null @@ -1,83 +0,0 @@ -package slack - -import ( - "crypto/tls" - "errors" - "net" - "net/http" - "net/http/httputil" - "net/url" - "os" - "strings" - - "golang.org/x/net/websocket" -) - -// Taken and reworked from: https://gist.github.com/madmo/8548738 -func websocketHTTPConnect(proxy, urlString string) (net.Conn, error) { - p, err := net.Dial("tcp", proxy) - if err != nil { - return nil, err - } - - turl, err := url.Parse(urlString) - if err != nil { - return nil, err - } - - req := http.Request{ - Method: "CONNECT", - URL: &url.URL{}, - Host: turl.Host, - } - - cc := httputil.NewProxyClientConn(p, nil) - cc.Do(&req) - if err != nil && err != httputil.ErrPersistEOF { - return nil, err - } - - rwc, _ := cc.Hijack() - - return rwc, nil -} - -func websocketProxyDial(urlString, origin string) (ws *websocket.Conn, err error) { - if os.Getenv("HTTP_PROXY") == "" { - return websocket.Dial(urlString, "", origin) - } - - purl, err := url.Parse(os.Getenv("HTTP_PROXY")) - if err != nil { - return nil, err - } - - config, err := websocket.NewConfig(urlString, origin) - if err != nil { - return nil, err - } - - client, err := websocketHTTPConnect(purl.Host, urlString) - if err != nil { - return nil, err - } - - switch config.Location.Scheme { - case "ws": - case "wss": - tlsClient := tls.Client(client, &tls.Config{ - ServerName: strings.Split(config.Location.Host, ":")[0], - }) - err := tlsClient.Handshake() - if err != nil { - tlsClient.Close() - return nil, err - } - client = tlsClient - - default: - return nil, errors.New("invalid websocket schema") - } - - return websocket.NewClient(config, client) -} |