Commit Graph

3527 Commits

Author SHA1 Message Date
Gabi
e486339523 fix(snownet): properly cleanup connections before adding a new one (#3587)
This was causing some problems in my tests with connlib, when the client
re-created the connection and recieved the candidates before the offer
response, this *seems* like it made the client hang waiting for the
connection to happen, without failing it.

I couldn't find out why exactly the hang happens since it seems like the
remote candidates are added to the new connection and stun packets are
directed to the new connection, so it may be unrelated but I think it's
still right to clean this hashmap up.

---------

Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
2024-02-06 23:18:49 +00:00
Reactor Scram
2ee6eb5d88 fix(windows): Ensure crashes, errors, and panics are all logged to file (#3572)
Closes #3567 

This doesn't feel complete, but there isn't much more I can do without
changing lots of code and doing more research, and I don't want to hold
up the Windows beta for error handling that may not be used.

I'm only handling crashes, errors, and panics in the `Controller` task
since it's hard to simulate them elsewhere. Everything else like the
wintun worker thread will have to be best-effort or tested by modifying
the code temporarily.

Crashes go to stderr and and the log file, and we can get a line number
from the crash dump:

![image](https://github.com/firezone/firezone/assets/13400041/bbabcdb5-9d59-40b8-9b2f-bff2c88d8a88)

Errors go to stderr and the log file, but we don't get a line number,
because we aren't capturing the backtrace:

![image](https://github.com/firezone/firezone/assets/13400041/31e13b5a-aec7-4b3c-91e0-d0f230f4dfd3)

Panics go to stderr and the log file, but we don't even get the panic
message. I don't think I can do much about that. Tokio doesn't give us
the full `PanicInfo`, which contains the message and location (line
number). If we end up debugging a panic in prod we could bisect by
putting tighter bounds until we narrow it down.

![image](https://github.com/firezone/firezone/assets/13400041/20337dde-911a-4edf-8d68-829ed9aebc27)

The panic hook ends up not triggered because:
- If I don't catch the panic, the app won't close, because Tokio will
catch the panic
- If I do catch the panic, I can't call the panic hook manually, because
Tokio doesn't give me a `PanicInfo` struct. And I can't resume the
panic, because I'm still inside a Tokio task.

I don't think there's any point capturing a crash dump on panic, because
Tokio will have already stopped the panicked thread, and the backtrace
will only show the catch location.

Maybe the message would print if I changed the controller task to a
controller thread, so that panicking that thread will trigger
`tracing_panic` and then abort the process? But that's a bigger change.

---------

Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
Co-authored-by: Gabi <gabrielalejandro7@gmail.com>
2024-02-06 20:30:05 +00:00
Jamil
232b3874f9 fix(ci): wait for Vault to load sign in form before filling it out (#3585)
Fixes flaky tests:


https://github.com/firezone/firezone/actions/runs/7803717485/job/21284091520#step:21:1357
2024-02-06 19:10:31 +00:00
Jamil
931dd972bd Revert "chore(android): Remove i686 android target" (#3586)
Reverts firezone/firezone#3547

Seems that this wasn't the issue.
2024-02-06 11:26:15 -08:00
Jamil
9ec4ca9000 feat(devops): Add Trisha to staging GCP (#3584)
Adds Trisha as a staging env owner so she can view / debug client logs
and related staging GCP infrastructure.
2024-02-06 17:47:16 +00:00
Reactor Scram
a822238205 fix(windows): keep the main loop running even if a request has an error (#3569)
Closes #3521 because now almost all of the `?` in the main loop will log
an error and not bail. This is nice for trivial things like copying a
resource when we're not signed in. (e.g. User opens the menu, the token
expires, user clicks something, it should just do nothing instead of
crashing)

Closes a long-standing TODO for moving more of the request handling code
inside `impl Controller`
2024-02-06 16:24:11 +00:00
Reactor Scram
9365a61513 fix(windows): Wrap deep link URLs in SecureUrl, don't log them (#3574)
Previously the whole URL was logged, which includes half of the secret
token. Now it just says "Got deep link"
2024-02-06 16:21:36 +00:00
Jamil
af69e841bc refactor(portal): log in -> sign in (#3577)
Just making naming a little more consistent
2024-02-06 15:26:09 +00:00
Thomas Eizinger
0d5b230020 fix(snownet): don't attempt to bind a channel if we don't have a matching allocation (#3575)
In order to bind a channel to an IPv4 peer, the client must have
previously made an IPv4 allocation. The same applies to IPv6. The relay
will enforce this and reject the channel binding if that isn't the case
but we shouldn't rely on this in the client code. Instead, we should not
attempt to bind a channel if we haven't previously made an allocation
for that IP family.

We always try to make an allocation for both IPv4 and IPv6 but not every
relay may operate in a dual-socket mode. Thus, it may only return an
IPv4 or an IPv6 address.
2024-02-06 10:17:39 +00:00
Thomas Eizinger
5889037c91 fix: don't initialize relay with non-existent interface (#3582)
In the `snownet` integration branch, we ran into some problems because
we actually tried to use the IPv6 relay. This doesn't work though
because the docker-compose doesn't provide an IPv6 socket to the
container and thus the relay falsely registers with the portal as having
an IPv6 address.

Internally, we only bind to a wildcard address (`0.0.0.0` and `::`)
which unfortunately, doesn't seem to fail, even if we don't have an IPv6
interface.
2024-02-06 10:17:32 +00:00
Thomas Eizinger
18b9a783d2 fix(snownet): always clear state of failed connections (#3581)
Initially, I thought it could be useful to keep the connection around in
case we want to do an ICE restart. We don't do that (yet) so for now,
the safer option is to just clean up all the state and let the upper
layers deal with reestablishing it.

This should hopefully fix the repeated emitting of the
`ConnectionFailed` event.
2024-02-06 09:02:48 +00:00
Thomas Eizinger
75732ca56a feat(snownet): retry TURN allocations using exponential backoffs (#3530)
Similar to https://github.com/firezone/firezone/pull/3529.
2024-02-06 07:12:23 +00:00
Jamil
6fcfc5497d chore(portal): Enable Microsoft Entra by default in all envs (#3576)
🚀
2024-02-06 00:39:28 +00:00
Reactor Scram
5943a95b6f fix(windows): vt100 seems to panic in CI, just print a warning instead (#3573)
Fixes the Windows smoke test failing in CI currently.
The CI already has coloring enabled.
2024-02-05 22:56:32 +00:00
Reactor Scram
fa30588536 ci(windows): run the Windows smoke test in CI (#3542)
Closes #3534 

I'm running it in another job in parallel. It doesn't work in release
mode for Windows reasons, and I'm not sure how to share it with the
`cargo test` jobs.

So the overall time for `ci.yml` is only 11 minutes, which seems
typical. However it is using up another CI runner unit to build the
whole Tauri app from scratch in debug mode.

```[tasklist]
- [x] Skip the WebView2 error dialog if we're in smoke-test mode
- [x] Research if there's any Github action to install WebView2 in the runner
```

---------

Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
Co-authored-by: Gabi <gabrielalejandro7@gmail.com>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2024-02-05 21:54:22 +00:00
Jamil
c1dce5fd85 fix(android): Use persistent device ID (#3566)
fixes #3562
2024-02-05 21:45:17 +00:00
Jamil
fcbf6a68bc chore(portal): Misc sign in UX fixes (#3564)
Fixes #3389 
Fixes #3331 


Will need #3433 to merge for the entra logo to show up, but this will
fail gracefully if it lands before then.

<img width="537" alt="Screenshot 2024-02-05 at 5 36 17 AM"
src="https://github.com/firezone/firezone/assets/167144/90967150-e048-47ef-99cd-2f758021d017">
<img width="543" alt="Screenshot 2024-02-05 at 5 33 30 AM"
src="https://github.com/firezone/firezone/assets/167144/9683488a-ec4e-47dd-bdbc-e95fcf0bc08c">
<img width="528" alt="Screenshot 2024-02-05 at 5 33 13 AM"
src="https://github.com/firezone/firezone/assets/167144/fce5487d-3dd5-4b21-bb20-5097ba7055be">
2024-02-05 21:45:00 +00:00
Gabi
8a31a532b6 fix(connlib): Enable ansi colors for the windows client debug console (#3552)
This adds colors to the debug console in the windows client


![image](https://github.com/firezone/firezone/assets/3310803/dfb5b119-9db3-40b8-acf9-3485a2268597)
2024-02-05 21:37:54 +00:00
dependabot[bot]
0c05d853bb build(deps): Bump minidumper from 0.8.0 to 0.8.1 in /rust (#3560)
Bumps [minidumper](https://github.com/EmbarkStudios/crash-handling) from
0.8.0 to 0.8.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/EmbarkStudios/crash-handling/releases">minidumper's
releases</a>.</em></p>
<blockquote>
<h2>minidumper-0.8.1</h2>
<h3>Changed</h3>
<ul>
<li><a
href="https://redirect.github.com/EmbarkStudios/crash-handling/pull/81">PR#81</a>
resolved <a
href="https://redirect.github.com/EmbarkStudios/crash-handling/issues/80">#80</a>
by updating <code>polling</code> to 0.3.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3b77c9b00d"><code>3b77c9b</code></a>
chore: Release</li>
<li><a
href="d34d00bc51"><code>d34d00b</code></a>
chore: Release</li>
<li><a
href="789c99498c"><code>789c994</code></a>
Update CHANGELOGs</li>
<li><a
href="addf1486f8"><code>addf148</code></a>
Update (<a
href="https://redirect.github.com/EmbarkStudios/crash-handling/issues/81">#81</a>)</li>
<li><a
href="16c2545f2a"><code>16c2545</code></a>
chore: Release</li>
<li><a
href="955629bab9"><code>955629b</code></a>
Update CHANGELOG</li>
<li><a
href="5e907ff389"><code>5e907ff</code></a>
Add Android support for the i686 and x86-64 targets (<a
href="https://redirect.github.com/EmbarkStudios/crash-handling/issues/76">#76</a>)</li>
<li><a
href="14bba1b81e"><code>14bba1b</code></a>
Fix using <code>crash-handler</code> under Miri (<a
href="https://redirect.github.com/EmbarkStudios/crash-handling/issues/75">#75</a>)</li>
<li>See full diff in <a
href="https://github.com/EmbarkStudios/crash-handling/compare/minidumper-0.8.0...minidumper-0.8.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=minidumper&package-manager=cargo&previous-version=0.8.0&new-version=0.8.1)](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 <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>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-05 21:37:27 +00:00
Reactor Scram
e0f54784b4 fix(windows): save actor name to disk and reload it on startup (#3546)
Closes #3519 

The actor name is saved in plain text in our AppData folder.

I did simple manual tests on my dev laptop:
- Restart the app, it reloads the actor name from disk
- Sign out of the app, the file is deleted from the disk

Caveats:
- If you un-install the app while signed in, the actor name will still
be there until something cleans up AppData. I don't think the MSI cleans
it up.
- If the token is present but the actor name is missing, I just treat it
as if the token was missing and make the app be signed-out, since this
will happen on dev systems until this PR has been merged for some time.
- If we try to delete the file and the file is NotFound, I just ignore
it.
2024-02-05 21:27:43 +00:00
Andrew Dryga
8555b3e49d Fix prod deployment too 2024-02-05 14:39:39 -06:00
Andrew Dryga
cc8e18e09e Fix relay subnet ranges 2024-02-05 14:13:18 -06:00
Reactor Scram
ed2cae122e feat(windows): add smoke test subcommand (#3541)
Part of #3534
This PR creates the subcommand, which you can run locally, but it
doesn't run it in `ci.yml` yet. That's in #3542

---------

Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
Co-authored-by: Gabi <gabrielalejandro7@gmail.com>
2024-02-05 18:49:28 +00:00
Andrew Dryga
a969e7b555 Do not show deleted resources in the client and cleanup connections table 2024-02-05 10:28:05 -06:00
Jamil
6345eef8a4 chore(infra): Limit relays to used regions and expected load (#3540)
Fixes #3537
2024-02-05 15:52:06 +00:00
Brian Manifold
ed1ceb7e6e feat(portal): Add Microsoft Entra IDP sync to portal (#3433)
Why:

* To allow syncing of users/groups/memberships from an IDP to Firezone,
a custom identify provider adapter needs to be created in the portal
codebase at this time. The custom IDP adapter created in this commit is
for Microsoft Entra.
2024-02-05 15:32:06 +00:00
Thomas Eizinger
b73b0cf2b7 feat(snownet): return MutableIpPacket from decapsulate (#3555)
The user is already passing us a mutable buffer so we might as well give
them a `MutableIpPacket` to allow them to further mutate it.

Extracted out of #3391.
2024-02-05 10:55:23 +00:00
Thomas Eizinger
394e9e8cc3 chore(snownet): fix bad caching base after rename (#3557)
This is an oversight from
https://github.com/firezone/firezone/pull/3435.
2024-02-05 10:55:05 +00:00
Thomas Eizinger
e0af229901 feat(snownet): retry STUN bindings using exponential backoff (#3529)
Currently, we retry STUN bindings at a fixed interval if we don't
receive a response. This results in very noise logs if we attempt to
contact an IPv6 STUN server but don't have an IPv6 interface.
2024-02-05 05:50:50 +00:00
Thomas Eizinger
fa3775a125 deps: update to latest upstream version of str0m (#3554)
Necessary contributions have (once again) been merged so we can switch
back to the upstream repo again! :)
2024-02-05 03:40:41 +00:00
Thomas Eizinger
73b6d00f97 feat(snownet): automatically discover host candidates (#3528)
I had an idea that is quite a big deal. Instead of manually discovering
host candidates by iterating interfaces and adding all of them, we
automatically generate host candidates every time we receive traffic on
from a certain interface. Initially, you might think that this is a
catch-22: How do we generate traffic without having host candidates? The
answer is: relays!

When we initiate a new connection using `snownet`, we add a list of STUN
and TURN servers. We will immediately attempt to talk to both of them,
sending STUN bindings to the former and ALLOCATE requests to the latter.
As the replies come in, we know, which interface they have been received
on. That particular interface is an excellent `host` candidate because
we've already proven connectivity to a STUN or TURN server. In fact, for
hole-punching, we will need to send traffic via that same interface to
reach the gateway (otherwise the `srflx` candidate won't work anyway).

There is only one "edge"-case in which this doesn't work: When you want
to make a connection between a client and a gateway on the same subnet
yet without connectivity to a relay. At that point, I'd argue that your
network topology is broken anyway. If you can't talk to a relay, you
probably also cannot talk to the portal, meaning the signaling protocol
also doesn't work.
2024-02-05 03:40:33 +00:00
Reactor Scram
c3004426ec feat(windows): check Github for updates on startup (#3527)
Closes #2717 .

Known issue: If the notification times out and goes into the
notification center (the bell icon), then clicking the notification will
not open the link:


![image](https://github.com/firezone/firezone/assets/13400041/d2de84a5-da31-4a55-97b9-93e12847aa25)

Pass `--always-show-update-notification` to show the notification even
if our release is newer than Github's latest. (e.g. dev release)
Normally it only notifies if the latest release is newer than our
current release.


![image](https://github.com/firezone/firezone/assets/13400041/4597aaed-bc3c-4a43-9269-dff9a82873a8)

Clicking the notification (before it times out) opens the release URL:
https://github.com/firezone/firezone/releases/tag/1.0.0-pre.8

```[tasklist]
- [x] See if the println can be removed
- [x] Try to remove type annotation
- [x] Wording
- [x] Comment why it's necessary to route through Controller
- [x] User agent
```
2024-02-03 19:06:43 +00:00
Reactor Scram
637b94b61a fix(windows): show user-friendly error if a 2nd instance tries to start (#3548)
Closes #3538 


![image](https://github.com/firezone/firezone/assets/13400041/e8fc4cc6-f60f-4e1f-9fb6-90697e47a492)
2024-02-03 19:00:33 +00:00
Jamil
bbab37f1e1 chore(android): Remove i686 android target (#3547)
This increases our app bundle size with no real benefit. ~~I'm also
encountering an issue where the `x86` shared library is being loaded
instead of the appropriate x86_64 one, causing a crash.~~ Edit: The
crash appears to be coming from somewhere else, still investigating.
Still it would be good to remove this as the Rust dependency in the
Android build is built serially.
2024-02-03 17:41:31 +00:00
Reactor Scram
079b4e7f9a fix(firezone-tunnel(windows)): don't panic if the sending ring buffer is full (#3544)
I never saw this replicate, but in theory it could happen. This PR just
drops packets while the ring buffer is full.

Closes #3518
2024-02-02 21:49:05 +00:00
Reactor Scram
6bb302b5d4 feat(windows): log have_internet changes and API base URL at INFO level (#3543)
API URL, e.g. `wss://api.firezone.dev/`

Closes #3536 


![image](https://github.com/firezone/firezone/assets/13400041/1ea4b481-0e2c-4a77-bf1d-7c7c46b4d68c)
2024-02-02 21:44:17 +00:00
Jamil
cf30ff4189 fix(android): Load library before starting tunnel only (#3539)
When AlwaysOnVpn is configured, the tunnel can run without MainActivity,
so the library is never loaded.

Fixes #3532
2024-02-02 13:31:57 -08:00
dependabot[bot]
b98b62ce9d build(deps): Bump hashicorp/tfc-workflows-github from 1.1.1 to 1.2.0 (#3477)
Bumps
[hashicorp/tfc-workflows-github](https://github.com/hashicorp/tfc-workflows-github)
from 1.1.1 to 1.2.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/hashicorp/tfc-workflows-github/releases">hashicorp/tfc-workflows-github's
releases</a>.</em></p>
<blockquote>
<h2>v1.2.0</h2>
<ul>
<li>Adds support for saved plans and destroy runs by <a
href="https://github.com/aaabdelgany"><code>@​aaabdelgany</code></a> <a
href="https://redirect.github.com/hashicorp/tfc-workflows-github/pull/36">#36</a></li>
<li>Bug fixes and enhancements from <a
href="https://github.com/hashicorp/tfc-workflows-tooling/releases/tag/v1.2.0">tfc-workflows-tooling@v1.2.0</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/hashicorp/tfc-workflows-github/blob/main/CHANGELOG.md">hashicorp/tfc-workflows-github's
changelog</a>.</em></p>
<blockquote>
<h1>v1.2.0</h1>
<ul>
<li>Adds support for saved plans and destroy runs by <a
href="https://github.com/aaabdelgany"><code>@​aaabdelgany</code></a> <a
href="https://redirect.github.com/hashicorp/tfc-workflows-github/pull/36">#36</a></li>
<li>Bug fixes and enhancements from <a
href="https://github.com/hashicorp/tfc-workflows-tooling/releases/tag/v1.2.0">tfc-workflows-tooling@v1.2.0</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="26a0abd40e"><code>26a0abd</code></a>
1.2.0 release</li>
<li><a
href="d049bcc233"><code>d049bcc</code></a>
1.2.0 release.</li>
<li><a
href="cd747a5366"><code>cd747a5</code></a>
Bump tfc-workflows-tooling usage to 1.2.0</li>
<li><a
href="7537cbff56"><code>7537cbf</code></a>
Prepare for 1.2.0 release</li>
<li><a
href="1855fac8fe"><code>1855fac</code></a>
docs: add releases doc (<a
href="https://redirect.github.com/hashicorp/tfc-workflows-github/issues/35">#35</a>)</li>
<li><a
href="fc8a79991e"><code>fc8a799</code></a>
docs: Change <code>TF_ORGANIZATION</code> to
<code>TF_CLOUD_ORGANIZATION</code> (<a
href="https://redirect.github.com/hashicorp/tfc-workflows-github/issues/33">#33</a>)</li>
<li>See full diff in <a
href="https://github.com/hashicorp/tfc-workflows-github/compare/v1.1.1...v1.2.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=hashicorp/tfc-workflows-github&package-manager=github_actions&previous-version=1.1.1&new-version=1.2.0)](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-02-02 19:39:40 +00:00
Jamil
6e6c32a29f chore(portal): Add helptext explaning auth identities/tokens (#3515)
Fixes #3333
2024-02-02 19:37:54 +00:00
Reactor Scram
8ae57e85fc fix(windows): fix counting / exporting / clearing log files (#3535)
Closes #3531

I refactored it so that all the log-related files pull their path from
one function, so hopefully they won't skew in the future. The path could
still be wrong though. A smoke test might be able to catch that: #3534
2024-02-02 17:28:01 +00:00
Reactor Scram
1e596ce5d9 feat(windows): add CLI flag to test a clickable update notification (#3526)
Looks a little odd in the Windows Server VM cause of the minimal desktop
environment, but it does open the browser, same as the "Sign In" button

![image](https://github.com/firezone/firezone/assets/13400041/772b755d-8291-44c4-9cb9-d0dca5c98f8e)

---------

Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
2024-02-02 17:07:35 +00:00
Reactor Scram
b7294328e1 refactor(windows): simplify how CLI args are passed to the GUI (#3525) 2024-02-02 16:21:12 +00:00
dependabot[bot]
d04083b6a9 build(deps): Bump itertools from 0.12.0 to 0.12.1 in /rust (#3507)
Bumps [itertools](https://github.com/rust-itertools/itertools) from
0.12.0 to 0.12.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-itertools/itertools/blob/master/CHANGELOG.md">itertools's
changelog</a>.</em></p>
<blockquote>
<h2>0.12.1</h2>
<h3>Added</h3>
<ul>
<li>Documented iteration order guarantee for
<code>Itertools::[tuple_]combinations</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/822">#822</a>)</li>
<li>Documented possible panic in <code>iterate</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/842">#842</a>)</li>
<li>Implemented <code>Clone</code> and <code>Debug</code> for
<code>Diff</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/845">#845</a>)</li>
<li>Implemented <code>Debug</code> for <code>WithPosition</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/859">#859</a>)</li>
<li>Implemented <code>Eq</code> for <code>MinMaxResult</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/838">#838</a>)</li>
<li>Implemented <code>From&lt;EitherOrBoth&lt;A, B&gt;&gt;</code> for
<code>Option&lt;Either&lt;A, B&gt;&gt;</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/843">#843</a>)</li>
<li>Implemented <code>PeekingNext</code> for <code>RepeatN</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/855">#855</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Made <code>CoalesceBy</code> lazy (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/801">#801</a>)</li>
<li>Optimized <code>Filter[Map]Ok::next</code>,
<code>Itertools::partition</code>, <code>Unique[By]::next[_back]</code>
(<a
href="https://redirect.github.com/rust-itertools/itertools/issues/818">#818</a>)</li>
<li>Optimized <code>Itertools::find_position</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/837">#837</a>)</li>
<li>Optimized <code>Positions::next[_back]</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/816">#816</a>)</li>
<li>Optimized <code>ZipLongest::fold</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/854">#854</a>)</li>
<li>Relaxed <code>Debug</code> bounds for <code>GroupingMapBy</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/860">#860</a>)</li>
<li>Specialized <code>ExactlyOneError::fold</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/826">#826</a>)</li>
<li>Specialized <code>Interleave[Shortest]::fold</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/849">#849</a>)</li>
<li>Specialized <code>MultiPeek::fold</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/820">#820</a>)</li>
<li>Specialized <code>PadUsing::[r]fold</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/825">#825</a>)</li>
<li>Specialized <code>PeekNth::fold</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/824">#824</a>)</li>
<li>Specialized <code>Positions::[r]fold</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/813">#813</a>)</li>
<li>Specialized <code>PutBackN::fold</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/823">#823</a>)</li>
<li>Specialized <code>RepeatN::[r]fold</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/821">#821</a>)</li>
<li>Specialized <code>TakeWhileInclusive::fold</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/851">#851</a>)</li>
<li>Specialized <code>ZipLongest::rfold</code> (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/848">#848</a>)</li>
</ul>
<h3>Notable Internal Changes</h3>
<ul>
<li>Added test coverage in CI (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/847">#847</a>,
<a
href="https://redirect.github.com/rust-itertools/itertools/issues/856">#856</a>)</li>
<li>Added semver check in CI (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/784">#784</a>)</li>
<li>Enforced <code>clippy</code> in CI (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/740">#740</a>)</li>
<li>Enforced <code>rustdoc</code> in CI (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/840">#840</a>)</li>
<li>Improved specialization tests (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/807">#807</a>)</li>
<li>More specialization benchmarks (<a
href="https://redirect.github.com/rust-itertools/itertools/issues/806">#806</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="98d3978c87"><code>98d3978</code></a>
Prepare v0.12.1 release</li>
<li><a
href="dffac1fde4"><code>dffac1f</code></a>
Bump obi1kenobi/cargo-semver-checks-action from 2.2 to 2.3</li>
<li><a
href="00998a4bbc"><code>00998a4</code></a>
<code>CoalesceBy</code>: missing field in <code>Debug</code></li>
<li><a
href="a0411d6c6f"><code>a0411d6</code></a>
<code>CombinationsWithReplacement</code>: use a boxed slice
internally</li>
<li><a
href="8dd75f155c"><code>8dd75f1</code></a>
<code>Permutations</code>: use boxed slices internally</li>
<li><a
href="b785403f5f"><code>b785403</code></a>
<code>ExactlyOneError</code>: implement Debug differently</li>
<li><a
href="7a1c22be5e"><code>7a1c22b</code></a>
<code>FlattenOk</code>: Debug with macro</li>
<li><a
href="94452e3eaf"><code>94452e3</code></a>
<code>GroupingMapBy</code>: fix Debug implementation</li>
<li><a
href="2e325a0bd4"><code>2e325a0</code></a>
<code>TakeWhileInclusive</code>: missing field in
<code>Debug</code></li>
<li><a
href="a48c5b474b"><code>a48c5b4</code></a>
<code>WithPosition</code>: implement Debug</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-itertools/itertools/compare/v0.12.0...v0.12.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=itertools&package-manager=cargo&previous-version=0.12.0&new-version=0.12.1)](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 <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>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-02 06:29:34 +00:00
dependabot[bot]
f846078e55 build(deps): Bump libc from 0.2.152 to 0.2.153 in /rust (#3508)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.152 to 0.2.153.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/libc/releases">libc's
releases</a>.</em></p>
<blockquote>
<h2>0.2.153</h2>
<h2>What's Changed</h2>
<ul>
<li>Add SOMAXCONN to vita on 0.2 (to fix std) by <a
href="https://github.com/pheki"><code>@​pheki</code></a> in <a
href="https://redirect.github.com/rust-lang/libc/pull/3552">rust-lang/libc#3552</a></li>
<li>Fix CI for v0.2 by <a
href="https://github.com/JohnTitor"><code>@​JohnTitor</code></a> in <a
href="https://redirect.github.com/rust-lang/libc/pull/3557">rust-lang/libc#3557</a></li>
<li>[Backport <a
href="https://redirect.github.com/rust-lang/libc/issues/3548">#3548</a>]
Add ioctl FS_IOC_{G,S}{ETVERSION,ETFLAGS} for LoongArch64 by <a
href="https://github.com/heiher"><code>@​heiher</code></a> in <a
href="https://redirect.github.com/rust-lang/libc/pull/3570">rust-lang/libc#3570</a></li>
<li>Add MFD_NOEXEC_SEAL and MFD_EXEC by <a
href="https://github.com/rusty-snake"><code>@​rusty-snake</code></a> in
<a
href="https://redirect.github.com/rust-lang/libc/pull/3553">rust-lang/libc#3553</a></li>
<li>Backport of <a
href="https://redirect.github.com/rust-lang/libc/issues/3546">#3546</a>
and update crate version to 0.2.153 by <a
href="https://github.com/GuillaumeGomez"><code>@​GuillaumeGomez</code></a>
in <a
href="https://redirect.github.com/rust-lang/libc/pull/3554">rust-lang/libc#3554</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/rusty-snake"><code>@​rusty-snake</code></a>
made their first contribution in <a
href="https://redirect.github.com/rust-lang/libc/pull/3553">rust-lang/libc#3553</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/rust-lang/libc/compare/0.2.152...0.2.153">https://github.com/rust-lang/libc/compare/0.2.152...0.2.153</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ccf8a3e520"><code>ccf8a3e</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/libc/issues/3554">#3554</a>
from GuillaumeGomez/update-0.2</li>
<li><a
href="036fe2e41b"><code>036fe2e</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/libc/issues/3553">#3553</a>
from rusty-snake/mfd-exec</li>
<li><a
href="adaec1d02f"><code>adaec1d</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/libc/issues/3570">#3570</a>
from heiher/fs-ioctl</li>
<li><a
href="9a07431396"><code>9a07431</code></a>
Add ioctl FS_IOC_{G,S}{ETVERSION,ETFLAGS} for LoongArch64</li>
<li><a
href="3726d14766"><code>3726d14</code></a>
Update crate version to 0.2.153</li>
<li><a
href="d5d370016f"><code>d5d3700</code></a>
Ignore some android constants not found in tests</li>
<li><a
href="738f9014cc"><code>738f901</code></a>
Add missing constants for Android</li>
<li><a
href="8b68569939"><code>8b68569</code></a>
Add MFD_NOEXEC_SEAL and MFD_EXEC</li>
<li><a
href="b56e4b3490"><code>b56e4b3</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/libc/issues/3557">#3557</a>
from JohnTitor/fix-ci</li>
<li><a
href="941f82557a"><code>941f825</code></a>
Fix CI for v0.2</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-lang/libc/compare/0.2.152...0.2.153">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=libc&package-manager=cargo&previous-version=0.2.152&new-version=0.2.153)](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 <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>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-02 06:29:00 +00:00
dependabot[bot]
f34a7142cc build(deps): Bump time from 0.3.31 to 0.3.32 in /rust (#3509)
Bumps [time](https://github.com/time-rs/time) from 0.3.31 to 0.3.32.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/time-rs/time/releases">time's
releases</a>.</em></p>
<blockquote>
<h2>v0.3.32</h2>
<p>See the <a
href="https://github.com/time-rs/time/blob/main/CHANGELOG.md">changelog</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/time-rs/time/blob/main/CHANGELOG.md">time's
changelog</a>.</em></p>
<blockquote>
<h2>0.3.32 [2024-02-01]</h2>
<h3>Added</h3>
<ul>
<li>Methods to replace the day of the year.
<ul>
<li><code>Date::replace_ordinal</code></li>
<li><code>PrimitiveDateTime::replace_ordinal</code></li>
<li><code>OffsetDateTime::replace_ordinal</code></li>
</ul>
</li>
<li>Modules to treat an <code>OffsetDateTime</code> as a Unix timestamp
with subsecond precision for serde.
<ul>
<li><code>time::serde::timestamp::milliseconds</code></li>
<li><code>time::serde::timestamp::microseconds</code></li>
<li><code>time::serde::timestamp::nanoseconds</code></li>
</ul>
</li>
</ul>
<h3>Changed</h3>
<ul>
<li><code>Duration::time_fn</code> is deprecated.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ff3255fbf0"><code>ff3255f</code></a>
v0.3.32 release</li>
<li><a
href="d3dd5c9542"><code>d3dd5c9</code></a>
Deprecate <code>Duration::time_fn</code></li>
<li><a
href="8a0dc706be"><code>8a0dc70</code></a>
Remove markdown files in favor of org-wide config</li>
<li><a
href="980878b1d1"><code>980878b</code></a>
Build docs using org-wide workflow, change audit</li>
<li><a
href="4baf6b3cdd"><code>4baf6b3</code></a>
Remove documentation of deprecated feature flag</li>
<li><a
href="be932d86ca"><code>be932d8</code></a>
Adds support to serialize and deserialize timestamps with different
resolutio...</li>
<li><a
href="bb397df38e"><code>bb397df</code></a>
Commit Cargo.lock</li>
<li><a
href="26b7c5f6bd"><code>26b7c5f</code></a>
Update alignment for <code>Parsed</code> in miri</li>
<li><a
href="6747ebe5f9"><code>6747ebe</code></a>
Update CI</li>
<li><a
href="589ff6be84"><code>589ff6b</code></a>
Update copyright year</li>
<li>Additional commits viewable in <a
href="https://github.com/time-rs/time/compare/v0.3.31...v0.3.32">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=time&package-manager=cargo&previous-version=0.3.31&new-version=0.3.32)](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 <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>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-02 06:28:22 +00:00
Jamil
63ea5a31a1 fix(android): Allow bypassing AlwaysOn VPN (#3522)
When AlwaysOnVPN is enabled, it's [possible for apps to be
blocked](https://developer.android.com/develop/connectivity/vpn#bypass_vpn)
because their traffic gets full-routed through connlib, while we expect
to only selectively add routes.

This PR fixes things so that AlwaysOn behaves like normal VPN mode.

Fixes
https://firezonehq.slack.com/archives/C06F51698RK/p1706816373989109?thread_ts=1706813494.509349&cid=C06F51698RK
2024-02-02 06:27:05 +00:00
Andrew Dryga
a5bd96901a feat(portal): Sync transitive memberships for Google Workspace (#3524)
Simple flag flattens groups for us, the response goes from this:
```
{
  "kind": "admin#directory#members",
  "etag": "\"WAJlQ2CAtCOLo0U_9sYFBfdkZrUK9X-qYRarohkyMdU/imfnHDtNRUYTX-TXo9Wx-Vkties\"",
  "members": [
    {
      "kind": "admin#directory#member",
      "etag": "\"WAJlQ2CAtCOLo0U_9sYFBfdkZrUK9X-qYRarohkyMdU/MPY45KYgoPIU6Hg4EKDnN37iS_0\"",
      "id": "XXXXXXX",
      "email": "XXXXXXXX@firezone.dev",
      "role": "MEMBER",
      "type": "GROUP",
      "status": "ACTIVE"
    },
    {
      "kind": "admin#directory#member",
      "etag": "\"WAJlQ2CAtCOLo0U_9sYFBfdkZrUK9X-qYRarohkyMdU/OMG8U2W2iFiQQxRb_og9WlQgmFc\"",
      "id": "XXXXXXX",
      "email": "XXXXXXXX@firezone.dev",
      "role": "MEMBER",
      "type": "GROUP",
      "status": "ACTIVE"
    }
  ]
}
```
to this:
```
{
  "kind": "admin#directory#members",
  "etag": "\"WAJlQ2CAtCOLo0U_9sYFBfdkZrUK9X-qYRarohkyMdU/c7FOY_1zR63uMaLyM2_y9Y86cTA\"",
  "members": [
    {
      "kind": "admin#directory#member",
      "etag": "\"WAJlQ2CAtCOLo0U_9sYFBfdkZrUK9X-qYRarohkyMdU/ensFY6DvZ10v87OlK6VjWqBWlb0\"",
      "id": "XXXXXXX",
      "email": "XXXXXXXX@firezone.dev",
      "role": "MEMBER",
      "type": "USER",
      "status": "ACTIVE"
    },
    {
      "kind": "admin#directory#member",
      "etag": "\"WAJlQ2CAtCOLo0U_9sYFBfdkZrUK9X-qYRarohkyMdU/0zfy-53NUSeG8H9ZByTOVM29Djs\"",
      "id": "XXXXXXX",
      "email": "XXXXXXXX@firezone.dev",
      "role": "MEMBER",
      "type": "USER",
      "status": "ACTIVE"
    },
    {
      "kind": "admin#directory#member",
      "etag": "\"WAJlQ2CAtCOLo0U_9sYFBfdkZrUK9X-qYRarohkyMdU/nJga9tGb4YjfHKeVSwV2a3PYu4Y\"",
      "id": "XXXXXXX",
      "email": "XXXXXXXX@firezone.dev",
      "role": "MEMBER",
      "type": "USER",
      "status": "ACTIVE"
    },
    {
      "kind": "admin#directory#member",
      "etag": "\"WAJlQ2CAtCOLo0U_9sYFBfdkZrUK9X-qYRarohkyMdU/YUAlMAD1lcOVfs56U-8lm6G4Lr8\"",
      "id": "XXXXXXX",
      "email": "XXXXXXXX@firezone.dev",
      "role": "MEMBER",
      "type": "USER",
      "status": "ACTIVE"
    },
    {
      "kind": "admin#directory#member",
      "etag": "\"WAJlQ2CAtCOLo0U_9sYFBfdkZrUK9X-qYRarohkyMdU/2nmJRU48HjxV9CC85ZKJ2kq80Ow\"",
      "id": "XXXXXXX",
      "email": "XXXXXXXX@firezone.dev",
      "role": "MEMBER",
      "type": "USER",
      "status": "ACTIVE"
    },
    {
      "kind": "admin#directory#member",
      "etag": "\"WAJlQ2CAtCOLo0U_9sYFBfdkZrUK9X-qYRarohkyMdU/aTk1AuuEGTZFbVzVvbC7438M65Y\"",
      "id": "XXXXXXX",
      "email": "XXXXXXXX@firezone.dev",
      "role": "MEMBER",
      "type": "GROUP",
      "status": "ACTIVE"
    },
    {
      "kind": "admin#directory#member",
      "etag": "\"WAJlQ2CAtCOLo0U_9sYFBfdkZrUK9X-qYRarohkyMdU/4nBIP5jw6Kxn54pjS1tjrQHtuNA\"",
      "id": "XXXXXXX",
      "email": "XXXXXXXX@firezone.dev",
      "role": "MEMBER",
      "type": "USER",
      "status": "ACTIVE"
    },
    {
      "kind": "admin#directory#member",
      "etag": "\"WAJlQ2CAtCOLo0U_9sYFBfdkZrUK9X-qYRarohkyMdU/luCHBeG7WcB54TUHTLr2Xy7he8s\"",
      "id": "XXXXXXX",
      "email": "XXXXXXXX@firezone.dev",
      "role": "MEMBER",
      "type": "GROUP",
      "status": "ACTIVE"
    }
  ]
}
```
and we already ignore groups in the response so no other changes are
needed.
2024-02-02 06:26:29 +00:00
Andrew Dryga
d406f603f4 Fix bug with restoring deleted identities and actors (#3523) 2024-02-01 22:11:16 +00:00
Reactor Scram
4104d679cd refactor(windows): Add context to errors, add SAFETY comments, update TODOs (#3517)
The only semantic changes are:
- Add context to Windows errors
- Refactor some `bail!`'s that could be `context`'s

The rest is updating comments:
- Add `SAFETY: TODO` for unmarked unsafe blocks
- Elaborate on existing SAFETY comments 
- Close completed TODOs
- Link in Github issues for open TODOs
- Mark invariants or inter-dependencies between files that aren't
captured by tests or types yet

---------

Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
2024-02-01 21:09:32 +00:00
dependabot[bot]
91dfa04c1f build(deps): Bump @types/mdx from 2.0.10 to 2.0.11 in /website (#3489)
Bumps
[@types/mdx](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/mdx)
from 2.0.10 to 2.0.11.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/mdx">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/mdx&package-manager=npm_and_yarn&previous-version=2.0.10&new-version=2.0.11)](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-02-01 20:43:45 +00:00