diff --git a/_examples/tcp/node_modules/.mf/cf.json b/_examples/tcp/node_modules/.mf/cf.json new file mode 100644 index 0000000..a253028 --- /dev/null +++ b/_examples/tcp/node_modules/.mf/cf.json @@ -0,0 +1 @@ +{"clientTcpRtt":4,"longitude":"-87.63830","latitude":"41.90320","tlsCipher":"AEAD-AES256-GCM-SHA384","continent":"NA","asn":6079,"clientAcceptEncoding":"br, gzip, deflate","country":"US","tlsClientAuth":{"certIssuerDNLegacy":"","certIssuerSKI":"","certSubjectDNRFC2253":"","certSubjectDNLegacy":"","certFingerprintSHA256":"","certNotBefore":"","certSKI":"","certSerial":"","certIssuerDN":"","certVerified":"NONE","certNotAfter":"","certSubjectDN":"","certPresented":"0","certRevoked":"0","certIssuerSerial":"","certIssuerDNRFC2253":"","certFingerprintSHA1":""},"tlsExportedAuthenticator":{"clientFinished":"6e17d4f96eca419c75c86d5a6beedcac3a1f0875c7c2d29054eca3e9c09210983f8e5786cc6a749a9b4d045787c0f55b","clientHandshake":"15735c095eaf758b59290283e2a625c70218b96312ef4a105664187187b7fcda9bb9f16d68ebe9ae7e2591ea3cdd5399","serverHandshake":"af89a947c9949945b1b4f01ca88573f4c6015cd5b0eda73f13c225a442af0c23b2e46afce3d04d7879a29f887b05be2d","serverFinished":"42abe67a58a7cb1215fb1dc9e0e9c143603879b2f2210f9cfa0005e2e2d06062a16ac6e03d2867e20f5d07e992404101"},"tlsVersion":"TLSv1.3","colo":"ORD","timezone":"America/Chicago","city":"Chicago","httpProtocol":"HTTP/1.1","edgeRequestKeepAliveStatus":1,"requestPriority":"","botManagement":{"corporateProxy":false,"verifiedBot":false,"ja3Hash":"0cce74b0d9b7f8528fb2181588d23793","staticResource":false,"detectionIds":{},"score":4},"clientTrustScore":4,"region":"Illinois","regionCode":"IL","asOrganization":"Astound Broadband","metroCode":"602","postalCode":"60610"} \ No newline at end of file diff --git a/cloudflare/socket.go b/cloudflare/socket.go index 474874a..118353f 100644 --- a/cloudflare/socket.go +++ b/cloudflare/socket.go @@ -49,14 +49,17 @@ func (d *Dialer) Dial(ctx context.Context, network, addr string) (net.Conn, erro } sock := &TCPSocket{} sock.socket = d.connect.Invoke(addr, optionsObj) + sock.options = d.opts + sock.ctx, sock.cn = context.WithCancel(ctx) + sock.init(d.ctx) + return sock, nil +} + +func (sock *TCPSocket) init(ctx context.Context) { sock.writer = sock.socket.Get("writable").Call("getWriter") sock.reader = sock.socket.Get("readable").Call("getReader") - sock.options = d.opts sock.rd = jsutil.ConvertReadableStreamToReader(sock.reader) - - sock.ctx, sock.cn = context.WithCancel(d.ctx) - - return sock, nil + return } type TCPSocket struct { @@ -123,9 +126,10 @@ func (t *TCPSocket) Write(b []byte) (n int, err error) { } // StartTls will call startTls on the socket -func (t *TCPSocket) StartTls() error { - t.socket.Call("startTls") - return nil +func (t *TCPSocket) StartTls() *TCPSocket { + t.socket = t.socket.Call("startTls") + t.init(t.ctx) + return t } // Close closes the connection.