Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run Windows GUI and tunnel in separate processes #3712

Closed
4 of 6 tasks
jamilbk opened this issue Feb 21, 2024 · 2 comments · Fixed by #4978
Closed
4 of 6 tasks

Run Windows GUI and tunnel in separate processes #3712

jamilbk opened this issue Feb 21, 2024 · 2 comments · Fixed by #4978
Assignees
Labels
area/windows_client Issues related to the Windows client complexity/hard Multi-day effort or more. kind/feedback Issue created as a direct result of customer feedback

Comments

@jamilbk
Copy link
Member

jamilbk commented Feb 21, 2024

Similar architecture to the other non-Rust clients.

Pros:

  • enables seamless headless mode
  • crash in GUI won't take down tunnel
  • Bugs in Tauri won't affect tunnel process

Cons:

  • software complexity

Tasks

@jamilbk jamilbk added area/windows_client Issues related to the Windows client complexity/hard Multi-day effort or more. labels Feb 21, 2024
@ReactorScram
Copy link
Collaborator

For before beta or after beta?

@jamilbk jamilbk added this to the 1.0 GA milestone Feb 21, 2024
@jamilbk
Copy link
Member Author

jamilbk commented Feb 21, 2024

Sorry, meant to mark it for GA

@jamilbk jamilbk added the kind/feedback Issue created as a direct result of customer feedback label Mar 5, 2024
@jamilbk jamilbk removed this from the 1.0 GA milestone Mar 25, 2024
github-merge-queue bot pushed a commit that referenced this issue Apr 2, 2024
…IPC (#4460)

Refs #3712 and #3713 (Linux and Windows tunnel process separation /
splitting)

This doesn't change the functionality of the GUI Client, but it adds a
boundary where:
- Windows can keep connlib in-process, so it stays stable during the
early phases of GA when I don't want to be fighting bugs caused by a big
architecture change
- Linux can move connlib into the tunnel process, which is required
before the Linux GUI Client reaches it own GA milestone

So it all looks redundant, because it's scaffolding until later this
year when both Linux and Windows are split. After that, some of this can
be removed.
github-merge-queue bot pushed a commit that referenced this issue Apr 10, 2024
…` which is the same thing (#4516)

Unfortunately I had to keep `linux-client` to get the compatibility
tests to pass. #4578 aims to remove that package.

Please add to this list if you think of anything:

```[tasklist]
# Things that may break that CI/CD won't catch
- [ ] Github release artifacts
- [ ] Knowledge base 
- [ ] Docker images
- [ ] Docker containers
- [ ] Existing `linux-client` users
- [ ] Anything that downloads ghcr artifacts
- [ ] Nix (Not sure if it's built in CI. It had a merge conflict)
```

Refs #4515, and #3712, #3782

I think this is what Thomas and I agreed on in Slack / Github

---------

Signed-off-by: Reactor Scram <[email protected]>
Co-authored-by: Thomas Eizinger <[email protected]>
github-merge-queue bot pushed a commit that referenced this issue May 13, 2024
)

Closes #4899

This has a known gap where theoretically the GUI could sign in while the
service is hung in startup, and then the service would wipe out the
GUI's DNS rules.

The workaround for that would be to restart the GUI, but in practice I
think the gap will not be hit, and it will go away once #3712 is done
anyway.

I tested it manually once using the reproduction steps from #4899 and it
worked.
github-merge-queue bot pushed a commit that referenced this issue May 20, 2024
…4978)

Ready for review.

Closes #3712.
Supersedes #4940.
Refs #4963.

I haven't figured out if it needs any new automated tests (unit,
integration, etc.) but the code itself is ready for review. There is
more refactoring that could be done, or could be left for later.

```[tasklist]
- [x] Move wintun setup from GUI to IPC service / headless client
- [x] Make sure the device ID is in a sensible place
- [x] Export IPC service logs in the zips
- [x] Test GUI + SC IPC service on Windows (f4db808 passed)
- [x] Make sure IPC service does not busy-loop
- [x] Test un-install checklist for Windows
- [x] Test upgrade checklist for Windows
- [x] Test GUI + systemd IPC service on Linux (c4ab7e7 passed)
- [x] Test upgrade checklist for Linux
- [x] Test un-install checklist for Linux
- [x] Make sure the IPC service logs out and deactivates DNS control if the GUI crashes
- [x] Test network changing
- [x] (it's intended behavior) ~~Look into spurious `on_update_resources` (fad86ba)~~
- [x] ~~Test max partition time on offline laptop~~ (I ended up just setting a 30-day default in the code)
- [x] Make sure headless Client does not busy-loop
- [x] Test standalone headless on Linux
- [ ] Add unit / integration tests
- [ ] Think about security a bit #3971
```

---------

Signed-off-by: Reactor Scram <[email protected]>
Co-authored-by: Jamil <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/windows_client Issues related to the Windows client complexity/hard Multi-day effort or more. kind/feedback Issue created as a direct result of customer feedback
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants