Commit Graph

3946 Commits

Author SHA1 Message Date
Jason Elie Bou Kheir
83030a155d test(android): add github action workflow step for unit tests (#4177)
Fixes #2309 

Not sure how to test the workflow itself in this PR 🤔

---------

Signed-off-by: Jason Elie Bou Kheir <5115126+jasonboukheir@users.noreply.github.com>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2024-03-21 16:25:13 +00:00
Reactor Scram
7fece80006 refactor(gui-client): refuse to ever be elevated on Linux (#4232)
Running as sudo / root causes a lot of problems for GUI programs, so
we're unwinding that. In this case we can go back to using Tauri's "open
URL" function, which is great.

Closes #4103
Refs #3713
Affects #3972 - I was finally able to debug it because it came up
constantly during this PR
2024-03-21 14:42:48 +00:00
Reactor Scram
b0904e382a chore: add crate for privileged Linux tunnel process (#4229)
Refs #3713 

```[tasklist]
### Before merging
- [ ] Is 'firezone-client-tunnel' okay for the binary name?
- [ ] Using a library and building it as two binaries is correct, right? `cargo run -p firezone-client-tunnel` takes 1 second. `cargo run -p firezone-gui-client --bin firezone-client-tunnel` takes 1m42s because it builds all the GUI deps.
```
2024-03-21 14:06:55 +00:00
Reactor Scram
ae5fe281aa refactor(gui-client): reduce scope of a Notify (#4238)
Ran into this while messing with #4232
2024-03-21 14:06:30 +00:00
Jason Elie Bou Kheir
c94b2de02a feat(android): use device serial for deviceName (#4180)
Fixes #4042 

The serial number of the device is blocked behind a permission. There's
a couple ways we can go about this:

-----

### (1) Ask the user to (optionally) grant the permission

When we show the grant VPN permission activity, we also mention the
optional READ_PRIVILEGED_PHONE_STATE permission. Here, the user can
decide to grant it or not, and if they decide not to, they can grant it
in the future in the app settings. When the permission is not granted,
the `deviceName` falls back to the `Build.MODEL`

### (2) Force the user to grant the permission

We keep asking them to grant the permission in the splash view.
`deviceName` is always the serial number of the device.

### (3) Let MDM grant the permission

We don't provide a UI to grant the permission in the application.
Instead, the `deviceName` is the `Build.MODEL` by default, unless
advanced users or admins using MDM set the permission, in which case
it's the serial number of the device.

### (4) Let MDM set a custom/override device name

This could be an alternative to (3) if it is easier for customers using
MDM software to manage it this way. Though I doubt it...

-----

Going with option (3) is safe, and the other options can be added
incrementally in the future. However, it requires communicating to the
customer that they should set this permission for the `deviceName` to be
the serial of the device. That's not a problem yet, since the relevant
customer is using MDM to manage the app; it's trivial to set this
permission via that UI.

If we did want to show this permission to the user, I think option (1)
is most likely going to be better than option (2) in most cases.

---------

Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2024-03-21 12:39:23 +00:00
Thomas Eizinger
45d31e0b62 fix(phoenix-channel): queue join message before others (#4242)
This was discovered as part of
https://github.com/firezone/firezone/pull/4213. When we reconnect to the
portal, we first need to join the correct room before sending any
messages to it. For example, as a client, we need to join the `client`
room before sending messages in it.

This implementation is meant to be a quick fix. The "proper" solution
would be to keep track of which rooms we have joined and reset that upon
reconnect. Introducing such a state machine is a much larger refactoring
that is likely not going to make much of a difference for now because we
only join a fixed number of rooms and that will usually succeed.
2024-03-21 02:17:59 +00:00
Gabi
db62e7bacc feat(android): detect network and dns changes and send them to connlib (#4163)
This completely removes the `get_system_default_resolvers` for android
2024-03-21 02:14:01 +00:00
Gabi
40f5fa3ca2 refactor(connlib): explicitly set DNS from clients instead of requesting it via callback (#4240)
Extracted from #4163

Dependant PRs:
#4198
#4133
#4163
2024-03-21 01:24:10 +00:00
Gabi
7449c9b2d6 chore(connlib): add some additional details about UnallowedPacket (#4241)
ref: #4018 

extracted from #4163
2024-03-21 00:55:18 +00:00
Reactor Scram
9f9e66aec6 chore(gui-client): set author key in the Cargo.toml manifest (#4233)
This fixes a warning about the `Maintainer` field in the deb being
empty, when you install it
2024-03-20 22:21:13 +00:00
Andrew Dryga
29cc0096a8 chore(portal): Fix flaky test and relays load balancing selection (#4230)
A few gifts for @thomaseizinger 

Unblocks
https://github.com/firezone/firezone/pull/4213#issuecomment-2007187811
Closes #3838
2024-03-20 16:33:47 -06:00
Andrew Dryga
8195ac1893 feat(portal): Sync accounts between stripe and portal (#4173)
Closes #3888
2024-03-20 16:32:07 -06:00
Reactor Scram
ada9d896cf chore(gui-client): remove unused env var (#4234)
Must have been a hack to run the smoke test in CI, and was never
actually hooked up.
2024-03-20 22:20:29 +00:00
Andrew Dryga
392adc9e45 fix(portal): Fix various issues with presence-triggered table reloads (#4228)
Also, cover that code with tests.
2024-03-20 14:35:52 -06:00
Reactor Scram
58f1b357d9 refactor(windows): fix cancellation-safety when listening for network events (#4227)
Not sure if this is a fix or a refactor.

Closes #4226
2024-03-20 20:11:14 +00:00
Reactor Scram
e05cbbe0a0 build(gui-client/linux): include an empty firezone-tunnel binary with the Tauri deb package (#4220)
I thought this was going to use `cargo-deb` but it was actually easy
with the Tauri deb bundling we already use.

```[tasklist]
### Before merging
- [x] Make sure every file in the Tauri deb is also in our deb (e.g. icons)
```
2024-03-20 14:11:41 +00:00
Thomas Eizinger
32e0f64b73 refactor(connlib): introduce dedicated ctor for IpProvider (#4206) 2024-03-20 02:16:42 +00:00
Thomas Eizinger
2a46fce574 refactor(connlib): remove Result return values from callbacks (#4158)
Currently, an error returned by `Tunnel::poll_next_event` is only
logged. In other words, they are never fatal. This creates a tricky to
understand relationship on what kind of errors should be returned from
callbacks. Because connlib is used on multiple operating systems, it has
no idea how fatal a particular error is.

This PR removes all of these `Result` return values with the following
consequences:

- For Android, we now panic when a callback fails. This is a slight
change in behaviour. I believe that previously, any exception thrown by
a callback into Android was caught and returned as an error. Now, we
panic because in the FFI layer, we don't have any information on how
fatal the error is. For non-fatal errors, the Android app should simply
not throw an exception. The panics will cause the connlib task to be
shut down which triggers an `on_disconnect`.
- For Swift, there is no behaviour change. The FFI layer already did not
support `Result`s for those callbacks. I don't know how exceptions from
Swift are translated across the FFI layer but there is no change to what
we had before.
- For the Tauri client:
- I chose to log errors on ERROR level and continue gracefully for the
DNS resolvers.
- We panic in case the controller channel is full / closed. That should
really never happen in practice though unless we are currently shutting
down the app.

Resolves: #4064.
2024-03-20 02:09:20 +00:00
Gabi
fa387d0e59 fix(connlib): remove outdated assertion due to possibility of network changes (#4222)
found while working on #4163
2024-03-20 02:05:07 +00:00
dependabot[bot]
baa2831664 build(deps): Bump clap from 4.5.2 to 4.5.3 in /rust (#4191)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.2 to 4.5.3.
<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.5.3</h2>
<h2>[4.5.3] - 2024-03-15</h2>
<h3>Internal</h3>
<ul>
<li><em>(derive)</em> Update <code>heck</code></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.5.3] - 2024-03-15</h2>
<h3>Internal</h3>
<ul>
<li><em>(derive)</em> Update <code>heck</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4e07b43858"><code>4e07b43</code></a>
chore: Release</li>
<li><a
href="8247c7ddf0"><code>8247c7d</code></a>
docs: Update changelog</li>
<li><a
href="677c52ce08"><code>677c52c</code></a>
chore: Update <code>heck</code> requirement (<a
href="https://redirect.github.com/clap-rs/clap/issues/5396">#5396</a>)</li>
<li>See full diff in <a
href="https://github.com/clap-rs/clap/compare/v4.5.2...v4.5.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.2&new-version=4.5.3)](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>
Co-authored-by: Reactor Scram <ReactorScram@users.noreply.github.com>
2024-03-19 22:49:06 +00:00
Reactor Scram
651ea3ae00 build(gui-client/linux): make sure debug symbols get uploaded for the Linux GUI client (#4217)
- Split up CI artifacts into "exe", "pkg", and "syms" so it's easy to
check they're being uploaded. This shouldn't affect published artifacts
- Set `strip = "none"` which seems to be necessary to get the debug
symbols in Linux, although they still end up in the exe and not the dwp
file 🤔 don't know why
- Test Linux stacktrace in CI

Stacktrace examples:
- On Linux we at least get function names, but we aren't getting line
numbers for some reason
https://github.com/firezone/firezone/actions/runs/8350493514/job/22857032124#step:10:268
- On Windows we also get line numbers, as before
https://github.com/firezone/firezone/actions/runs/8350493514/job/22857033367#step:11:351

I didn't test downloading the files and doing a stacktrace locally, but
I have batched that up for whenever I do a big manual test of the
CD-produced release artifacts:
https://github.com/firezone/firezone/issues/3887
2024-03-19 22:18:03 +00:00
Jamil
3ac0739323 refactor(apple): Expose hasUnappliedChanges (#4211)
Exposing the var for now. This is all removed and much simplified in
#4133
2024-03-19 20:09:30 +00:00
Jamil
0807be212b chore(apple): Allow Debug and Test Flight builds to have separate tunnel managers (#4212)
Fixes https://github.com/firezone/firezone/issues/3865

Allows us to test both Test Flight and Debug builds from Xcode on the
same machine without having to reset the tunnel config.

<img width="474" alt="Screenshot 2024-03-18 at 10 48 10 PM"
src="https://github.com/firezone/firezone/assets/167144/9390ad2b-93be-46ef-a7a5-ceded255be41">
2024-03-19 18:50:46 +00:00
Jamil
66f3781413 chore(deps): Need to bump Swift dependencies manually, Dependabot can't figure them out from Package.resolved (#4204)
Refs #4203
2024-03-19 18:42:22 +00:00
Andrew Dryga
a339828570 chore(portal): DRY live table error handling and handle errors via page reloads (#4205)
I also added whole bunch of tests for the live tables.

Closes #4189
2024-03-19 12:26:41 -06:00
Andrew Dryga
370a45571c Track protocol in activities (#4215)
Closes #4046
Closes #3026
2024-03-19 12:26:12 -06:00
Reactor Scram
74026d8b13 build(gui-client): disable AppImage bundling (#4216)
AppImages won't work with process splitting. (#3713)

As far as I can tell, they just produce one binary. Internally they use
FUSE or something to mount a squashfs image, but that image won't be
able to hook into systemd and run with root permissions and everything.
I don't think it's practical, and Tauri's AppImage bundling doesn't have
the features for it.

Even their deb bundler doesn't have any way to specify a path for a
daemon to be installed. The sidecar feature only seems intended for the
GUI app to call, not anything else on the system.

(There is such a thing as installing AppImages, but I don't think it's
worth pursuing - We should just do debs)
2024-03-19 17:26:25 +00:00
Reactor Scram
504ff3ffca ci(tauri-client): try to enable smoke tests for Ubuntu 22.04 (#3770)
Closes #3699 if successful

Ref #3972 

I don't understand why it started working. There's at least 3
possibilities:
- Some unrelated change in the last few weeks fixed it (Maybe bumping
Tauri to 1.6.1? https://github.com/firezone/firezone/pull/3881)
- It was a bug in the Github CI runner image that they fixed
- It's an awful race condition and adding `tracing::debug!` fixed it

---------

Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
2024-03-19 15:41:37 +00:00
Reactor Scram
adea43e63b feat(gui-client): Tauri welcome screen (#4013)
Closes #3961 

No tests yet, might be tricky to test since it's all I/O. 
I cued it off the device ID being generated, so it will have a minor
merge conflict with #3920

```[tasklist]
### Before merging
- [ ] UI polish, or disable the welcome screen temporarily
```

<img width="664" alt="image"
src="https://github.com/firezone/firezone/assets/13400041/d5def59c-b075-4135-91e5-85f9f9212fa5">

---------

Co-authored-by: Jamil Bou Kheir <jamilbk@users.noreply.github.com>
2024-03-19 14:55:03 +00:00
Andrew Dryga
09dbd70dc5 chore(infra): Use Regional Instance Group in the GCP NAT example (#4183)
This example will work once our latest gateway is pushed to GitHub
Container Registry, but to test it for now a few overrides can be added
to the `main.tf` to use our Google Artifact Registry and local module
instead:
```diff
module "gateways" {
--  source = "github.com/firezone/firezone/terraform/modules/google-cloud/apps/gateway-region-instance-group"
++  source = "../../../modules/google-cloud/apps/gateway-region-instance-group"
...
++  container_registry = "us-east1-docker.pkg.dev"
++  image_repo         = "firezone-prod/firezone"
++  image              = "gateway"
}
```

---------

Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
Signed-off-by: Andrew Dryga <andrew@dryga.com>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2024-03-19 08:44:14 -06:00
Andrew Dryga
24dc7be6bb Hotfix disabled sign up message 2024-03-18 22:12:08 -06:00
Thomas Eizinger
8ce5e64a2c ci: add timeout to cache download from GitHub (#4207)
GitHub actions cache download sometimes gets stuck. See
https://github.com/firezone/firezone/actions/runs/8335503938/job/22811115560.
In my experience with `rust-libp2p`, this can be fixed using an explicit
timeout.

See
https://github.com/actions/cache/blob/main/tips-and-workarounds.md#cache-segment-restore-timeout.
2024-03-19 02:20:27 +00:00
Thomas Eizinger
05cfb336b4 feat(connlib): reduce packet drops (#4168)
Previously, we used `SocketState::send` without wrapping it in
`UdpSocket::try_io`. This meant that tokio had no chance of clearing the
readiness flag on the socket when we actually failed to send a packet,
resulting in many log messages like this:

```
Tunnel error: Resource temporarily unavailable (os error 11)
```

This PR refactors how we send UDP packets and when we read IP packet
from the device. Instead of just polling for send-readiness, we flush
all buffered packets and _then_ check for send-readiness. That will only
succeed if we managed to send all buffered packets and the socket still
has space for more packets.

Typically, this buffer only has 1-2 packets. That is because we
currently only ever read a single packet from the device. See #4139 for
how this might change. It may have more packets when our `Allocation`s
emit some (like multiple channel bindings in a row). Because we enforce
further send-readiness before continuing, this buffer cannot grow
unbounded.

Resolves: #3931.
2024-03-19 01:07:41 +00:00
Gabi
9f850bb92d fix(connlib): exclude sentinel dns range for resources ips (#4200)
In the future we will want to refactor this to a builder pattern to
prevent the number of parameters from growing and have them clearer but
this works simply for now.

Found while discussing #4174

---------

Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
2024-03-19 00:05:05 +00:00
Thomas Eizinger
4e48884513 refactor(connlib): move functionality onto ClientState (#4167)
With the move to SANS-IO, we will be able to write deterministic unit
tests for the tunnel logic. To actually do that, `ClientState` and
`GatewayState` need to encapsulate all the logic that we want to test.

This PR does some minor refactoring on the functions on `ClientTunnel`
and moves several of them onto `ClientState`. It doesn't touch
`add_resources` and `remove_resource` because those depend on #4156.
2024-03-18 23:54:20 +00:00
Andrew Dryga
5a0aff1d75 chore(portal): Re-enable Finch as API client for Swoosh (#4197)
Blocked by https://github.com/swoosh/swoosh/issues/881
2024-03-18 17:49:16 -06:00
Jamil
f7259d406d chore(deps): Dependabot fails at Swift, so let it try its best (#4203)
Dependabot doesn't seem to consider the `Package.resolved` lockfile for
updates, only Package.swift.

Dependabot security updates however flag us for outdated dependencies in
`Package.resolved`.

There doesn't seem to be a good workaround, so revert back to previous
behavior and update Package.resolved via Xcode until support gets
better.
2024-03-18 15:00:24 -07:00
dependabot[bot]
2d3ac17270 build(deps): Bump follow-redirects from 1.15.4 to 1.15.6 in /e2e (#4150)
Bumps
[follow-redirects](https://github.com/follow-redirects/follow-redirects)
from 1.15.4 to 1.15.6.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="35a517c586"><code>35a517c</code></a>
Release version 1.15.6 of the npm package.</li>
<li><a
href="c4f847f851"><code>c4f847f</code></a>
Drop Proxy-Authorization across hosts.</li>
<li><a
href="8526b4a1b2"><code>8526b4a</code></a>
Use GitHub for disclosure.</li>
<li><a
href="b1677ce001"><code>b1677ce</code></a>
Release version 1.15.5 of the npm package.</li>
<li><a
href="d8914f7982"><code>d8914f7</code></a>
Preserve fragment in responseUrl.</li>
<li>See full diff in <a
href="https://github.com/follow-redirects/follow-redirects/compare/v1.15.4...v1.15.6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=follow-redirects&package-manager=npm_and_yarn&previous-version=1.15.4&new-version=1.15.6)](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)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/firezone/firezone/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-18 21:13:29 +00:00
Jamil
c7d72d4ba0 chore(deps): Link a Package.swift where dependabot expects to find it (#4201)
Looks like dependabot is expecting it in the same dir as the lockfile.
2024-03-18 21:08:04 +00:00
Thomas Eizinger
083fbd2844 refactor(connlib): only store ResourceId in Peer (#4156)
In order to track the allowed resources, we only need to track the ID,
not the entire resource. This avoids duplicating information about
resources.
2024-03-18 21:01:13 +00:00
Jamil
a9dfe009b7 refactor(apple): Remove Client-side retry logic in favor of letting the error take effect (#4196)
Currently we retry starting the tunnel based on why it disconnected.
This has happened for example if the stored token is invalid and we
don't clear it, causing a connect -> disconnect loop that causes the UI
to glitch every second.

Instead, we just let it fail, and log the error, or maybe even crash.
This PR makes that more noisy so (1) we know about it, and (2) the app
enters a valid state (signed out) more quickly.

Fixes #4138
2024-03-18 19:24:59 +00:00
Jamil
f5db34b597 chore(apple): Remove connlib_client_apple log filters because they have no effect (#4182)
Discovered that tracing doesn't respect the `connlib_client_apple` log
filter, which makes it a bit confusing when logging debug in the Apple
FFI module.

Removing to prevent further casualties.

Extracted out of #4133
2024-03-18 19:24:49 +00:00
dependabot[bot]
5408838189 build(deps): Bump anyhow from 1.0.80 to 1.0.81 in /rust (#4195)
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.80 to 1.0.81.
<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.81</h2>
<ul>
<li>Make backtrace support available when using -Dwarnings (<a
href="https://redirect.github.com/dtolnay/anyhow/issues/354">#354</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4aad4edebd"><code>4aad4ed</code></a>
Release 1.0.81</li>
<li><a
href="8be90917c6"><code>8be9091</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/anyhow/issues/354">#354</a>
from dtolnay/deadcode</li>
<li><a
href="a2eb7dd5e1"><code>a2eb7dd</code></a>
Make compatible with -Dwarnings</li>
<li>See full diff in <a
href="https://github.com/dtolnay/anyhow/compare/1.0.80...1.0.81">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=anyhow&package-manager=cargo&previous-version=1.0.80&new-version=1.0.81)](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>
2024-03-18 18:49:36 +00:00
Reactor Scram
a10d76c525 chore(linux): revert /etc/resolv.conf on exit if we changed it to control DNS (#4148)
This isn't really user-facing, so I marked it down from `feat` to
`chore`. Closes #3817

- If we exit gracefully, `/etc/resolv.conf` is reverted
- We always keep the `.before-firezone` backup in case we lose power and
the revert transaction is corrupted or rolled back
- We use a magic header to detect whether the last run was a crash or
not. If Firezone crashes and the user wants to modify their default DNS,
they need to delete that header so that Firezone won't accidentally
revert its backup and trash their change.
- All error variants for this module replaced with `anyhow::Error` since
they were never matched by callers.

I ran `cargo mutants` locally and it helped me validate the unit tests
and it picked up a `match` branch that I forgot to delete.

```[tasklist]
- [x] (Failed: Integration tests didn't like it) ~~Add the system default resolvers below Firezone's sentinels~~
- [x] `tracing::info` "Last run crashed" if we have to revert the file at startup
```

---------

Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
2024-03-18 16:29:25 +00:00
Reactor Scram
8bad6a39d0 chore: propose process splitting for Linux (#4153) 2024-03-18 16:24:19 +00:00
Andrew Dryga
62df3fb89c Stop using Finch as Swoosh http client 2024-03-18 08:56:05 -06:00
Andrew Dryga
7e3271c205 fix(portal): Start finch pool for swoosh 2024-03-18 08:28:20 -06:00
Jamil
de687f4c59 chore(ci): Lock AzureSignTool to version 4 (#4190)
Fixes #4185
2024-03-18 13:42:24 +00:00
Brian Manifold
2c7f45cc99 feat(portal): Add sign up override in portal (#3739)
Why:

* In order to allow easy testing of billing / Stripe integration, the
staging environment needs to allow members of the Firezone team access
to create new accounts, while disallowing the general public to create
accounts. The account creation override functionality allows for
multiple domains to be set by ENV variable by passing a comma separated
string of domains.

---------

Co-authored-by: Andrew Dryga <andrew@dryga.com>
2024-03-17 18:12:25 -06:00
Andrew Dryga
cd7cb8f2a9 chore(portal): Fix some typos (#4184)
@bmanifold fixed a few instances in #3739 but I went ahead and replaced
all of them, once we merge it and rebase #3739 on top of it the diff
should be minimal.
2024-03-17 17:33:30 -06:00