mirror of
https://github.com/netbirdio/netbird.git
synced 2026-09-29 18:19:07 +02:00
Address CodeRabbit review on the pkg postinstall: resolve and validate the console user's uid and home dir before launching, skip visibly instead of masking with `|| true`, and set HOME to the resolved home so the GUI reads the user's real ui-preferences.json.
60 lines
1.9 KiB
Bash
Executable File
60 lines
1.9 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
|
|
|
|
# Launch the GUI as the logged-in console user, NOT as the installer's
|
|
# (root) context. When there is no active GUI session
|
|
# (unattended MDM install, login window), there is nobody to launch as, skip it;
|
|
|
|
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)
|
|
home_dir=$(dscl . -read "/Users/$console_user" NFSHomeDirectory 2>/dev/null | awk '{print $2}')
|
|
if [ -z "$uid" ] || [ -z "$home_dir" ]; then
|
|
echo "Could not resolve uid/home for console user '$console_user' (uid='$uid', home='$home_dir'); skipping UI launch."
|
|
else
|
|
echo "Launching NetBird UI as console user $console_user (uid $uid, home $home_dir)."
|
|
if ! HOME="$home_dir" launchctl asuser "$uid" open "$APP"; then
|
|
echo "Failed to launch NetBird UI; it will start at next login via the per-user LaunchAgent."
|
|
fi
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
echo "Finished Netbird installation successfully"
|
|
exit 0 # all good
|
|
} &> $LOG_FILE
|
|
|