mirror of
https://github.com/netbirdio/netbird.git
synced 2026-09-11 09:19:09 +02:00
## Describe your changes In unattended installs/updates there may be no logged-in user, so there's no context to start the GUI (nor anyone to see it). The bug is the GUI being started in the wrong user context / inheriting the wrong `$HOME` (OS mechanics aside). Today the GUI is started by a per-user LaunchAgent, i.e. on behalf of the user who logs in — no login ⇒ no GUI. The patch aligns to this: it launches the GUI on behalf of the logged-in console user if one exists, otherwise it delegates the launch to the per-user LaunchAgent at next login. Additionally it logs when default UI settings are applied. Note (small caveat): the LaunchAgent auto-starts the GUI at login only once it's been registered — which happens on the first GUI launch in the user's context. On an MDM/unattended fresh install done with no user logged in (where the user has never run the GUI before), they may need to start it manually once; it self-registers from then on. ## Issue ticket number and link No public issue — reported internally (community report on Slack: macOS advanced-view + onboarding reset on every update, esp. via MDM/Munki). Buggy line on main: https://github.com/netbirdio/netbird/blob/dd2bdc0de3aa14dd14dc90611c69c420bb3d3eb2/release_files/darwin_pkg/postinstall#L33 ## Stack <!-- branch-stack --> ### Checklist - [x] Is it a bug fix - [ ] Is a typo/documentation fix - [ ] Is a feature enhancement - [ ] It is a refactor - [ ] Created tests that fail without the change (if possible) > By submitting this pull request, you confirm that you have read and agree to the terms of the [Contributor License Agreement](https://github.com/netbirdio/netbird/blob/main/CONTRIBUTOR_LICENSE_AGREEMENT.md). ## Documentation Select exactly one: - [ ] I added/updated documentation for this change - [x] Documentation is **not needed** for this change (explain why) Internal macOS installer / GUI-launch behavior. No public API, CLI, or configuration change: the fix only changes the user context the desktop GUI is launched in after a pkg install/update. ### Docs PR URL (required if "docs added" is checked) Paste the PR link from https://github.com/netbirdio/docs here: N/A <!-- codesmith:footer --> --- <a href="https://app.blacksmith.sh/netbirdio/codesmith/netbird/pr/6962"><picture><source media="(prefers-color-scheme: dark)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg"><source media="(prefers-color-scheme: light)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-light-v2.svg"><img alt="View with [code]smith" src="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg"></picture></a> <a href="https://backend.blacksmith.sh/track/enable-autofix?expires=1787923973&installation_model_id=427504&pr_number=6962&repository=netbirdio%2Fnetbird&return_to=https%3A%2F%2Fgithub.com%2Fnetbirdio%2Fnetbird%2Fpull%2F6962&signature=5226bbc7986fc60eb8b4ab77e98ac17a6534864763fc6407048bcbbb1550394b"><picture><source media="(prefers-color-scheme: dark)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-light.svg"><img alt="Autofix with [code]smith" src="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"></picture></a> <sup>Need help on this PR? Tag <code>@codesmith-bot</code> with what you need. Autofix is disabled.</sup> <!-- codesmith:autofix:disabled --> <!-- /codesmith:footer --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **Bug Fixes** - Improved macOS installation and updater UI launching to occur only when an active, valid GUI console session is detected. - Prevented UI launches during unattended/system, root, or login-window-related installs. - Ensured the app is launched in the correct console-user context, and skips cleanly when username/UID resolution fails. - **Improvements** - Added clearer informational logging when the UI preferences file is not found and default preferences are used. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
55 lines
1.6 KiB
Bash
Executable File
55 lines
1.6 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -x
|
|
|
|
APP=/Applications/NetBird.app
|
|
AGENT=/usr/local/bin/netbird
|
|
LOG_FILE=/var/log/netbird/client_post_install.log
|
|
|
|
mkdir -p /var/log/netbird/
|
|
mkdir -p /usr/local/bin/
|
|
|
|
{
|
|
echo "Installing NetBird..."
|
|
|
|
if test -d $APP; then
|
|
echo "NetBird app copied successfully."
|
|
else
|
|
echo "NetBird app could not be copied to the Applications folder."
|
|
exit 1
|
|
fi
|
|
|
|
ln -fs $APP/Contents/MacOS/netbird $AGENT
|
|
if test -f $AGENT; then
|
|
echo "NetBird binary linked successfully."
|
|
else
|
|
echo "NetBird could not create symlink to /usr/local/bin"
|
|
exit 1
|
|
fi
|
|
|
|
$AGENT service install || true
|
|
$AGENT service start || true
|
|
|
|
console_user=$(stat -f%Su /dev/console 2>/dev/null)
|
|
case "$console_user" in
|
|
""|root|loginwindow|_mbsetupuser)
|
|
echo "No active GUI user session (console user: '${console_user:-none}'); skipping UI launch."
|
|
;;
|
|
*)
|
|
uid=$(id -u "$console_user" 2>/dev/null)
|
|
if [ -z "$uid" ]; then
|
|
echo "Could not resolve uid for console user '$console_user'; skipping UI launch."
|
|
else
|
|
echo "Launching NetBird UI as console user $console_user (uid $uid)."
|
|
if ! launchctl asuser "$uid" sudo -u "$console_user" -H open "$APP"; then
|
|
echo "Failed to launch NetBird UI; if autostart is enabled it will start at next login."
|
|
fi
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
echo "Finished Netbird installation successfully"
|
|
exit 0 # all good
|
|
} &> $LOG_FILE
|
|
|