mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-01-28 10:18:51 +00:00
ff7f2de7d97ff3cf799e40d2521f30cec0717c8a
126 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
ff7f2de7d9 |
connlib: improve logging and detect channel close earlier (#1964)
This detects earlier when a channel disconnects and closes the peer but more importantly it prints periodically some stats about the tunnel that will make debugging easier. |
||
|
|
ce11fa29f0 |
fix(clients): SHA256 external_id to normalize before sending to portal (#1949)
* Normalizes very long or very short device IDs to a predictable length * Ensures uniform distribution for the DB index * Provides some basic level of privacy preservation |
||
|
|
79021a7f25 |
build(deps): Bump prometheus-client from 0.21.1 to 0.21.2 in /rust (#1957)
Bumps [prometheus-client](https://github.com/prometheus/client_rust) from 0.21.1 to 0.21.2. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/prometheus/client_rust/releases">prometheus-client's releases</a>.</em></p> <blockquote> <h2>v0.21.2</h2> <p>See <a href="https://github.com/prometheus/client_rust/blob/HEAD/CHANGELOG.md">changelog</a> for details.</p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/prometheus/client_rust/blob/master/CHANGELOG.md">prometheus-client's changelog</a>.</em></p> <blockquote> <h2>[0.21.2]</h2> <h3>Added</h3> <ul> <li>Added <code>sub_registry_with_labels</code> method to <code>Registry</code>. See <a href="https://redirect.github.com/prometheus/client_rust/pull/145">PR 145</a>.</li> <li>Added <code>with_labels</code> and <code>with_prefix_and_labels</code> constructors to <code>Registry</code>. See <a href="https://redirect.github.com/prometheus/client_rust/pull/147">PR 147</a>.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
35b8f4539a |
build(deps): Bump netlink-packet-core from 0.5.0 to 0.7.0 in /rust (#1959)
Bumps [netlink-packet-core](https://github.com/rust-netlink/netlink-packet-core) from 0.5.0 to 0.7.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/rust-netlink/netlink-packet-core/releases">netlink-packet-core's releases</a>.</em></p> <blockquote> <h2>New release 0.7.0</h2> <h3>Breaking changes</h3> <ul> <li><code>NetlinkPayload::Ack</code> removed and replaced by <code>NetlinkPayload::Error</code> where <code>ErrorMessage.code</code> is set to None. (52732b3)</li> </ul> <h3>New features</h3> <ul> <li>Derive <code>Default</code> for <code>ErrorMessage</code>. (3514766)</li> </ul> <h3>Bug fixes</h3> <ul> <li>N/A</li> </ul> <h2>New release 0.6.0</h2> <h3>Breaking changes</h3> <ul> <li><code>NetlinkPayload::Done</code> changed to <code>NetlinkPayload::Done(DoneMessage)</code>. (0c75fb5)</li> </ul> <h3>New features</h3> <ul> <li>Support full done message. (0c75fb5)</li> </ul> <h3>Bug fixes</h3> <ul> <li>N/A</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/rust-netlink/netlink-packet-core/blob/main/CHANGELOG">netlink-packet-core's changelog</a>.</em></p> <blockquote> <h2>[0.7.0] - 2023-07-09</h2> <h3>Breaking changes</h3> <ul> <li><code>NetlinkPayload::Ack</code> removed and replaced by <code>NetlinkPayload::Error</code> where <code>ErrorMessage.code</code> is set to None. (52732b3)</li> </ul> <h3>New features</h3> <ul> <li>Derive <code>Default</code> for <code>ErrorMessage</code>. (3514766)</li> </ul> <h3>Bug fixes</h3> <ul> <li>N/A</li> </ul> <h2>[0.6.0] - 2023-06-26</h2> <h3>Breaking changes</h3> <ul> <li><code>NetlinkPayload::Done</code> changed to <code>NetlinkPayload::Done(DoneMessage)</code>. (0c75fb5)</li> </ul> <h3>New features</h3> <ul> <li>Support full done message. (0c75fb5)</li> </ul> <h3>Bug fixes</h3> <ul> <li>N/A</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
eabf44188a |
build(deps): Bump base64 from 0.21.2 to 0.21.3 in /rust (#1960)
Bumps [base64](https://github.com/marshallpierce/rust-base64) from 0.21.2 to 0.21.3. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md">base64's changelog</a>.</em></p> <blockquote> <h1>0.21.3</h1> <ul> <li>Implement <code>source</code> instead of <code>cause</code> on Error types</li> <li>Roll back MSRV to 1.48.0 so Debian can continue to live in a time warp</li> <li>Slightly faster chunked encoding for short inputs</li> <li>Decrease binary size</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
7d0e0acfe9 |
fix(connlib): assorted fixes (#1953)
* single stack ipv6/ipv4 * set mtu for linux connlib * add iperf3 resource on dev docker-compose --------- Signed-off-by: Gabi <gabrielalejandro7@gmail.com> Co-authored-by: Jamil <jamilbk@users.noreply.github.com> |
||
|
|
4d84e1f12e |
chore(connlib): Add external ID to FFI, return fd in on_set_interface_config (#1945)
(Supersedes #1944) * Fixes https://github.com/firezone/product/issues/649 * Passes `dns_fallback_strategy` over FFI (these are hardcoded for now) * Incorporates @conectado 's #1944 and cleans up a few places `fd` was still passed Draft for now until I can test it more tomorrow --------- Co-authored-by: conectado <gabrielalejandro7@gmail.com> |
||
|
|
d1de8eac22 |
feat(connlib): implement name() and mtu() for android (#1943)
Implement `name()` to retrieve the tunnel name via `TUNGETIFF`, then use that to retrieve the mtu via `SIOCGIFMTU`. Verified to be working: ``` 2023-08-23 20:25:50.211 4830-4928 connlib dev.firezone.android D firezone_tunnel::tun: MTU for tun0 is 1280 ``` Will update the `log::debug!` calls to tracing in the next PR. |
||
|
|
e216a9e69f |
relay: fix stale nonce error code (#1942)
In the gateway/client we were looking at an error that looked like: ``` firezone-client-1 | 2023-08-23T20:58:50.456400Z ERROR turn::client::relay_conn: fail to refresh permissions: CreatePermission error response (error 401: Unauthorized) firezone-client-1 | 2023-08-23T20:58:50.456413Z WARN turn::client::relay_conn: refresh permissions failed ``` This was due to a slightly non-compliant behavior on the relay part where it was responding with a 401 instead of a 438 when a nonce was stale which is the behavior described by [RFC 5389](https://datatracker.ietf.org/doc/html/rfc5389#section-10.2.2) This PR should fix this and we should no longer see that refresh permissions error. |
||
|
|
3316d9098a |
fix(android): Fix auth flow and callback thread safety, and pass fd through FFI (#1930)
* Refactor sharedPreferences to only save the AccountId * Update TeamId -> AccountId to match naming elsewhere * Update JWT -> Token to avoid confusion; this token is **not** a valid JWT and should be treated as an opaque token * Update FFI `connect` to accept an optional file descriptor (int32) as a first argument. This seemed to be the most straightforward way to pass it to the tunnel stack. Retrieving it via callback is another option, but retrieving return vars with the `jni` was more complex. We could have used a similar approach that we did in the Apple client (enumerating all fd's in the `new()` function until we found ours) but this approach is [explicitly documented/recommended](https://developer.android.com/reference/android/net/VpnService.Builder#establish()) by the Android docs so I figured it's not likely to break. Additionally, there was a thread safety bug in the recent JNI callback implementation that consistently crashed the VM with `JNI DETECTED ERROR IN APPLICATION: use of invalid jobject...`. The fix was to use `GlobalRef` which has the explicit purpose of outliving the `JNIEnv` lifetime so that no `static` lifetimes need to be used. --------- Signed-off-by: Jamil <jamilbk@users.noreply.github.com> Co-authored-by: Pratik Velani <pratikvelani@gmail.com> Co-authored-by: Gabi <gabrielalejandro7@gmail.com> |
||
|
|
bf95d0480b |
build(deps): Bump clap from 4.3.21 to 4.3.23 in /rust (#1931)
Bumps [clap](https://github.com/clap-rs/clap) from 4.3.21 to 4.3.23. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p> <blockquote> <h2>v4.3.23</h2> <h2>[4.3.23] - 2023-08-18</h2> <h3>Fixes</h3> <ul> <li>Fixed <code>UnknownArgumentValueParser</code> to not error on flag's absence</li> </ul> <h2>v4.3.22</h2> <h2>[4.3.22] - 2023-08-17</h2> <h3>Features</h3> <ul> <li>Add <code>UnknownArgumentValueParser</code> for injecting errors for improving the experience with errors</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's changelog</a>.</em></p> <blockquote> <h2>[4.3.23] - 2023-08-18</h2> <h3>Fixes</h3> <ul> <li>Fixed <code>UnknownArgumentValueParser</code> to not error on flag's absence</li> </ul> <h2>[4.3.22] - 2023-08-17</h2> <h3>Features</h3> <ul> <li>Add <code>UnknownArgumentValueParser</code> for injecting errors for improving the experience with errors</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
8621953fe6 |
connlib: fix how we handle disconnect (#1923)
Basically we were having a panic inside a panic before, when I tried to drop the runtime in `on_disconnect` since you can't drop a runtime within a runtime. This PR spawns a new thread that listen for disconnection and stops the runtime right there. This also fixes the timer for reconnections. Note: That I first stop it and the drop it which is redundant but I rather be safe :) |
||
|
|
08343ef5a1 |
build(deps): Bump async-trait from 0.1.72 to 0.1.73 in /rust (#1932)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.72 to 0.1.73. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/dtolnay/async-trait/releases">async-trait's releases</a>.</em></p> <blockquote> <h2>0.1.73</h2> <ul> <li>Prevent generated code from triggering ignored_unit_patterns pedantic clippy lint</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
186dfb95a9 |
build(deps): Bump anyhow from 1.0.72 to 1.0.75 in /rust (#1934)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.72 to 1.0.75. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/dtolnay/anyhow/releases">anyhow's releases</a>.</em></p> <blockquote> <h2>1.0.75</h2> <ul> <li>Partially work around rust-analyzer bug (<a href="https://redirect.github.com/rust-lang/rust-analyzer/issues/9911">rust-lang/rust-analyzer#9911</a>)</li> </ul> <h2>1.0.74</h2> <ul> <li>Add bootstrap workaround to allow rustc to depend on anyhow (<a href="https://redirect.github.com/dtolnay/anyhow/issues/320">#320</a>, thanks <a href="https://github.com/RalfJung"><code>@RalfJung</code></a>)</li> </ul> <h2>1.0.73</h2> <ul> <li>Update backtrace support to nightly's new Error::provide API (<a href="https://redirect.github.com/rust-lang/rust/pull/113464">rust-lang/rust#113464</a>, <a href="https://redirect.github.com/dtolnay/anyhow/issues/319">#319</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
54dd780a60 |
build(deps): Bump thiserror from 1.0.44 to 1.0.47 in /rust (#1935)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.44 to 1.0.47. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/dtolnay/thiserror/releases">thiserror's releases</a>.</em></p> <blockquote> <h2>1.0.47</h2> <ul> <li>Work around rust-analyzer bug (<a href="https://redirect.github.com/rust-lang/rust-analyzer/issues/9911">rust-lang/rust-analyzer#9911</a>)</li> </ul> <h2>1.0.46</h2> <ul> <li>Add bootstrap workaround to allow rustc to depend on thiserror (<a href="https://redirect.github.com/dtolnay/thiserror/issues/248">#248</a>, thanks <a href="https://github.com/RalfJung"><code>@RalfJung</code></a>)</li> </ul> <h2>1.0.45</h2> <ul> <li>Update backtrace support to nightly's new Error::provide API (<a href="https://redirect.github.com/rust-lang/rust/pull/113464">rust-lang/rust#113464</a>, <a href="https://redirect.github.com/dtolnay/thiserror/issues/246">#246</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
d71635c651 |
build(deps): Bump rustls-webpki from 0.100.1 to 0.100.2 in /rust (#1941)
Bumps [rustls-webpki](https://github.com/rustls/webpki) from 0.100.1 to 0.100.2. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/rustls/webpki/releases">rustls-webpki's releases</a>.</em></p> <blockquote> <h2>v/0.100.2</h2> <h2>Release notes</h2> <ul> <li>certificate path building and verification is now capped at 100 signature validation operations to avoid the risk of CPU usage denial-of-service attack when validating crafted certificate chains producing quadratic runtime. This risk affected both clients, as well as servers that verified client certificates.</li> </ul> <h2>What's Changed</h2> <ul> <li>v0.100.2 prep by <a href="https://github.com/cpu"><code>@cpu</code></a> in <a href="https://redirect.github.com/rustls/webpki/pull/154">rustls/webpki#154</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/rustls/webpki/compare/v/0.100.1...v/0.100.2">https://github.com/rustls/webpki/compare/v/0.100.1...v/0.100.2</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
54e1a79a50 |
fix(ios): portal connectivity and tunnel setup (#1927)
This PR fixes issues with the iOS client connecting to the portal and setting up the tunnel. - portal IPv6 unique-local prefix typo - Use `rustls-webpki-roots` instead of `rustls-native-roots` for tokio tungstenite since the latter [only supports macOS, Linux, and Windows](https://github.com/rustls/rustls-native-certs) while the former seems to work on all platforms(?) - Remove Multipath TCP entitlement for iOS since it's not relevant for us. @conectado After this is merged, we _almost_ have a working tunnel on iOS. I believe the error we're hitting now is the 4-byte address family header that we need to add and strip from each packet written to / read from the tunnel. See below log for sample output when attempting to connect to the `HTTPbin` resource: ``` dev.firezone.firezone.network-extension packet-tunnel debug 16:10:13.401705-0700 FirezoneNetworkExtensioniOS Adapter state changed to: tunnelReady dev.firezone.firezone.network-extension packet-tunnel debug 16:10:13.401731-0700 FirezoneNetworkExtensioniOS Beginning path monitoring com.apple.network path default 16:10:13.402211-0700 FirezoneNetworkExtensioniOS nw_path_evaluator_start [1ACDE975-615B-4557-BF7C-678F3594452E <NULL> generic, multipath service: 1, attribution: developer] path: satisfied (Path is satisfied), interface: en0[802.11], scoped, ipv4, ipv6, dns com.apple.network path info 16:10:13.402235-0700 FirezoneNetworkExtensioniOS nw_path_evaluator_call_update_handler [1ACDE975-615B-4557-BF7C-678F3594452E] scheduling update com.apple.network path info 16:10:13.402261-0700 FirezoneNetworkExtensioniOS nw_path_evaluator_call_update_handler_block_invoke [1ACDE975-615B-4557-BF7C-678F3594452E] delivering update com.apple.network debug 16:10:13.402286-0700 FirezoneNetworkExtensioniOS nw_path_copy_interface_with_generation Cache miss for interface for index 3 (generation 4574) com.apple.network debug 16:10:13.402312-0700 FirezoneNetworkExtensioniOS nw_path_copy_interface_with_generation Cache miss for interface for index 31 (generation 141) dev.firezone.firezone.network-extension packet-tunnel debug 16:10:13.402363-0700 FirezoneNetworkExtensioniOS Suppressing calls to disableSomeRoamingForBrokenMobileSemantics() and bumpSockets() dev.firezone.firezone connlib debug 16:10:14.368105-0700 FirezoneNetworkExtensioniOS Reading from iface 76 bytes dev.firezone.firezone connlib debug 16:10:15.369018-0700 FirezoneNetworkExtensioniOS Reading from iface 76 bytes dev.firezone.firezone connlib debug 16:10:16.095618-0700 FirezoneNetworkExtensioniOS Reading from iface 76 bytes dev.firezone.firezone connlib debug 16:10:16.370908-0700 FirezoneNetworkExtensioniOS Reading from iface 76 bytes dev.firezone.firezone connlib debug 16:10:17.372035-0700 FirezoneNetworkExtensioniOS Reading from iface 76 bytes dev.firezone.firezone connlib debug 16:10:18.373423-0700 FirezoneNetworkExtensioniOS Reading from iface 76 bytes dev.firezone.firezone connlib debug 16:10:20.402863-0700 FirezoneNetworkExtensioniOS Reading from iface 76 bytes dev.firezone.firezone connlib debug 16:10:24.381581-0700 FirezoneNetworkExtensioniOS Reading from iface 76 bytes dev.firezone.firezone connlib debug 16:10:32.374566-0700 FirezoneNetworkExtensioniOS Reading from iface 76 bytes dev.firezone.firezone connlib debug 16:10:38.137437-0700 FirezoneNetworkExtensioniOS Text("{\"ref\":null,\"topic\":\"phoenix\",\"event\":\"phx_reply\",\"payload\":{\"status\":\"ok\",\"response\":{}}}") dev.firezone.firezone connlib debug 16:10:38.137757-0700 FirezoneNetworkExtensioniOS Phoenix status message dev.firezone.firezone connlib debug 16:10:48.376339-0700 FirezoneNetworkExtensioniOS Reading from iface 76 bytes dev.firezone.firezone connlib debug 16:11:08.148369-0700 FirezoneNetworkExtensioniOS Text("{\"ref\":null,\"topic\":\"phoenix\",\"event\":\"phx_reply\",\"payload\":{\"status\":\"ok\",\"response\":{}}}") dev.firezone.firezone connlib debug 16:11:08.148654-0700 FirezoneNetworkExtensioniOS Phoenix status message ``` |
||
|
|
6638049f3a |
Apply @thomaseizinger's docs feedback (#1926)
For completeness, this updates the Rust doc for `Server` to be more end-user friendly for self-hosting the Relay down the line. |
||
|
|
bf2d794064 |
feat(relay): allow configuration for lowest and highest allocation port (#1921)
This PR allows the TURN allocation binding to be optionally configured by `TURN_LOWEST_PORT` and `TURN_HIGHEST_PORT` environment variables. This will allow client app developers to test their apps against a fully-working local development cluster in Docker Desktop for Linux/macOS/Windows, allowing us to remove the PortalMock, Connlib Mock, and SwiftMock codepaths entirely. cc @roop @pratikvelani |
||
|
|
79a24ca9cf |
feat(relay): remove LISTEN_IPX_ADDR parameters (#1922)
Previously, we required the user to specify a `LISTEN_IP4_ADDR` and/or a `LISTEN_IP6_ADDR` parameter. This is cumbersome because dynamically fetching the address of the local interface is not trivial in all environments. We remove this parameter in exchange for listening on all interfaces. This is a trade-off. The relay will now listen on all interfaces, even the ones not exposed to the public internet. This is true for the main socket on port 3478 and for all created allocations. Actually relaying data relies on the 4-tuple of a "connection", i.e. the source and destination address and port. Technically, I think it is possible with this change to send traffic to a relay via an interface that was not intended to be used for that. I think this will still require spoofing the source address which is a known and accepted problem. It is still recommended that operators put appropriate firewall rules in place to not allow ingress traffic on any interface other than the one intended for relaying. I've tested locally that we are correctly using the `IPV6_ONLY` flag. In other words, a relay listening on the `0.0.0.0` wildcard interface will not accept IPv6 traffic and vice versa. Resolves #1886. |
||
|
|
d1537b0839 |
connlib: different backoff strategy for gateway/client (#1910)
With this PR we will keep retrying reconnection forever for the gateway after it disconnects. |
||
|
|
577ce43942 |
Gabi/fix relay expected message size (#1911)
This PR should fix the way we handle the `length` field in the `DataChannel` messages, previous to this fix relaying data (using the `webrtc-rs` crate) was impossible) The new way to handle this is if the actual message is bigger than what this data field says we ignore the extra bytes (which I think is the correct way to do it according to spec) Also, I added an integration test to verify relay messages using `iptables`, not the cleanest way to do it but the easiest, in this vein I tried to fix the caching for rust containers since 2 integration test in our current state would take ~20 minutes each. |
||
|
|
67147aa33a |
build(deps): Bump clap from 4.3.19 to 4.3.21 in /rust (#1907)
Bumps [clap](https://github.com/clap-rs/clap) from 4.3.19 to 4.3.21. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p> <blockquote> <h2>v4.3.21</h2> <h2>[4.3.21] - 2023-08-08</h2> <h3>Features</h3> <ul> <li>Expose <code>TryMapValueParser</code> so the type can be named</li> </ul> <h2>v4.3.20</h2> <h2>[4.3.20] - 2023-08-08</h2> <h3>Features</h3> <ul> <li>Expose <code>TryMapValueParser</code> so the type can be named</li> <li><code>Command::mut_args</code> for modifying all arguments en masse</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's changelog</a>.</em></p> <blockquote> <h2>[4.3.21] - 2023-08-08</h2> <h3>Features</h3> <ul> <li>Expose <code>TryMapValueParser</code> so the type can be named</li> </ul> <h2>[4.3.20] - 2023-08-08</h2> <h3>Features</h3> <ul> <li><code>Command::mut_args</code> for modifying all arguments en masse</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
0d42028d7e |
build(deps): Bump redis from 0.23.0 to 0.23.2 in /rust (#1906)
Bumps [redis](https://github.com/redis-rs/redis-rs) from 0.23.0 to 0.23.2. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/redis-rs/redis-rs/releases">redis's releases</a>.</em></p> <blockquote> <h2>v0.23.2</h2> <p>0.23.2 (2023-08-10)</p> <h4>Fixes</h4> <ul> <li>Fix sentinel tests flakiness (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/912">#912</a>)</li> <li>Rustls: Remove usage of deprecated method (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/921">#921</a>)</li> <li>Fix compiling with sentinel feature, without aio feature (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/923">#922</a> <a href="https://github.com/brocaar"><code>@brocaar</code></a>)</li> <li>Add timeouts to tests github action (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/911">#911</a>)</li> </ul> <h2>v0.23.1</h2> <h3>0.23.1 (2023-07-28)</h3> <h4>Features</h4> <ul> <li>Add basic Sentinel functionality (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/836">#836</a> <a href="https://github.com/felipou"><code>@felipou</code></a>)</li> <li>Enable keep alive on tcp connections via feature (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/886">#886</a> <a href="https://github.com/DoumanAsh"><code>@DoumanAsh</code></a>)</li> <li>Support fan-out commands in cluster-async (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/843">#843</a> <a href="https://github.com/nihohit"><code>@nihohit</code></a>)</li> <li>connection_manager: retry and backoff on reconnect (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/804">#804</a> <a href="https://github.com/nihohit"><code>@nihohit</code></a>)</li> </ul> <h4>Changes</h4> <ul> <li>Tests: Wait for all servers (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/901">#901</a> <a href="https://github.com/barshaul"><code>@barshaul</code></a>)</li> <li>Pin <code>tempfile</code> dependency (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/902">#902</a>)</li> <li>Update routing data for commands. (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/887">#887</a> <a href="https://github.com/nihohit"><code>@nihohit</code></a>)</li> <li>Add basic benchmark reporting to CI (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/880">#880</a>)</li> <li>Add <code>set_options</code> cmd (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/879">#879</a> <a href="https://github.com/RokasVaitkevicius"><code>@RokasVaitkevicius</code></a>)</li> <li>Move random connection creation to when needed. (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/882">#882</a> <a href="https://github.com/nihohit"><code>@nihohit</code></a>)</li> <li>Clean up existing benchmarks (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/881">#881</a>)</li> <li>Improve async cluster client performance. (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/877">#877</a> <a href="https://github.com/nihohit"><code>@nihohit</code></a>)</li> <li>Allow configuration of cluster retry wait duration (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/859">#859</a> <a href="https://github.com/nihohit"><code>@nihohit</code></a>)</li> <li>Fix async connect when ns resolved to multi ip (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/872">#872</a> <a href="https://github.com/hugefiver"><code>@hugefiver</code></a>)</li> <li>Reduce the number of unnecessary clones. (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/874">#874</a> <a href="https://github.com/nihohit"><code>@nihohit</code></a>)</li> <li>Remove connection checking on every request. (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/873">#873</a> <a href="https://github.com/nihohit"><code>@nihohit</code></a>)</li> <li>cluster_async: Wrap internal state with Arc. (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/864">#864</a> <a href="https://github.com/nihohit"><code>@nihohit</code></a>)</li> <li>Fix redirect routing on request with no route. (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/870">#870</a> <a href="https://github.com/nihohit"><code>@nihohit</code></a>)</li> <li>Amend README for macOS users (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/869">#869</a> <a href="https://github.com/sarisssa"><code>@sarisssa</code></a>)</li> <li>Improved redirection error handling (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/857">#857</a>)</li> <li>Fix minor async client bug. (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/862">#862</a> <a href="https://github.com/nihohit"><code>@nihohit</code></a>)</li> <li>Split aio.rs to separate files. (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/821">#821</a> <a href="https://github.com/nihohit"><code>@nihohit</code></a>)</li> <li>Add time feature to tokio dependency (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/855">#855</a> <a href="https://github.com/robjtede"><code>@robjtede</code></a>)</li> <li>Refactor cluster error handling (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/844">#844</a>)</li> <li>Fix unnecessarily mutable variable (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/849">#849</a> <a href="https://github.com/kamulos"><code>@kamulos</code></a>)</li> <li>Newtype SlotMap (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/845">#845</a>)</li> <li>Bump MSRV to 1.60 (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/846">#846</a>)</li> <li>Improve error logging. (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/838">#838</a> <a href="https://github.com/nihohit"><code>@nihohit</code></a>)</li> <li>Improve documentation, add references to <code>redis-macros</code> (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/769">#769</a> <a href="https://github.com/daniel7grant"><code>@daniel7grant</code></a>)</li> <li>Allow creating Cmd with capacity. (<a href="https://redirect.github.com/redis-rs/redis-rs/pull/817">#817</a> <a href="https://github.com/nihohit"><code>@nihohit</code></a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
ae9a619703 |
build(deps): Bump pnet_packet from 0.33.0 to 0.34.0 in /rust (#1905)
Bumps [pnet_packet](https://github.com/libpnet/libpnet) from 0.33.0 to 0.34.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/libpnet/libpnet/releases">pnet_packet's releases</a>.</em></p> <blockquote> <h2>v0.34.0</h2> <h2>What's Changed</h2> <ul> <li>Add blanket impls of Packet for Box<!-- raw HTML omitted --> and &T. by <a href="https://github.com/landhb"><code>@landhb</code></a> in <a href="https://redirect.github.com/libpnet/libpnet/pull/606">libpnet/libpnet#606</a></li> <li>GitHub actions updates by <a href="https://github.com/mrmonday"><code>@mrmonday</code></a> in <a href="https://redirect.github.com/libpnet/libpnet/pull/608">libpnet/libpnet#608</a></li> <li>Fix typos by <a href="https://github.com/darxriggs"><code>@darxriggs</code></a> in <a href="https://redirect.github.com/libpnet/libpnet/pull/609">libpnet/libpnet#609</a></li> <li>Update pnet_macros to use syn v2 by <a href="https://github.com/james-jra"><code>@james-jra</code></a> in <a href="https://redirect.github.com/libpnet/libpnet/pull/627">libpnet/libpnet#627</a></li> <li>Spell check with <code>typos</code>. Add <code>spell-check</code> CI job by <a href="https://github.com/vvv"><code>@vvv</code></a> in <a href="https://redirect.github.com/libpnet/libpnet/pull/621">libpnet/libpnet#621</a></li> <li>Add LINKTYPE_LINUX_SLL2 support and fix link to SLL by <a href="https://github.com/reticulis"><code>@reticulis</code></a> in <a href="https://redirect.github.com/libpnet/libpnet/pull/619">libpnet/libpnet#619</a></li> <li>TCP header remove NS flag by <a href="https://github.com/rikonaka"><code>@rikonaka</code></a> in <a href="https://redirect.github.com/libpnet/libpnet/pull/625">libpnet/libpnet#625</a></li> <li>Assorted cleanup by <a href="https://github.com/mrmonday"><code>@mrmonday</code></a> in <a href="https://redirect.github.com/libpnet/libpnet/pull/630">libpnet/libpnet#630</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/james-jra"><code>@james-jra</code></a> made their first contribution in <a href="https://redirect.github.com/libpnet/libpnet/pull/627">libpnet/libpnet#627</a></li> <li><a href="https://github.com/vvv"><code>@vvv</code></a> made their first contribution in <a href="https://redirect.github.com/libpnet/libpnet/pull/621">libpnet/libpnet#621</a></li> <li><a href="https://github.com/reticulis"><code>@reticulis</code></a> made their first contribution in <a href="https://redirect.github.com/libpnet/libpnet/pull/619">libpnet/libpnet#619</a></li> <li><a href="https://github.com/rikonaka"><code>@rikonaka</code></a> made their first contribution in <a href="https://redirect.github.com/libpnet/libpnet/pull/625">libpnet/libpnet#625</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/libpnet/libpnet/compare/v0.33.0...v0.34.0">https://github.com/libpnet/libpnet/compare/v0.33.0...v0.34.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
9d13a6001b |
build(deps): Bump android_logger from 0.13.1 to 0.13.3 in /rust (#1904)
Bumps [android_logger](https://github.com/rust-mobile/android_logger-rs) from 0.13.1 to 0.13.3. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/rust-mobile/android_logger-rs/blob/master/CHANGELOG.md">android_logger's changelog</a>.</em></p> <blockquote> <h1><code>android_logger</code> changelog</h1> <p>All user visible changes to this project will be documented in this file. This project uses [Semantic Versioning 2.0.0].</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/rust-mobile/android_logger-rs/commits">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
66e78c5e72 |
build(deps): Bump log from 0.4.19 to 0.4.20 in /rust (#1903)
Bumps [log](https://github.com/rust-lang/log) from 0.4.19 to 0.4.20. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/rust-lang/log/blob/master/CHANGELOG.md">log's changelog</a>.</em></p> <blockquote> <h2>[0.4.20] - 2023-07-11</h2> <ul> <li>Remove rustversion dev-dependency by <a href="https://github.com/Thomasdezeeuw"><code>@Thomasdezeeuw</code></a> in <a href="https://redirect.github.com/rust-lang/log/pull/568">rust-lang/log#568</a></li> <li>Remove <code>local_inner_macros</code> usage by <a href="https://github.com/EFanZh"><code>@EFanZh</code></a> in <a href="https://redirect.github.com/rust-lang/log/pull/570">rust-lang/log#570</a></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
ded6a6558d | Add android build output to docker ignore (#1894) | ||
|
|
721d2ffc45 | Fix/webrtc failure (#1896) | ||
|
|
e9c0729b98 |
Use public Logger from FirezoneKit (#1888)
Enables the NetworkExtension to use the Logger helpers so that its bundle id is used for the logging subsystem |
||
|
|
d0a472b8c1 |
Build for iphonesimulator (#1890)
Fixes the iphonesimulator build. |
||
|
|
eebf98510e | relay: fix sent ip to the portal (#1892) | ||
|
|
c0844dfdb0 | Fix discovery for listen address and make it optional | ||
|
|
3a79f4c0aa |
apple: refactor portal_url to be opaque (#1881)
* Remove JWT to be an opaque token and update variable names accordingly * Use new `actor_name` param from the portal instead of user info from old JWT * Log attempted portal URL from connlib * Remove account slug/id from portal_url before sending to connlib @roop The token from the portal is a Phoenix.Token, not a valid JWT, so this was causing a JWTDecodeError. Discussed with @AndrewDryga and concluded this should be an opaque token. Expiry and other invalid token scenarios will be bubbled up from connlib via an `onError` callback (or perhaps a dedicated `onTokenInvalid` callback). For now connlib doesn't handle this specifically. |
||
|
|
744b4b12cb | connlib: enable TLS support for websocket (#1882) | ||
|
|
a0a5acd542 |
connlib: correct checksum for all handled protocols (#1880)
Signed-off-by: conectado <gabrielalejandro7@gmail.com> |
||
|
|
1c643593c4 |
feat(relay): log message if we are in standalone mode (#1874)
Signed-off-by: Gabi <gabrielalejandro7@gmail.com> Co-authored-by: Gabi <gabrielalejandro7@gmail.com> |
||
|
|
92f4ec3cc1 |
fix(relay): only join relay room in portal WS connection once (#1877)
|
||
|
|
90289e3a38 |
connlib: update the url scheme for http/https (#1879)
This just updates the portal's url scheme based on what we discussed with @jamilbk |
||
|
|
3a5877eaa3 |
Update protocol to reuse gateway connections (#1825)
This is a result of our discussion with @conectado, this PR will add a new message type which will allow reusing existing connections to the gateway to access a new resource. We will also change the LB strategy to be aware of the current device connection so that we will not pick a different one if we have a connected gateway that can serve a new resource. --------- Co-authored-by: conectado <gabrielalejandro7@gmail.com> |
||
|
|
9b538e92d4 |
apple: Tunnel stack (#1876)
This PR adds the remaining bits of the Apple tunnel stack for macOS and iOS devices. - [x] Find file descriptor corresponding to NE-managed tunnel interface - [ ] Testing --------- Signed-off-by: Jamil <jamilbk@users.noreply.github.com> Co-authored-by: conectado <gabrielalejandro7@gmail.com> |
||
|
|
01906ba507 | android: Update auth URLs to follow convention; Fix JNI callback method signatures (#1870) | ||
|
|
9e17352fd6 |
Deploy relays (#1706)
Will finish once #1705 is merged and stable. cc @thomaseizinger |
||
|
|
bb9110b1d0 |
build(deps): Bump async-trait from 0.1.71 to 0.1.72 in /rust (#1861)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.71 to 0.1.72. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/dtolnay/async-trait/releases">async-trait's releases</a>.</em></p> <blockquote> <h2>0.1.72</h2> <ul> <li>Documentation improvements</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
2d21de7035 |
build(deps): Bump axum from 0.6.18 to 0.6.20 in /rust (#1863)
Bumps [axum](https://github.com/tokio-rs/axum) from 0.6.18 to 0.6.20. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/tokio-rs/axum/releases">axum's releases</a>.</em></p> <blockquote> <h2>axum - v0.6.20</h2> <ul> <li><strong>added:</strong> <code>WebSocketUpgrade::write_buffer_size</code> and <code>WebSocketUpgrade::max_write_buffer_size</code></li> <li><strong>changed:</strong> Deprecate <code>WebSocketUpgrade::max_send_queue</code></li> <li><strong>change:</strong> Update tokio-tungstenite to 0.20</li> <li><strong>added:</strong> Implement <code>Handler</code> for <code>T: IntoResponse</code> (<a href="https://redirect.github.com/tokio-rs/axum/issues/2140">#2140</a>)</li> </ul> <p><a href="https://redirect.github.com/tokio-rs/axum/issues/2140">#2140</a>: <a href="https://redirect.github.com/tokio-rs/axum/pull/2140">tokio-rs/axum#2140</a></p> <h2>axum - v0.6.19</h2> <ul> <li><strong>added:</strong> Add <code>axum::extract::Query::try_from_uri</code> (<a href="https://redirect.github.com/tokio-rs/axum/issues/2058">#2058</a>)</li> <li><strong>added:</strong> Implement <code>IntoResponse</code> for <code>Box<str></code> and <code>Box<[u8]></code> (<a href="https://redirect.github.com/tokio-rs/axum/issues/2035">#2035</a>)</li> <li><strong>fixed:</strong> Fix bugs around merging routers with nested fallbacks (<a href="https://redirect.github.com/tokio-rs/axum/issues/2096">#2096</a>)</li> <li><strong>fixed:</strong> Fix <code>.source()</code> of composite rejections (<a href="https://redirect.github.com/tokio-rs/axum/issues/2030">#2030</a>)</li> <li><strong>fixed:</strong> Allow unreachable code in <code>#[debug_handler]</code> (<a href="https://redirect.github.com/tokio-rs/axum/issues/2014">#2014</a>)</li> <li><strong>change:</strong> Update tokio-tungstenite to 0.19 (<a href="https://redirect.github.com/tokio-rs/axum/issues/2021">#2021</a>)</li> <li><strong>change:</strong> axum's MSRV is now 1.63 (<a href="https://redirect.github.com/tokio-rs/axum/issues/2021">#2021</a>)</li> </ul> <p><a href="https://redirect.github.com/tokio-rs/axum/issues/2014">#2014</a>: <a href="https://redirect.github.com/tokio-rs/axum/pull/2014">tokio-rs/axum#2014</a> <a href="https://redirect.github.com/tokio-rs/axum/issues/2021">#2021</a>: <a href="https://redirect.github.com/tokio-rs/axum/pull/2021">tokio-rs/axum#2021</a> <a href="https://redirect.github.com/tokio-rs/axum/issues/2030">#2030</a>: <a href="https://redirect.github.com/tokio-rs/axum/pull/2030">tokio-rs/axum#2030</a> <a href="https://redirect.github.com/tokio-rs/axum/issues/2035">#2035</a>: <a href="https://redirect.github.com/tokio-rs/axum/pull/2035">tokio-rs/axum#2035</a> <a href="https://redirect.github.com/tokio-rs/axum/issues/2058">#2058</a>: <a href="https://redirect.github.com/tokio-rs/axum/pull/2058">tokio-rs/axum#2058</a> <a href="https://redirect.github.com/tokio-rs/axum/issues/2096">#2096</a>: <a href="https://redirect.github.com/tokio-rs/axum/pull/2096">tokio-rs/axum#2096</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
b409f191f9 |
build(deps): Bump serde from 1.0.179 to 1.0.183 in /rust (#1864)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.179 to 1.0.183. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/serde-rs/serde/releases">serde's releases</a>.</em></p> <blockquote> <h2>v1.0.183</h2> <ul> <li>Support deserializing <code>Box<OsStr></code> with an equivalent representation as <code>OsString</code> (<a href="https://redirect.github.com/serde-rs/serde/issues/2556">#2556</a>, thanks <a href="https://github.com/DBLouis"><code>@DBLouis</code></a>)</li> </ul> <h2>v1.0.182</h2> <ul> <li>Render field aliases in sorted order in error messages (<a href="https://redirect.github.com/serde-rs/serde/issues/2458">#2458</a>, thanks <a href="https://github.com/Mingun"><code>@Mingun</code></a>)</li> <li>Support <code>serde(default)</code> on tuple structs (<a href="https://redirect.github.com/serde-rs/serde/issues/2553">#2553</a>, thanks <a href="https://github.com/Mingun"><code>@Mingun</code></a>)</li> </ul> <h2>v1.0.181</h2> <ul> <li>Make <code>serde(alias)</code> work in combination with <code>flatten</code> when using in-place deserialization (<a href="https://redirect.github.com/serde-rs/serde/issues/2443">#2443</a>, thanks <a href="https://github.com/Mingun"><code>@Mingun</code></a>)</li> <li>Improve the representation of adjacently tagged enums in formats where enum tags are serialized by index, as opposed to by string name (<a href="https://redirect.github.com/serde-rs/serde/issues/2505">#2505</a>, <a href="https://redirect.github.com/serde-rs/serde/issues/2496">#2496</a>, thanks <a href="https://github.com/Baptistemontan"><code>@Baptistemontan</code></a>)</li> </ul> <h2>v1.0.180</h2> <ul> <li>Update to 2018 edition</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
b1c324a01e |
relay: remove --allow-insecure-ws flag (#1871)
Previously, I thought it might be helpful to refuse a insecure connections to the portal unless the user explicitly opts-in to this. In our CI and testing environment, this however proved to cause more headaches than it helps. This PR removes this flag and assumes that users are smart enough that they should protect self-hosted portals with transport-level encryption. |
||
|
|
bc3a5d9e54 |
connlib: JNI bridge (#1848)
The biggest internal change is that all the methods on `Callbacks` (on the Rust side!) return a `Result` now, so errors from the bridge or even the client callbacks will be handled. @roop there's nothing for you to review here, but note: - the `bool` return values you've asked about in the past are gone now - the route string for `onAddRoute`/`onRemoveRoute` no longer has the extra quotes (it's no longer JSON) --------- Signed-off-by: Francesca Lovebloom <franlovebloom@gmail.com> Co-authored-by: Jamil <jamilbk@users.noreply.github.com> |
||
|
|
e591b92ec9 |
apple: Set network settings using data from connlib (#1846)
This PR sets the network settings, split-DNS, and macOS UI resources using the data from connlib callbacks. This should enable connlib to be developed / tested in Apple platforms (Caveat: There's no UI to see resources in iOS yet). Some assumptions being made are: - It's ok to call disconnect() before onTunnelReady(), but after connect() - CIDR addresses don't include enclosing quotes (they currently include the quotes, like: `"8.8.4.4/32"`) - CIDR addresses in routes always end with “/n” - Connlib calls can be made from a queue (non-main thread) --------- Co-authored-by: Jamil <jamilbk@users.noreply.github.com> |
||
|
|
44e4295a4e |
connlib: fix DNS PTR record query (#1854)
Some programs(such as `ping`) after resolving the dns name do a reverse dns lookup using PTR, if this doesn't respond the program hangs making performance slower. This PR fixes it by handling PTR queries. --------- Signed-off-by: Gabi <gabrielalejandro7@gmail.com> Co-authored-by: Francesca Lovebloom <franlovebloom@gmail.com> Co-authored-by: Jamil Bou Kheir <jamilbk@users.noreply.github.com> |