Sudarsan Reddy
368066a966
TUN-3615: added support to proxy tcp streams
...
added ingress.DefaultStreamHandler and a basic test for tcp stream proxy
moved websocket.Stream to ingress
cloudflared no longer picks tcpstream host from header
2021-02-23 14:19:47 +00:00
cthuang
e2262085e5
TUN-3617: Separate service from client, and implement different client for http vs. tcp origins
...
- extracted ResponseWriter from proxyConnection
- added bastion tests over websocket
- removed HTTPResp()
- added some docstrings
- Renamed some ingress clients as proxies
- renamed instances of client to proxy in connection and origin
- Stream no longer takes a context and logger.Service
2021-02-23 14:19:44 +00:00
Nuno Diegues
e9c2afec56
TUN-3948: Log error when retrying connection
2021-02-23 11:40:29 +00:00
Adam Chalmers
a278753bbf
TUN-3902: Add jitter to backoffhandler
...
Jitter is important to avoid every cloudflared in the world trying to
reconnect at t=1, 2, 4, etc. That could overwhelm the backend. But
if each cloudflared randomly waits for up to 2, then up to 4, then up
to 8 etc, then the retries get spread out evenly across time.
On average, wait times should be the same (e.g. instead of waiting for
exactly 1 second, cloudflared will wait betweeen 0 and 2 seconds).
This is the "Full Jitter" algorithm from https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/
2021-02-11 14:36:13 +00:00
Igor Postelnik
0b16a473da
TUN-3869: Improve reliability of graceful shutdown.
...
- Don't rely on edge to close connection on graceful shutdown in h2mux, start muxer shutdown from cloudflared.
- Don't retry failed connections after graceful shutdown has started.
- After graceful shutdown channel is closed we stop waiting for retry timer and don't try to restart tunnel loop.
- Use readonly channel for graceful shutdown in functions that only consume the signal
2021-02-08 14:30:32 +00:00
Adam Chalmers
0d22106416
TUN-3848: Use transport logger for h2mux
2021-02-03 17:31:16 -06:00
Areg Harutyunyan
b72ee69eef
TUN-3837: Remove automation_email from cloudflared status page test
2021-02-01 15:07:37 +00:00
Igor Postelnik
a945518404
TUN-3811: Better error reporting on http2 connection termination. Registration errors from control loop are now propagated out of the connection server code. Unified error handling between h2mux and http2 connections so we log and retry errors the same way, regardless of underlying transport.
2021-01-28 10:38:30 -06:00
Igor Postelnik
d87bfcbe55
TUN-3795: Removed errant test
2021-01-26 11:56:02 -06:00
Igor Postelnik
0df4f7dd24
TUN-3795: Use RFC-3339 style date format for logs, produce timestamp in UTC
2021-01-26 15:04:33 +00:00
Igor Postelnik
d503aeaf77
TUN-3118: Changed graceful shutdown to immediately unregister tunnel from the edge, keep the connection open until the edge drops it or grace period expires
2021-01-22 11:14:36 -06:00
Igor Postelnik
db0562c7b8
Fixed connection error handling by removing duplicated errors, standardizing on non-pointer error types
2021-01-22 10:58:06 -06:00
Igor Postelnik
04b1e4f859
TUN-3738: Refactor observer to avoid potential of blocking on tunnel notifications
2021-01-18 11:16:23 +00:00
Nuno Diegues
146c2d944a
TUN-3594: Log ingress response at debug level
2021-01-15 19:06:54 +00:00
Areg Harutyunyan
55bf904689
TUN-3471: Add structured log context to logs
2021-01-05 20:21:16 +00:00
Adam Chalmers
b855e33327
TUN-3706: Quit if any origin service fails to start
2020-12-30 13:48:19 -06:00
Areg Harutyunyan
870f5fa907
TUN-3470: Replace in-house logger calls with zerolog
2020-12-23 14:15:17 -06:00
Adam Chalmers
38fb0b28b6
TUN-3593: /ready endpoint for k8s readiness. Move tunnel events out of UI package, into connection package.
2020-12-02 15:22:59 -06:00
cthuang
bda8fe2fbe
TUN-3594: Log response status at debug level
2020-11-27 12:28:20 +00:00
Adam Chalmers
69fd502db3
TUN-3581: Tunnels can be run by name using only --credentials-file, no
...
origin cert necessary.
2020-11-25 09:54:28 -06:00
cthuang
fdb1f961b3
TUN-3557: Detect SSE if content-type starts with text/event-stream
2020-11-18 15:59:41 +00:00
cthuang
543169c893
TUN-3490: Make sure OriginClient implementation doesn't write after Proxy return
2020-11-11 15:21:00 +00:00
cthuang
d5769519b2
TUN-3489: Add unit tests to cover proxy logic in connection package of cloudflared
2020-11-11 15:21:00 +00:00
cthuang
5974fb4cfd
TUN-3500: Integrate replace h2mux by http2 work with multiple origin support
2020-11-11 15:20:57 +00:00
cthuang
eef5b78eac
TUN-3480: Support SSE with http2 connection, and add SSE handler to hello-world server
2020-11-11 15:12:17 +00:00
cthuang
6b86f81c4a
TUN-3403: Unit test for origin/proxy to test serving HTTP and Websocket
2020-11-11 15:12:15 +00:00
cthuang
a490443630
TUN-3458: Upgrade to http2 when available, fallback to h2mux when we reach max retries
2020-11-11 15:11:42 +00:00
cthuang
b5cdf3b2c7
TUN-3456: New protocol option auto to automatically select between http2 and h2mux
2020-11-11 15:11:42 +00:00
cthuang
9ac40dcf04
TUN-3462: Refactor cloudflared to separate origin from connection
2020-11-11 15:11:42 +00:00
cthuang
a5a5b93b64
TUN-3420: Establish control plane and send RPC over control plane
2020-11-11 15:11:42 +00:00
cthuang
cb39f26f27
TUN-3406: Proxy websocket requests over Go http2
2020-11-11 15:11:42 +00:00
cthuang
8d7b2575ba
TUN-3400: Use Go HTTP2 library as transport to connect with the edge
2020-11-11 15:11:42 +00:00
cthuang
d7498b0c03
TUN-3449: Use flag to select transport protocol implementation
2020-11-11 15:11:42 +00:00
cthuang
be9a558867
TUN-3503: Matching ingress rule should not take port into account
2020-11-05 15:36:12 +00:00
Adam Chalmers
d01770107e
TUN-3492: Refactor OriginService, shrink its interface
2020-11-04 21:28:33 +00:00
Adam Chalmers
e933ef9e1a
TUN-2640: Users can configure per-origin config. Unify single-rule CLI
...
flow with multi-rule config file code.
2020-10-30 07:42:20 -05:00
Adam Chalmers
c96b9e8d8f
TUN-3464: Newtype to wrap []ingress.Rule
2020-10-15 12:48:14 -05:00
Adam Chalmers
4a4a1bb6b1
TUN-3441: Multiple-origin routing via ingress rules
2020-10-13 08:55:17 -05:00
Adam Chalmers
0eebc7cef9
TUN-3438: move ingress into own package, read into TunnelConfig
2020-10-12 16:33:22 +00:00
cthuang
2c9b7361b7
TUN-3427: Define a struct that only implements RegistrationServer in tunnelpogs
2020-10-01 09:08:32 +01:00
Areg Harutyunyan
747427f816
TUN-3216: UI improvements
2020-09-17 13:22:08 +04:00
Rachel Williams
bb530b87dd
TUN-3328: Filter out free tunnel has started log from UI
2020-09-17 11:52:10 +04:00
Rachel Williams
8a829b773a
Rebased and passed TunnelEventChan to LogServerInfo in new ReconnectTunnel function
2020-09-17 11:52:10 +04:00
Rachel Williams
71b98e6111
TUN-3261: Display connections on UI for free classic tunnels
2020-09-17 11:52:10 +04:00
Rachel Williams
fee13dc62f
TUN-3255: Update UI to display URL instead of hostname
2020-09-17 11:52:10 +04:00
Rachel Williams
094e0c7592
TUN-3238: Update UI when connection re-connects
2020-09-17 11:52:10 +04:00
Rachel Williams
b57a953caa
TUN-3200: Add connection information to UI
2020-09-17 11:52:10 +04:00
cthuang
8eeb452cce
TUN-3268: Each connection has its own event digest to reconnect
2020-08-20 16:44:22 +01:00
Adam Chalmers
9952ce0069
TUN-3221: ConnectionOptions tracks numPreviousAttempts.
2020-07-31 20:22:33 +00:00
Igor Postelnik
ac3638f6b1
TUN-3169: Move on to the next address when edge returns duplicate connection. There's no point in trying to connect to the same address since it will be hashed to the same metal.
...
Improve logging of errors from serve tunnel loop, hide useless context cancelled error.
2020-07-07 16:35:44 -05:00
Igor Postelnik
2a3d486126
TUN-3007: Implement named tunnel connection registration and unregistration.
...
Removed flag for using quick reconnect, this logic is now always enabled.
2020-07-01 04:19:30 +00:00
Adam Chalmers
4d3ebaf984
TUN-3106: Pass NamedTunnel config to StartServer
2020-06-17 23:20:37 +00:00
cthuang
fb82b2ced5
TUN-3019: Remove declarative tunnel entry code
2020-05-30 05:54:17 +08:00
Dalton
046be63253
AUTH-2596 added new logger package and replaced logrus
2020-05-27 17:07:19 -05:00
Igor Postelnik
fbe2989f61
TUN-2955: Fix connection and goroutine leaks when tunnel conection is terminated on error. Only unregister tunnels that had connected successfully. Close edge connection used to unregister the tunnel. Use buffered channels for error channels where receiver may quit early on context cancellation.
2020-05-06 03:13:24 +00:00
Igor Postelnik
dd0881f32b
TUN-2940: Added delay parameter to stdin reconnect command.
2020-05-01 15:58:19 +00:00
Igor Postelnik
976eb24883
TUN-2921: Rework address selection logic to avoid corner cases
2020-04-27 14:47:47 -05:00
Areg Harutyunyan
06f29306cd
TUN-2881: Parameterize response meta information header name in the generating function
2020-04-10 20:26:09 +01:00
Areg Harutyunyan
322f909edb
TUN-2880: Return metadata about source of the response from cloudflared
2020-04-10 01:01:38 +01:00
Dalton
a37da2b165
AUTH-2394 added socks5 proxy
2020-04-07 13:30:28 -05:00
Adam Chalmers
acea15161c
TUN-2854: Quick Reconnects should be an optional supported feature
2020-03-31 08:59:00 -05:00
Areg Harutyunyan
ae374c0463
TUN-2846: Trigger debug reconnects from stdin commands, not SIGUSR1
2020-03-27 17:04:21 +00:00
Adam Chalmers
32df01a9da
TUN-2823: Bugfix. cloudflared would hang forever if error occurred.
2020-03-19 17:48:42 -05:00
Adam Chalmers
6dcf3a4cbc
TUN-2819: cloudflared should close its connections when a signal is sent
2020-03-19 21:02:15 +00:00
Adam Chalmers
e8f55cc911
TUN-2756: Set connection digest after reconnect.
...
Previously it was only being set after RegisterTunnel.
2020-03-13 17:31:05 -05:00
Adam Chalmers
5376df5439
TUN-2788: cloudflared should store one ConnDigest per HA connection
2020-03-11 18:19:22 -05:00
Adam Chalmers
db9b6541d0
TUN-2797: Fix panic in SetConnDigest by making mutexes values.
2020-03-10 12:21:02 -05:00
Areg Harutyunyan
5bd4028ea7
TUN-2761: Use the new header management functions in cloudflared
2020-03-08 03:38:54 +00:00
Adam Chalmers
1b2a96f96b
TUN-2755: ReconnectTunnel RPC now transmits ConnectionDigest
2020-03-06 14:48:16 -06:00
Adam Chalmers
d50fee4fa0
TUN-2754: Add ConnDigest to cloudflared and its RPCs
2020-03-05 15:25:15 -06:00
Areg Harutyunyan
26f5f80811
TUN-2776: Add header serialization feature in cloudflared
2020-02-28 17:36:29 +00:00
Rueian
464bb53049
perf(cloudflared): reuse memory from buffer pool to get better throughput ( #161 )
...
* perf(cloudflared): reuse memory from buffer pool to get better throughput
https://github.com/cloudflare/cloudflared/issues/160
2020-02-24 17:06:19 +00:00
Areg Harutyunyan
52ab2c8227
TUN-2745: Rename existing header management functions
2020-02-20 20:31:34 +00:00
Adam Chalmers
a60c0273f5
TUN-2714: New edge discovery. Connections try to reconnect to the same edge IP.
2020-02-14 19:49:54 +00:00
Areg Harutyunyan
d6c2c4ee4a
TUN-2717: Function to serialize/deserialize HTTP headers
2020-02-10 19:18:06 +00:00
Adam Chalmers
386b02355a
TUN-2707: Inconsistent cardinality in tunnel error metrics
2020-01-29 12:42:55 -06:00
Adam Chalmers
203b939614
TUN-2690: cloudflared reconnect uses wrong context
2020-01-28 22:26:27 +00:00
Adam Chalmers
e729dfc51e
TUN-2699: Metrics for Authenticate RPCs
2020-01-28 14:33:41 -06:00
Adam Chalmers
d5139d3882
TUN-2696: Add unknown registerRPCName
2020-01-28 11:29:33 -06:00
Adam Chalmers
e31ff3a70f
TUN-2693: Metrics for ReconnectTunnel
2020-01-28 10:46:37 -06:00
Nick Vollmar
7367827a11
TUN-2646: Make --edge flag work again for local development
2019-12-23 23:11:00 -06:00
Nick Vollmar
7e31b77646
TUN-2637: Manage edge IPs in a region-aware manner
2019-12-19 21:58:23 +00:00
Nick Vollmar
6aa48d2eb2
TUN-2554: cloudflared calls ReconnectTunnel
2019-12-13 18:48:48 +00:00
Nick Vollmar
5e7ca14412
TUN-2555: origin/supervisor.go calls Authenticate
2019-12-06 11:26:54 -06:00
Nick Vollmar
bbf31377c2
TUN-2607: add RPC stream helpers
2019-12-03 15:38:16 -06:00
Nick Vollmar
8f4fd70783
TUN-2606: add DialEdge helpers
2019-12-03 14:52:33 -06:00
Ashcon Partovi
43babbc2f9
Fix "happy eyeballs" not being disabled since Golang 1.12 upgrade
...
* The Dialer.DualStack setting is now ignored and deprecated; RFC 6555 Fast Fallback ("Happy Eyeballs") is now enabled by default. To disable, set Dialer.FallbackDelay to a negative value.
2019-11-25 17:54:20 +00:00
Chung-Ting Huang
b0d31a0ef3
TUN-2573: Refactor TunnelRegistration into PermanentRegistrationError, RetryableRegistrationError and SuccessfulTunnelRegistration
2019-11-22 17:30:41 +00:00
Chung-Ting Huang
13bf65ce4e
TUN-2506: Expose active streams metrics
2019-11-07 14:09:31 -06:00
Areg Harutyunyan
068b148e05
TUN-2500: Don't send client registration errors to Sentry
2019-11-05 12:29:11 +00:00
Nick Vollmar
4d2583edf5
TUN-2344: log more details: http2.Framer.ErrorDetail() if available, connectionID
2019-10-15 10:59:24 -05:00
David Barr
dc48cdce1a
Fix #111 : Add support for specifying a specific HTTP Host: header on the origin. ( #114 )
2019-08-29 22:55:54 -05:00
Chung-Ting Huang
80a15547e3
TUN-1961: Create EdgeConnectionManager to maintain outbound connections to the edge
2019-06-18 16:37:38 -05:00
Chung-Ting Huang
d26a8c5d44
TUN-1893: Proxy requests to the origin based on tunnel hostname
2019-06-13 14:46:22 -05:00
Chung-Ting Huang
14f50d0922
TUN-1807: Send cloudflared version in Connect RPC
2019-05-06 16:13:12 -05:00
Chung-Ting Huang
809d2f3f28
TUN-1781: ServeStream should return early on error
2019-04-29 09:36:41 -05:00
Adam Chalmers
2e2fa29637
TUN-1732: cloudflared metrics should track userHostnames
2019-04-16 16:02:45 -05:00
Chung-Ting Huang
2bef5dbe72
TUN-1682: Add context to OpenStream to prevent it from blocking indefinitely.
2019-04-11 13:44:42 -05:00
Chung-Ting Huang
102b364cc9
TUN-1619: Add flag to test declarative tunnels.
2019-04-05 10:35:23 -05:00
Chung-Ting Huang
c18702f297
TUN-1626: Create new supervisor to establish connection with origintunneld
2019-04-04 15:39:22 -05:00