Commit Graph

465 Commits

Author SHA1 Message Date
Reactor Scram
b5a67cd2d7 fix(rust/gui-client): when the Client starts with a token but no Internet, wait for Internet and then connect (#6414)
Closes #6389 

I added a retry button since the network change detection is flaky
inside Parallels. On bare metal Windows it works fine.

---------

Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2024-08-27 20:14:08 +00:00
Jamil
2b030d801d feat(android): Bundle GITHUB_SHA into Android client (#6405)
Closes #6400 


<img width="659" alt="Screenshot 2024-08-21 at 11 24 16 PM"
src="https://github.com/user-attachments/assets/c1240406-4dda-41df-a36e-1ed9e9b0895a">
2024-08-27 05:17:22 +00:00
Jamil
1a2e10c45e revert(website): Re-add deployment feature section (#6447)
Reverts part of #6337 to add back the Deploy anywhere section.
2024-08-26 15:27:05 -07:00
Patti
cd6eabe71c fix(website): Fix graphics and adjust elevator image size (#6391)
Fix conditions graphic and adjust elevator image size

---------

Signed-off-by: Patti <139997703+Patticatti@users.noreply.github.com>
Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2024-08-26 21:04:59 +00:00
Reactor Scram
482ded889e fix(rust/gui-client): throw error when failing to connect to Firezone (#6409)
Refs #6389 

```[tasklist]
- [x] Update changelog
- [x] Update manual test cases
```

This changes the behavior from "fail silently" to "fail loudly" so at
least the user knows something is wrong and they can restart Firezone
after they gain Internet.

<img width="439" alt="image"
src="https://github.com/user-attachments/assets/d5bbac66-9a5f-40a6-8b4c-71d8ab8abd6d">

<img width="554" alt="image"
src="https://github.com/user-attachments/assets/bcee1f87-bd29-4a44-b41f-a01217e3248e">
2024-08-23 15:37:57 +00:00
Jamil
2e54ae19c9 ci: Release Apple 1.2.1 (#6426)
Get the packet routing fix out.
2024-08-22 23:23:33 -07:00
Gabi
7345cc20a2 fix(connlib): only emit route changes from disabled_resource if routes actually changed (#6424)
Right now, whenever a connection is established we update the site
status.

In order to do that, we call `on_update_resources`, when
`on_update_resources` is called this in turn calls
`set_disabled_resources`, since we apply from the application side the
"disabled" given the current resources.

`set_disabled_resources` currently, always call `on_update_routes`,
which causes connectivity issues on Android and MacOS, since the packets
aren't correctly routed when the routes are changed.

To fix this we make `set_disabled_resources` only emit the routes when
they have actually changed.

Fixes: #6387.

---------

Signed-off-by: Gabi <gabrielalejandro7@gmail.com>
Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
2024-08-23 04:01:18 +00:00
Jamil
0994bd145a feat(apple): Build GITHUB_SHA into Apple clients (#6406)
Closes #6401 

<img width="1012" alt="Screenshot 2024-08-21 at 11 52 31 PM"
src="https://github.com/user-attachments/assets/3012d088-97cb-4a82-8a8f-b2a398865755">

![Screenshot 2024-08-22 at 12 05
44 AM](https://github.com/user-attachments/assets/5e1209f9-e8fa-4453-9bdd-9f40339649b4)
2024-08-22 20:49:57 +00:00
Jamil
4ec78f70c2 docs: Uncomment new wildcard spec for DNS Resources (#6408)
This is being deployed now.
2024-08-22 10:38:13 -07:00
Jamil
43ff8fdc4b docs: Gateway 1.2.0 changelog (#6411)
Forgot to uncomment this yesterday when deploying.
2024-08-22 09:49:21 -07:00
Jamil
17c48c8b05 fix(ux/portal): Clarify note about IPv4/6 upstreams (#6407)
Closes #5115 

<img width="1155" alt="Screenshot 2024-08-22 at 1 10 56 AM"
src="https://github.com/user-attachments/assets/3138e055-28c5-47cc-a9db-9f78d36e0d40">
2024-08-22 16:18:28 +00:00
Jamil
c8eed59387 ci: Release 1.2.0 (#6395)
Releasing 1.2.0 to unblock portal deploy! Some of these have already
been published.
2024-08-22 00:18:27 +00:00
Reactor Scram
7593dba7fb feat(client/ios): favorites menu (#6298)
![Screenshot 2024-08-14 at 16 08
14](https://github.com/user-attachments/assets/7d962b32-ee39-42d8-af4a-5f1287bb4b58)
![Screenshot 2024-08-14 at 16 36
10](https://github.com/user-attachments/assets/95876d86-1eb7-4e7f-87ca-6dbd610adddd)

---------

Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2024-08-20 17:57:57 +00:00
Patti
027fe678cb fix(website): Animate sliding customer logos, fix action link styling (#6309)
Signed-off-by: Patti <139997703+Patticatti@users.noreply.github.com>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2024-08-20 17:04:16 +00:00
Jamil
3947ad562b feat(website): Add FeatureSection component (#6337)
- Add two feature sections
- Remove obsolete feature sections
- Reorganize order of sections to match design
2024-08-20 07:33:38 -07:00
Jamil
1ae3b74cba fix(website): Fix uptime SLA (#6364)
Matches our CSA.
2024-08-19 21:58:24 -07:00
Jamil
ec3ab2d85c fix(website): max w 1/2 for elevator graphic (#6354) 2024-08-19 20:41:13 -07:00
Reactor Scram
332f827cf7 fix(gui-client): reload IPC service log filter when the settings change (#6351)
Closes #6302

Tested with CI-built MSI on x86_64 Windows, and with dev-built
`run-debug` on aarch Linux.
2024-08-19 23:04:59 +00:00
Jamil
19316938c0 fix(website): Use new elevator graphic and remove borders from color-buggy ActionLinks (#6336)
- Consistent link/button font size on landing
- Use new elevator graphic and remove redundant HTML/CSS
- Removes underline on some ActionLinks because the color is not applied
correctly (Tailwind bug?)
2024-08-18 21:09:30 -07:00
Jamil
5c0402fea1 chore(website): Remove react-mixpanel-browser (#6326)
This library wasn't being actively maintained which caused a
compatibility issue with newer versions of the `mixpanel-browser`
library.

This PR also updates other dependencies via `pnpm update`.
2024-08-18 19:46:00 -07:00
Jamil
9a6f809c3e fix(website): translate-y to offset border-b-2 (#6328)
Adding a bottom border causes the element to shift up ever so slightly,
so we offset that by moving it back down every so slightly.
2024-08-18 17:54:24 -07:00
Jamil
f82fee1624 chore(website): Add back @patticatti's dark scroll bars (#6327)
Adds custom scroll bar styling for dark sections. Use by adding the
`dark-scroll` class to overflow containers.
2024-08-17 03:33:09 +00:00
Reactor Scram
7b73eeae36 feat(client/macOS): Favorite Resources menu (#6186)
```[tasklist]
- [x] Update changelog
- [x] Hook into reset button
```

---------

Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
2024-08-16 20:21:48 +00:00
Patti
127492f613 fix(website): Fix headings in elevator and feature cards (#6311)
Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2024-08-16 09:17:22 -07:00
Patti
eb85a9f72a refactor(website): Restyle customer testimonials (#6318)
Co-authored-by: Jamil Bou Kheir <jamilbk@users.noreply.github.com>
2024-08-16 07:25:46 -07:00
Reactor Scram
4ddec81f28 fix(gui-client/windows): allow GUI to run as admin again (#6308)
Closes #6305 too

I couldn't find the ticket for this so I'm not sure which customers are
affected.

---------

Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
2024-08-15 22:36:18 +00:00
Patti
b2b663aba4 feat(website): Create customer testimonials section, add scrollbar styling (#6252)
Co-authored-by: Jamil Bou Kheir <jamilbk@users.noreply.github.com>
2024-08-14 22:29:18 -07:00
Thomas Eizinger
7c70850217 feat(connlib): allow glob patterns for matching domain names (#5901)
Currently, `connlib` can only handle "simple" DNS wildcards where `*`
matches any number of subdomains, including zero and `?` matches a
single subdomain.

With this PR, we expand `connlib'`s capabilities to allow for a much
more complex matching of domains that more closely resembles glob
patterns:

- `**` matches any number of subdomains. This supersedes the previous
`*` operator.
- `*` matches a single subdomain. This supersedes the previous `?`
operator.
- `?` matches a single character. This wasn't possible before.
- Additionally, any of these can be combined. Previously, only `*` or
`?` was allowed and they were only accepted at the front of the domain
name pattern.

Resolves: #5056.

---------

Signed-off-by: Thomas Eizinger <thomas@eizinger.io>
2024-08-15 01:30:53 +00:00
Jamil
b1b9b552c2 fix(portal): Clarify how synced users count against billing (#6285)
Fixes #6155 

One question we get with almost each new customer is "if I enable sync,
won't that count towards my bill?". This PR aims to answer that question
right when they create the provider.

I will also make sure to update Enterprise accounts in Stripe with
`monthly_active_users_acount` so that they can view this metric on the
Billing page.

---------

Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
2024-08-14 19:04:25 +00:00
Reactor Scram
79c9811a59 fix(gui-client/windows): delete IPC service logs when user clicks "clear logs" (#6280)
Closes #5453 

Tested once on the Windows aarch64 VM. Should always leave 4 files
behind, a `.log` and a `.jsonl` for the GUI and for the IPC service. The
"log directory" is a bit of a lie since it's consistently 2 directories
on both platforms now.

```[tasklist]
- [x] Update changelog
- [x] Make a note to remove the known issue from the website when the next release is cut after this PR merges
```
2024-08-14 15:08:31 +00:00
Jamil
296ca4ad4d ci: Bump Clients and Gateways to fix NAT / allocation issues (#6287)
Bump all Clients and Gateways due to #6265 being fixed.

---------

Co-authored-by: Not Applicable <ReactorScram@users.noreply.github.com>
2024-08-13 21:58:12 +00:00
Thomas Eizinger
6e86a4dcba fix(snownet,relay): re-use channels to peers in cooldown period (#6276)
For efficiency reasons, TURN's data channels don't have any
authentication or integrity metadata. Instead, the operate using a short
2-byte channel number to identify the target peer of the data.

To avoid abuse, channel bindings are at most valid for 10 minutes before
they need to be refreshed. In case they expire, there is a 5 minute
cooldown period, before the same channel number can be bound to a
different peer and before the same peer can be bound to a different
channel.

We had a similar issue in the past (#5613) where channels got rebound
early. Whilst that was fixed and is no longer happening, a case that we
didn't consider is what happens if we want to bind a channel to a peer
that still has a channel bound but is currently cooling down (i.e. in
the 5 minute period after its expiry).

In that case, `snownet` would wrongly assume that there is no channel to
this peer and try to bind a new one. That would get rejected by the
relay with a bad request.

To fix this, we simply need to check whether we still have a channel to
this peer and if yes, return the same channel number. On the relay, we
need to ensure that we consider a channel as `bound` again when it is
being refreshed.

We ensure that this doesn't regress in two ways:

- We add a unit-test for the `ChannelBindings` struct
- We modify the `Idle` transition to idle for 6 instead of 5 minutes.
This ensures that a combination of 2 idle transitions puts the channel
bindings into the 10-15 minute time window where rebinding the peer to a
different channel fails.

Related: #6265.
2024-08-13 17:01:13 +00:00
Jamil
5055c2e47e fix(website): Fix footer responsiveness and increase fontsizes (#6282)
fixes #6144
2024-08-13 09:59:21 -07:00
Reactor Scram
aa9a815784 fix(gui-client): don't delete the log file we're currently writing to (#6226)
Closes #4764 

```[tasklist]
- [x] Update changelog draft
- [x] Manual test Linux
```
2024-08-12 19:27:57 +00:00
Jamil
7fed443b74 fix(website): Fix FeatureCards responsiveness (#6266)
Setting `max-w-` on the containing element instead of static `w-` on the
items within is preferred. Fixes this issue:

<img width="479" alt="Screenshot 2024-08-12 at 9 35 34 AM"
src="https://github.com/user-attachments/assets/68aa3844-74c1-4256-883d-a3168313c85b">
2024-08-12 11:17:58 -07:00
Jamil
c16d59f07f fix(website): Remove animations from SVGs (#6264) 2024-08-12 08:13:08 -07:00
Jamil
4e7a0560e3 chore(website): Bump deps (#6255)
Hoping to rule out deps bug for an intermittent mobile browser website
redirect issue.
2024-08-11 20:22:46 -07:00
Patti
376dc61880 feat(website): New landing page (#6178)
Signed-off-by: Patti <139997703+Patticatti@users.noreply.github.com>
Co-authored-by: Jamil Bou Kheir <jamilbk@users.noreply.github.com>
2024-08-12 02:41:37 +00:00
Jamil
e7f8a4e4bf ci: bump apple / android versions (#6251)
These were approved and published so the versions need bumping.
2024-08-10 13:04:26 -07:00
Andrew Dryga
00b93f6b82 feat(portal): Wildcard dns with backwards compatibility (#6214)
If a new resource is created that will use format not supported by
previous client versions we temporarily show a warning:
<img width="683" alt="Screenshot 2024-08-07 at 2 28 57 PM"
src="https://github.com/user-attachments/assets/bbfdfc96-0c4b-4226-93c5-bc2b5fdb9d30">

It will also be excluded from `resources` list for older clients (below
1.2).

---------

Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
2024-08-10 18:25:24 +00:00
Thomas Eizinger
78bb2ac73d chore: add changelog entries for #6181 (#6236)
Add either new changelog entries for next version or modify existing
changelog entries to point out #6181.
2024-08-09 22:26:03 +00:00
Thomas Eizinger
47a447c65a chore: prepare hotfix release for Tauri & headless clients (#6235) 2024-08-09 08:28:25 +00:00
Thomas Eizinger
4ae64f0257 fix(connlib): index forwarded DNS queries by ID + socket (#6233)
When forwarding DNS queries, we need to remember the original source
socket in order to send the response back. Previously, this mapping was
indexed by the DNS query ID. As it turns out, at least Windows doesn't
have a global DNS query ID counter and may reuse them across different
DNS servers. If that happens and two of these queries overlap, then we
match the wrong responses together.

In the best case, this produces bad DNS results on the client. In the
worst case, those queries were for DNS servers with different IP
versions in which case we triggered a panic in connlib further down the
stack where we created the IP packet for the response.

To fix this, we first and foremost remove the explicit `panic!` from the
`make::` functions in `ip-packet`. Originally, these functions were only
used in tests but we started to use them in production code too and
unfortunately forgot about this panic. By introducing a `Result`, all
call-sites are made aware that this can fail.

Second, we fix the actual indexing into the data structure for forwarded
DNS queries to also include the DNS server's socket. This ensures we
don't treat the DNS query IDs as globally unique.

Third, we replace the panicking path in
`try_handle_forwarded_dns_response` with a log statement, meaning if the
above assumption turns out wrong for some reason, we still don't panic
and simply don't handle the packet.
2024-08-09 07:01:57 +00:00
Jamil
67ae8ff380 ci: publish Gateway 1.1.4 (#6228)
Publishes the `ENABLE_MASQUERADE` removal.
2024-08-09 03:45:26 +00:00
Jamil
096ddfe7c5 ci: bump gui/headless to 1.1.10 (#6221)
To publish the mpsc channel fix.

---------

Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
Co-authored-by: Reactor Scram <ReactorScram@users.noreply.github.com>
2024-08-08 16:20:20 +00:00
Reactor Scram
d44c50d609 docs(changelog): fix Gateway release being incorrect (#6222) 2024-08-08 15:59:58 +00:00
Thomas Eizinger
94527f9fa1 fix(gateway): always masquerade for docker-deployed gateways (#6169)
Without masquerading, packets sent by the gateway through the TUN
interface use the wrong source address (the TUN device's address)
instead of the gateway's actual network interface.

We set this env variable in all our uses of the gateway, thus we might
as well remove it and always perform unconditionally.

---------

Signed-off-by: Thomas Eizinger <thomas@eizinger.io>
Co-authored-by: Reactor Scram <ReactorScram@users.noreply.github.com>
2024-08-07 03:00:50 +00:00
Reactor Scram
5b75e8714a feat(client/tauri): allow users to favorite specific Resources and hide the rest (#5923)
Refs #5123

Looking at a Resource when nothing is favorited
<img width="504" alt="image"
src="https://github.com/user-attachments/assets/4c3bc1da-4645-40c1-84a4-3e3425a0fea3">

Looking at a favorited Resource
<img width="515" alt="image"
src="https://github.com/user-attachments/assets/22140f81-5453-41fd-9071-9c999b3151b1">

Looking at a non-favorited Resource
<img width="497" alt="image"
src="https://github.com/user-attachments/assets/84deddb1-8a05-4b78-9dfa-a8a60ca86831">


```[tasklist]
- [x] Double-check that the Resources are sorted alphabetically (or whatever) and leave a comment where they're sorted
- [x] String changes
- [x] Move "Add" and "Remove" down to a different section
- [x] Fix empty favorites menu
- [ ] Wait for other Clients to sync
- [ ] Merge
```

---------

Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
2024-08-06 22:36:52 +00:00
Reactor Scram
861ca1861d feat(client/kotlin): add Favorite Resources menu (#6107)
It's missing a couple pieces, see the tasklist


![image](https://github.com/user-attachments/assets/370e13fc-c0cd-4444-9539-0c7d90f3ba05)

Refs #5123

```[tasklist]
- [x] Add `Add to Favorites` and `Remove from Favorites` buttons
- [x] Update Changelog
- [x] Load and save Favorites from `SharedPreferences`
- [x] Wire up `onClick` events
- [x] Hide and show Resources in the menu based on whether they're favorited
- [x] Hide tabs if nothing is favorited
- [x] Tab icons
- [ ] Make the "Reset Settings" button also reset Favorites
- [ ] Change the "Add to Favorites" and "Remove from Favorites" to a checkbox or star or something cool
```
2024-08-06 22:17:09 +00:00
Reactor Scram
5eb2bba47b feat(headless-client): use systemd-resolved DNS control by default (#6163)
Closes #5063, supersedes #5850 

Other refactors and changes made as part of this:

- Adds the ability to disable DNS control on Windows
- Removes the spooky-action-at-a-distance `from_env` functions that used
to be buried in `tunnel`
- `FIREZONE_DNS_CONTROL` is now a regular `clap` argument again

---------

Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
2024-08-06 18:16:51 +00:00