mirror of
https://github.com/netbirdio/netbird.git
synced 2026-08-08 00:31:28 +02:00
Compare commits
5 Commits
add-atomic
...
add-manage
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6a21b8a58d | ||
|
|
6fec21132d | ||
|
|
2ce6323602 | ||
|
|
9a05a1c698 | ||
|
|
5dd914782a |
@@ -2,8 +2,8 @@
|
||||
// its wg interface into firewalld's "trusted" zone. This is required because
|
||||
// firewalld's nftables chains are created with NFT_CHAIN_OWNER on recent
|
||||
// versions, which returns EPERM to any other process that tries to insert
|
||||
// rules into them. The workaround mirrors what Tailscale does: let firewalld
|
||||
// itself add the accept rules to its own chains by trusting the interface.
|
||||
// rules into them. Trusting the interface makes firewalld itself add the
|
||||
// accept rules to its own chains instead.
|
||||
package firewalld
|
||||
|
||||
// TrustedZone is the firewalld zone name used for interfaces whose traffic
|
||||
|
||||
2
go.mod
2
go.mod
@@ -340,4 +340,4 @@ replace github.com/dexidp/dex/api/v2 => github.com/netbirdio/dex/api/v2 v2.0.0-2
|
||||
|
||||
replace github.com/mailru/easyjson => github.com/netbirdio/easyjson v0.9.0
|
||||
|
||||
replace github.com/wailsapp/wails/v3 => github.com/netbirdio/wails/v3 v3.0.0-beta.3.0.20260803205919-ad21e92381f4
|
||||
replace github.com/wailsapp/wails/v3 => github.com/netbirdio/wails/v3 v3.0.0-beta.3.0.20260807055527-fc03f984d701
|
||||
|
||||
4
go.sum
4
go.sum
@@ -490,8 +490,8 @@ github.com/netbirdio/service v0.0.0-20240911161631-f62744f42502 h1:3tHlFmhTdX9ax
|
||||
github.com/netbirdio/service v0.0.0-20240911161631-f62744f42502/go.mod h1:CIMRFEJVL+0DS1a3Nx06NaMn4Dz63Ng6O7dl0qH0zVM=
|
||||
github.com/netbirdio/signal-dispatcher/dispatcher v0.0.0-20250805121659-6b4ac470ca45 h1:ujgviVYmx243Ksy7NdSwrdGPSRNE3pb8kEDSpH0QuAQ=
|
||||
github.com/netbirdio/signal-dispatcher/dispatcher v0.0.0-20250805121659-6b4ac470ca45/go.mod h1:5/sjFmLb8O96B5737VCqhHyGRzNFIaN/Bu7ZodXc3qQ=
|
||||
github.com/netbirdio/wails/v3 v3.0.0-beta.3.0.20260803205919-ad21e92381f4 h1:UKztc3QjWvzU5DZk+uYaOWN0x62NSe/pkxuPvzqZIy4=
|
||||
github.com/netbirdio/wails/v3 v3.0.0-beta.3.0.20260803205919-ad21e92381f4/go.mod h1:BzATbK71VFikMMMCo434wAi0QcaI03P+xeaWgDvQvjw=
|
||||
github.com/netbirdio/wails/v3 v3.0.0-beta.3.0.20260807055527-fc03f984d701 h1:QL9nupfRom0L9jcY7N9l/Bc6QK2PtC6pHzC+ftpTqpw=
|
||||
github.com/netbirdio/wails/v3 v3.0.0-beta.3.0.20260807055527-fc03f984d701/go.mod h1:BzATbK71VFikMMMCo434wAi0QcaI03P+xeaWgDvQvjw=
|
||||
github.com/netbirdio/wireguard-go v0.0.0-20260628102922-2834bebf6c1a h1:3CWK+yTvRKOcC0Q8VCTGy4l60TEb27CQVS7LkMxwjmw=
|
||||
github.com/netbirdio/wireguard-go v0.0.0-20260628102922-2834bebf6c1a/go.mod h1:rpwXGsirqLqN2L0JDJQlwOboGHmptD5ZD6T2VmcqhTw=
|
||||
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -4,9 +4,67 @@ set -x
|
||||
|
||||
LOG_FILE=/var/log/netbird/client_pre_install.log
|
||||
AGENT=/usr/local/bin/netbird
|
||||
UI_PROCESS=netbird-ui
|
||||
|
||||
mkdir -p /var/log/netbird/
|
||||
|
||||
# wait_for_ui_exit polls for up to $1 seconds, returning 0 as soon as no UI
|
||||
# process is left and 1 if one is still running when the time is up.
|
||||
wait_for_ui_exit() {
|
||||
waited=0
|
||||
while [ "$waited" -lt "$1" ]; do
|
||||
pgrep -x "$UI_PROCESS" > /dev/null 2>&1 || return 0
|
||||
sleep 1
|
||||
waited=$((waited + 1))
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
# request_ui_quit asks the UI to quit from inside the console user's session and
|
||||
# reports whether the request could be sent at all. The installer runs as root
|
||||
# outside that session, so a quit Apple event sent straight from here always
|
||||
# fails with -600.
|
||||
request_ui_quit() {
|
||||
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 the quit request."
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
|
||||
uid=$(id -u "$console_user" 2>/dev/null)
|
||||
if [ -z "$uid" ]; then
|
||||
echo "Could not resolve uid for console user '$console_user'; skipping the quit request."
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "Asking the NetBird UI to quit as console user $console_user (uid $uid)."
|
||||
launchctl asuser "$uid" sudo -u "$console_user" -H osascript -e 'quit app "NetBird"' || true
|
||||
}
|
||||
|
||||
# quit_ui stops a running UI so the app bundle can be replaced underneath it. A
|
||||
# UI process that survives the install keeps serving the old binary until it is
|
||||
# quit by hand, so anything still running once the quit request is out of the
|
||||
# way is signalled. Waiting for a graceful exit only makes sense when a quit
|
||||
# request was actually sent.
|
||||
quit_ui() {
|
||||
if request_ui_quit && wait_for_ui_exit 10; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
pgrep -x "$UI_PROCESS" > /dev/null 2>&1 || return 0
|
||||
|
||||
echo "NetBird UI still running; terminating it."
|
||||
pkill -x "$UI_PROCESS" || true
|
||||
if wait_for_ui_exit 3; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "NetBird UI ignored SIGTERM; killing it."
|
||||
pkill -KILL -x "$UI_PROCESS" || true
|
||||
}
|
||||
|
||||
{
|
||||
# check if it was installed with brew
|
||||
brew list --formula | grep netbird
|
||||
@@ -15,10 +73,9 @@ mkdir -p /var/log/netbird/
|
||||
echo "NetBird has been installed with Brew. Please use Brew to update the package."
|
||||
exit 1
|
||||
fi
|
||||
osascript -e 'quit app "Netbird"' || true
|
||||
quit_ui
|
||||
$AGENT service stop || true
|
||||
|
||||
echo "Preinstall complete"
|
||||
exit 0 # all good
|
||||
} &> $LOG_FILE
|
||||
|
||||
|
||||
Reference in New Issue
Block a user