Commit Graph

3136 Commits

Author SHA1 Message Date
Reactor Scram
d25bbf5582 fix(windows): give the encrypted credential a unique name (#2972)
I found out `keyring-rs` wasn't doing "firezone/token" internally, so
our credential was just "token", which is too generic. I changed it to
use our domain so it's "dev.firezone.client/token".
2023-12-20 22:55:03 +00:00
Reactor Scram
6ebbe746e8 feat(windows): count log files (#2964)
There's a 200 ms delay between each file, for debugging. It's nice to
demo how it thinks, but it needs to go behind a fault injection flag or
be removed completely before merging.


![image](https://github.com/firezone/firezone/assets/13400041/af364170-0e76-45fa-83f2-521b3de679de)
2023-12-20 22:38:37 +00:00
Reactor Scram
386a2010cc ci(windows): fix build-push-windows-release-artifacts (#2973) 2023-12-20 22:21:57 +00:00
Reactor Scram
f4ffebda75 fix(windows): make sure the worker thread for wintun shuts down cleanly (#2971)
This thread will go away when I change it to non-blocking, but for now
it was causing multiple sign ins during the same run of the client app
to fail.
2023-12-20 20:17:55 +00:00
Reactor Scram
7e6f2621b4 feat(windows): Handle routes and DNS (#2889)
Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2023-12-20 19:44:53 +00:00
Jamil
2ee09349f3 docs(website): Clarify note on legacy support (#2968)
Also fixes links to docs from the landing page.
2023-12-20 18:06:13 +00:00
Roopesh Chander
baae3bd693 Apple: UI asking user to grant VPN permissions (#2959)
Expect this to fix #2850 and #2928.

When the app detects that there are no tunnels configured, it shows a UI
with a "Grant VPN Permission" button. On clicking that, the OS prompt
asking to allow VPN is shown.
2023-12-20 05:24:49 +00:00
Reactor Scram
f284e06014 refactor(windows): extract modules from gui module (#2961)
So everything in `gui` is controller logic.
2023-12-20 01:54:55 +00:00
Reactor Scram
61bff3b1ed fix(windows): copy default debug and release settings from Android (#2963)
and fix a couple other settings.
2023-12-20 01:43:58 +00:00
Reactor Scram
0beafbfb9e refactor(windows): fix up MSI installer package and try to build it in CI (#2938) 2023-12-20 01:42:03 +00:00
Reactor Scram
8951be1ad2 fix(windows): disconnect tunnel on sign-out (#2932) 2023-12-20 00:51:27 +00:00
Gabi
92c5e5f1de connlib: dont fail on ipv6 add route failure (#2962)
Fixes a bug where gateway failed to start if we couldn't add ipv6
routes.
2023-12-20 00:49:32 +00:00
Gabi
9b51094f73 connlib: prevent resource leak for non-handled record types (#2955)
Partially fixes #2920

As explained in
https://github.com/firezone/firezone/issues/2920#issuecomment-1861642550
in the future we should change the way we resolve DNS queries in the
gateway to properly handle HTTPS record types.

With this patch this is what happens to an HTTPS query while firezone is
running:


```
kdig -t HTTPS ifconfig.net
;; ->>HEADER<<- opcode: QUERY; status: NXDOMAIN; id: 15773
;; Flags: qr rd; QUERY: 1; ANSWER: 0; AUTHORITY: 0; ADDITIONAL: 0

;; QUESTION SECTION:
;; ifconfig.net.       		IN	HTTPS

;; Received 30 B
;; Time 2023-12-18 18:34:23 -03
;; From 100.100.111.1@53(UDP) in 0.6 ms
```
2023-12-20 00:05:39 +00:00
Gabi
1d595fd15c refactor(connlib): log more details about failed queries (#2934)
Signed-off-by: Gabi <gabrielalejandro7@gmail.com>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2023-12-19 21:56:52 +00:00
Andrew Dryga
b7e3a5b4cd Remove token timeouts filter for incidents 2023-12-19 15:45:17 -06:00
Gabi
73823ecba0 Fix/firezone id handling (#2958)
fixes #2651 

Wip because firezone portal doesn't handle names longer than 8
characters yet cc @AndrewDryga
2023-12-19 15:38:27 -06:00
Jamil
aabc06c3c1 Fix java method signature bug (#2950)
Fixes a bug introduced in the DNS stuff

Co-authored-by: Reactor Scram <ReactorScram@users.noreply.github.com>
2023-12-19 19:54:13 +00:00
Andrew Dryga
0133b507d2 Hotfix: ensure gateway name fits varchar(255) 2023-12-19 11:33:25 -06:00
Andrew Dryga
fa35658db6 Hotfix: increase gateway name length 2023-12-19 11:12:44 -06:00
Jamil
b28e99cdab chore(ci): Use 1.0.0 as version base (#2949)
Fixes #2948 

So it seems that it's easiest just to use an old-fashioned semver
string. This means we'll need to keep a version matrix in the docs of
which components are supported and for how long, but it's better than
having different version schemes for different Firezone components
altogether.
2023-12-19 14:19:16 +00:00
Reactor Scram
64f76f5edb feat(windows): Elevate with UAC automatically on startup (#2913)
Automatically write the wintun.dll file on startup and then detect
whether we need to elevate to admin privileges.

I check for privileges by making a test tunnel, so I did #2758 as part
of this, which bundles the DLL inside the exe, and then the exe deploys
it.

---------

Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2023-12-18 23:54:45 +00:00
Reactor Scram
a40d550bb0 refactor(windows): remove unused code, redundant platform checks (#2937)
Removes local_webserver module and many redundant stubs for Unix
2023-12-18 22:53:18 +00:00
Andrew Dryga
ded5feee9e Fix user-reported errors (#2954) 2023-12-18 16:15:49 -06:00
Reactor Scram
f19b8fc5de fix(windows): put the bundle version back in tauri.conf.json to fix CI (#2952)
PR #2949 will make this redundant and I'll remove it from
tauri.conf.json again
2023-12-18 13:17:48 -06:00
Reactor Scram
6b0149e58d ci(windows): remove hello-world and permissions-test projects (#2926)
Don't need them any more. `build-tauri` is about 5 minutes faster
without the permissions test, since it had to be a separate project /
workspace entirely and rebuilt a bunch of stuff. That's a reason I
prefer subcommands. For some reason sccache didn't seem to do much for
it. This is also a flaw in Tauri, I couldn't figure out any proper way
to keep a Tauri project inside the examples dir of another Tauri
project. With two non-Tauri apps it's easier and probably wouldn't add
much build time.
2023-12-17 17:12:50 +00:00
Reactor Scram
364d415b67 fix(windows): #2927 - Use Cargo.toml version instead of tauri.conf.json (#2936) 2023-12-17 17:12:25 +00:00
Jamil
0b8d12f547 Run publish workflow on release publish (#2912)
When a release draft is published, run this workflow so that customers
will be able to pull associated Docker images.

---------

Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
Co-authored-by: Andrew Dryga <andrew@dryga.com>
2023-12-16 07:54:26 -08:00
Roopesh Chander
0aa8d8da5a Apple: Handle comma in resource names (#2918)
Fixes #2836.

We use the comma as a separator when passing the resources from the
tunnel process to the app process, but previously used .urlHostAllowed
when percent-encoding, which means commas weren't percent-encoded. We
fix that by using .alphanumerics, which percent-encodes commas as well.
2023-12-16 01:41:59 +00:00
Jamil
bdbfa0dc5b Prevent DNS sentinel from being used as a fallback resolver (#2922)
Prevent the edge case where our DNS sentinel could be used as a fallback
resolver. I didn't observe this in the wild, but we should avoid it in
case.

---------

Co-authored-by: Gabi <gabrielalejandro7@gmail.com>
2023-12-16 01:24:07 +00:00
Jamil
0013a18586 Remove SMBios (#2921) 2023-12-16 01:17:15 +00:00
Jamil
c0904aa96f Update README.md
Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
2023-12-15 17:15:55 -08:00
Jamil
3773d5f79d Update README.md
Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
2023-12-15 17:15:11 -08:00
Jamil
9cf5df67c6 Set hasUnappliedChanges = true when setting Resources (#2935)
Reverts a bug I introduced in #2894 

Fixes #2920
2023-12-16 00:50:42 +00:00
Reactor Scram
8fcc99ae14 windows: fix deep links (#2903)
Stacked on PR #2888

This will fix #2878 by setting some Windows security permissions to let
non-admin clients connect to a named pipe server owned by an admin
process.

It should also give us a path to fix 2808 (If I link it, Github assumes
this PR closes that issue?), since it'll be our own code instead of
tauri-plugin-deep-link, and we can just choose not to panic. I'm using
Tokio's `named_pipe` module where that panic happens, and Tokio is good
about just returning Results instead of panicking.

---------

Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2023-12-15 19:17:55 +00:00
Gabi
1cc5164f4e connlib: decouple data and control plane and fix backoff reset (#2906)
This fixes #2503 
Also:
* decouples data-plane and control-plane on the gateway
* fixes a thing were a client would stop retrying connecting to a
resource if it failed too many times
* add all routes on start instead of on a per-route basis
2023-12-15 19:05:01 +00:00
bmanifold
97f851a5bd Add Mailgun DNS records for domain verification (#2908)
Adding DNS records needed for domain verification in Mailgun
2023-12-15 17:33:42 +00:00
bmanifold
751df8b3f3 Update styling for Sign In/Up emails (#2907)
Updated the styling for the outbound emails from the portal.

## Preview of the Sign Up Email
<img width="589" alt="sign_up_email"
src="https://github.com/firezone/firezone/assets/2646332/4fdc04de-bc49-4d31-b818-ec5eb546d4b8">

## Preview of the Sign In Email
<img width="592" alt="sign_in_email"
src="https://github.com/firezone/firezone/assets/2646332/c3a21424-0de2-404a-a8e2-f2ae926ddeaf">

This will close #2132
2023-12-15 17:04:13 +00:00
Jamil
922c25e063 Fix upgrade script link (#2923) 2023-12-15 08:06:58 -08:00
Jamil
54e2258264 Gateway upgrade docs (#2914)
Realized we need a small script to upgrade Docker-based gateways
reliably.
2023-12-14 21:20:30 -08:00
Jamil
de71e7060f Reduce webrtc log level to error (#2911) 2023-12-15 01:07:48 +00:00
Jamil
de0a0b911b Use more informative log filepath (#2910)
* Sort clients list by `last_seen_at` desc. This handles the `online?`
case too. Before, they were sorted by `asc` which made it hard to see
which recent clients were connected
* Scope the client log filename by account slug and actor name so it's
easier to find.
2023-12-14 19:45:50 +00:00
Jamil
0014172c0a Don't automatically delete log files after successful upload (#2904)
Prevents cases where "Export logs" doesn't contain the full log cache.

Fixes #2886
2023-12-14 19:31:40 +00:00
Jamil
b332780cc8 Use correct type for ioctl codes (#2905)
Fixes
https://github.com/firezone/firezone/actions/runs/7202636231/job/19621864921
2023-12-14 11:19:37 +00:00
Reactor Scram
aa46089dd1 windows: use settings log_filter instead of env var (#2888)
Stacked on PR #2883

There will be more changes after this PR, these features are still
broken:
- Can't change filter at runtime yet, you have to restart the client app
- connlib and GUI are sending logs to the same connlib logs files, they
should be separated

---------

Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2023-12-13 23:57:52 +00:00
Reactor Scram
d1a7211f64 windows: Integrate wintun, run the VPN (#2883)
With this one, ICMP and TCP work, but the client doesn't set up routes
or handle DNS yet, so I've been using `netsh` to fake that.

---------

Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2023-12-13 23:19:36 +00:00
Gabi
186ceb18e6 Connlib: reduce failover timeout (#2897)
This reduces the failover time by depending on webrtc's keepalive
instead of wireguard's.

We have much more control over that, since boringtun doesn't bubble up
any of the keepalives timeout(only a trace warning).

In the a next commit, when things are more stable, we should just get
rid of wireguard's keep alive. When we remove webrtc we will build our
own.

Events based on `keepalive` timeouts are key to our failover system, so
we **need** it.

Draft because it's built on top of #2891 (which is completely separate
code but without that the failover just doesn't work correctly)
2023-12-13 22:40:04 +00:00
Jamil
8499580388 Remove Apple SplitDNS in favor of unified split DNS approach (#2894)
<img width="1552" alt="Screenshot 2023-12-12 at 11 29 43 PM"
src="https://github.com/firezone/firezone/assets/167144/d517c830-64a8-462d-8cb5-c41835fa2059">

Found a reliable way to return default system DNS resolvers on iOS and
macOS. Even if this method is not perfect, I think it's still worth
pursuing because:

* Many administrators will set an upstream resolver in the portal anyway
(bypassing client system resolvers)
* It unifies our Split DNS approach across platforms (assuming we can
query the default system resolvers on Windows), allowing connlib to
intercept all DNS queries on all platforms. This opens the door for some
interesting feature possibilities in the area of malicious query
blocking. This also makes DNS bugs easier to investigate because there's
only one codepath for packets to take. See
https://github.com/firezone/firezone/issues/2859

Draft because it needs more testing and I need to figure out the
`RustVec<RustString>` type for the Swift -> Rust FFI.

Refs #2713
2023-12-13 22:01:00 +00:00
Andrew Dryga
82c013a1eb Replace eth+ with e+ in the unitfile 2023-12-13 15:19:31 -06:00
Jamil
410bd341fa Set the MTU to 1280 on Apple to avoid connectivity issues (#2901)
Unfortunately tunnelOverheadBytes isn't a reliable way to calculate the
MTU.

This could be the issue behind #2855
2023-12-13 21:00:48 +00:00
Andrew Dryga
af7730337c Fix service account tokens and unifile deployment scripts (#2900) 2023-12-13 14:45:59 -06:00