Bumps the otel group in /rust with 3 updates: [tracing-stackdriver](https://github.com/NAlexPear/tracing-stackdriver), [tracing-opentelemetry](https://github.com/tokio-rs/tracing-opentelemetry) and [opentelemetry-otlp](https://github.com/open-telemetry/opentelemetry-rust). Updates `tracing-stackdriver` from 0.8.0 to 0.9.0 <details> <summary>Commits</summary> <ul> <li><a href="4a9fe0a37e"><code>4a9fe0a</code></a> ⬆ Bump version to 0.9.0</li> <li>See full diff in <a href="https://github.com/NAlexPear/tracing-stackdriver/compare/v0.8.0...v0.9.0">compare view</a></li> </ul> </details> <br /> Updates `tracing-opentelemetry` from 0.21.0 to 0.22.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/tokio-rs/tracing-opentelemetry/releases">tracing-opentelemetry's releases</a>.</em></p> <blockquote> <h2>0.22.0</h2> <h3>Breaking Changes</h3> <ul> <li>Upgrade to <code>v0.21.0</code> of <code>opentelemetry</code> For list of breaking changes in OpenTelemetry, see the <a href="https://github.com/open-telemetry/opentelemetry-rust/blob/v0.21.0/opentelemetry/CHANGELOG.md">v0.21.0 changelog</a>.</li> <li>Update MSRV to require Rust 1.65+, as <code>opentelemetry</code> requires it now. (<a href="https://redirect.github.com/tokio-rs/tracing-opentelemetry/issues/68">#68</a>)</li> </ul> <h3>Fixed</h3> <ul> <li>WASM Support (<a href="https://redirect.github.com/tokio-rs/tracing-opentelemetry/issues/57">#57</a>)</li> <li>Fix potential deadlock (<a href="https://redirect.github.com/tokio-rs/tracing-opentelemetry/issues/59">#59</a>)</li> </ul> <p>Thanks to <a href="https://github.com/jesseditson"><code>@jesseditson</code></a>, <a href="https://github.com/AsmPrgmC3"><code>@AsmPrgmC3</code></a>, and <a href="https://github.com/rthomas"><code>@rthomas</code></a> for contributing to this release!</p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/tokio-rs/tracing-opentelemetry/blob/v0.1.x/CHANGELOG.md">tracing-opentelemetry's changelog</a>.</em></p> <blockquote> <h1>0.22.0 (November 7, 2023)</h1> <h3>Breaking Changes</h3> <ul> <li>Upgrade to <code>v0.21.0</code> of <code>opentelemetry</code> For list of breaking changes in OpenTelemetry, see the <a href="https://github.com/open-telemetry/opentelemetry-rust/blob/v0.21.0/opentelemetry/CHANGELOG.md">v0.21.0 changelog</a>.</li> <li>Update MSRV to require Rust 1.65+, as <code>opentelemetry</code> requires it now. (<a href="https://redirect.github.com/tokio-rs/tracing-opentelemetry/issues/68">#68</a>)</li> </ul> <h3>Fixed</h3> <ul> <li>WASM Support (<a href="https://redirect.github.com/tokio-rs/tracing-opentelemetry/issues/57">#57</a>)</li> <li>Fix potential deadlock (<a href="https://redirect.github.com/tokio-rs/tracing-opentelemetry/issues/59">#59</a>)</li> </ul> <p>Thanks to <a href="https://github.com/jesseditson"><code>@jesseditson</code></a>, <a href="https://github.com/AsmPrgmC3"><code>@AsmPrgmC3</code></a>, and <a href="https://github.com/rthomas"><code>@rthomas</code></a> for contributing to this release!</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="62690b4ac9"><code>62690b4</code></a> Prepare for v0.22.0 release (<a href="https://redirect.github.com/tokio-rs/tracing-opentelemetry/issues/75">#75</a>)</li> <li><a href="2156c236db"><code>2156c23</code></a> Update otel to version 0.21 (<a href="https://redirect.github.com/tokio-rs/tracing-opentelemetry/issues/68">#68</a>)</li> <li><a href="cfc64f37b6"><code>cfc64f3</code></a> build(deps): update tracing-log requirement from 0.1.3 to 0.2.0 (<a href="https://redirect.github.com/tokio-rs/tracing-opentelemetry/issues/64">#64</a>)</li> <li><a href="70f3ed6f73"><code>70f3ed6</code></a> build(deps): update pprof requirement from 0.12.1 to 0.13.0 (<a href="https://redirect.github.com/tokio-rs/tracing-opentelemetry/issues/61">#61</a>)</li> <li><a href="bddef29233"><code>bddef29</code></a> Add support for instrumented functions which return Result (<a href="https://redirect.github.com/tokio-rs/tracing-opentelemetry/issues/28">#28</a>)</li> <li><a href="1c61ea6b56"><code>1c61ea6</code></a> Fix potential deadlock (<a href="https://redirect.github.com/tokio-rs/tracing-opentelemetry/issues/59">#59</a>)</li> <li><a href="5223a67887"><code>5223a67</code></a> Update README example Cargo.toml (<a href="https://redirect.github.com/tokio-rs/tracing-opentelemetry/issues/60">#60</a>)</li> <li><a href="a03ff2275b"><code>a03ff22</code></a> Update criterion and pprof (<a href="https://redirect.github.com/tokio-rs/tracing-opentelemetry/issues/42">#42</a>)</li> <li><a href="80ae3211db"><code>80ae321</code></a> WASM Support (<a href="https://redirect.github.com/tokio-rs/tracing-opentelemetry/issues/57">#57</a>)</li> <li>See full diff in <a href="https://github.com/tokio-rs/tracing-opentelemetry/compare/v0.21.0...v0.22.0">compare view</a></li> </ul> </details> <br /> Updates `opentelemetry-otlp` from 0.13.0 to 0.15.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/open-telemetry/opentelemetry-rust/releases">opentelemetry-otlp's releases</a>.</em></p> <blockquote> <h2>v0.15.0</h2> <h3>Added</h3> <ul> <li>More resource detectors <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/573">#573</a></li> </ul> <h3>Changed</h3> <ul> <li>Expose the Error type to allow users to set custom error handlers <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/551">#551</a></li> <li>Allow users to use different channels based on runtime in batch span processor <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/560">#560</a></li> <li>Move <code>Unit</code> into <code>metrics</code> module <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/564">#564</a></li> <li>Update trace flags to match spec <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/565">#565</a></li> </ul> <h3>Fixed</h3> <ul> <li>Fix debug loop, add notes for <code>#[tokio::test]</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/552">#552</a></li> <li><code>TraceState</code> cannot insert new key-value pairs <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/567">#567</a></li> </ul> <h2>v0.14.0</h2> <h2>Added</h2> <ul> <li>Adding a dynamic dispatch to Aggregator Selector <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/497">#497</a></li> <li>Add <code>global::force_flush_tracer_provider</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/512">#512</a></li> <li>Add config <code>max_attributes_per_event</code> and <code>max_attributes_per_link</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/521">#521</a></li> <li>Add dropped attribute counts to events and links <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/529">#529</a></li> </ul> <h2>Changed</h2> <ul> <li>Remove unnecessary clone in <code>Key</code> type <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/491">#491</a></li> <li>Remove <code>#[must_use]</code> from <code>set_tracer_provider</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/501">#501</a></li> <li>Rename remaining usage of <code>default_sampler</code> to <code>sampler</code> <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/509">#509</a></li> <li>Use current span for SDK-less context propagation <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/510">#510</a></li> <li>Always export span batch when limit reached <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/519">#519</a></li> <li>Rename message events to events <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/530">#530</a></li> <li>Update resource merge behaviour <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/537">#537</a></li> <li>Ignore links with invalid context <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/538">#538</a></li> </ul> <h2>Removed</h2> <ul> <li>Remove remote span context <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/508">#508</a></li> <li>Remove metrics quantiles <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/525">#525</a></li> </ul> <h1>Fixed</h1> <ul> <li>Allow users to use custom export kind selector <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/526">#526</a></li> </ul> <h2>Performance</h2> <ul> <li>Improve simple span processor performance <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/502">#502</a></li> <li>Local span perf improvements <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/505">#505</a></li> <li>Reduce string allocations where possible <a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/506">#506</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="d7ba1ea4f7"><code>d7ba1ea</code></a> Prepare for v0.15.0 release (<a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/572">#572</a>)</li> <li><a href="6834b64192"><code>6834b64</code></a> feat: add more resource detectors (<a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/573">#573</a>)</li> <li><a href="efbc842c11"><code>efbc842</code></a> semantic-conventions: update to v1.4.0 spec (<a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/570">#570</a>)</li> <li><a href="d70a537548"><code>d70a537</code></a> Update example and optional dependencies (<a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/568">#568</a>)</li> <li><a href="a2dd6e7779"><code>a2dd6e7</code></a> fix: TraceState cannot insert new key-value pairs. (<a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/567">#567</a>)</li> <li><a href="dc7d81fdfa"><code>dc7d81f</code></a> Update trace flags to match spec (<a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/565">#565</a>)</li> <li><a href="635f10e15d"><code>635f10e</code></a> Move unit into metrics module (<a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/564">#564</a>)</li> <li><a href="99e51c1980"><code>99e51c1</code></a> Update lib and tracing module docs with examples (<a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/563">#563</a>)</li> <li><a href="1ca62d337e"><code>1ca62d3</code></a> feat: allow users to use different channels based on runtime in batch span pr...</li> <li><a href="fb576b0e71"><code>fb576b0</code></a> move hyper prometheus example into something runnable (<a href="https://redirect.github.com/open-telemetry/opentelemetry-rust/issues/562">#562</a>)</li> <li>Additional commits viewable in <a href="https://github.com/open-telemetry/opentelemetry-rust/compare/v0.13.0...v0.15.0">compare view</a></li> </ul> </details> <br /> 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 <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> --------- Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: Thomas Eizinger <thomas@eizinger.io> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas Eizinger <thomas@eizinger.io> Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
relay
This crate houses a minimalistic STUN & TURN server.
Features
We aim to support the following feature set:
- STUN binding requests
- TURN allocate requests
- TURN refresh requests
- TURN channel bind requests
- TURN channel data requests
Relaying of data through other means such as DATA frames is not supported.
Building
You can build the relay using: cargo build --release --bin firezone-relay
You should then find a binary in target/release/firezone-relay.
Running
The Firezone Relay supports Linux only. To run the Relay binary on your Linux host:
- Generate a new Relay token from the "Relays" section of the admin portal and save it in your secrets manager.
- Ensure the
FIREZONE_TOKEN=<relay_token>environment variable is set securely in your Relay's shell environment. The Relay expects this variable at startup. - Now, you can start the Firezone Relay with:
firezone-relay
To view more advanced configuration options pass the --help flag:
firezone-relay --help
Ports
The relay listens on port 3478. This is the standard port for STUN/TURN and
not configurable. Additionally, the relay needs to have access to the port range
49152 - 65535 for the allocations.
Portal Connection
When given a token, the relay will connect to the Firezone portal and wait for
an init message before commencing relay operations.
Design
The relay is designed in a sans-IO fashion, meaning the core components do not cause side effects but operate as pure, synchronous state machines. They take in data and emit commands: wake me at this point in time, send these bytes to this peer, etc.
This allows us to very easily unit-test all kinds of scenarios because all inputs are simple values.
The main server runs in a single task and spawns one additional task for each allocation. Incoming data that needs to be relayed is forwarded to the main task where it gets authenticated and relayed on success.