Skip to content

Commit 0edda3e

Browse files
committed
v0.5.5.5: installer -- macOS quarantine fix, updated interface picker labels
- Remove com.apple.quarantine xattr on macOS after binary install so Gatekeeper does not block execution (verified through macOS Tahoe 16) - Expand installer VIRTUAL_PREFIXES from 12 to 22 entries with labels for LXC/LXD, Proxmox, Podman, HA OS, and tunnel interfaces - Add macOS code signing dropdown to README Quick Start section
1 parent c7a9e97 commit 0edda3e

3 files changed

Lines changed: 52 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@
22

33
All notable changes to SMART Sniffer are documented here.
44

5+
## v0.5.5.5 -- 2026-04-27
6+
7+
Installer-only patch. No agent, integration, or config changes.
8+
9+
### Fixed
10+
- **macOS: installer now removes Gatekeeper quarantine flag** -- files downloaded via curl get a `com.apple.quarantine` extended attribute that blocks execution with an "unidentified developer" dialog. The installer now strips this automatically. Previously, macOS users had to run `xattr -d` manually or navigate System Settings after install.
11+
- **Installer interface picker labels updated** -- the network interface picker now correctly tags LXC/LXD bridges, Proxmox interfaces, Podman, HA OS supervisor bridges, and tunnel/VPN interfaces. Previously only Docker, ZeroTier, Tailscale, WireGuard, libvirt, VirtualBox, and VMware were labeled.
12+
513
## v0.5.5.4 -- 2026-04-25
614

715
Agent-only patch. No integration, installer, or config changes.

README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,29 @@ irm https://raw.githubusercontent.com/DAB-LABS/smart-sniffer/main/install.ps1 |
243243

244244
</details>
245245

246+
<details>
247+
<summary>macOS: "unidentified developer" warning</summary>
248+
249+
The agent binary is not code-signed or notarized. macOS Gatekeeper will block it on first run with a "cannot be opened" or "unidentified developer" dialog.
250+
251+
If you installed via the install script, remove the quarantine flag manually:
252+
253+
```bash
254+
sudo xattr -d com.apple.quarantine /usr/local/bin/smartha-agent
255+
```
256+
257+
Then restart the service:
258+
259+
```bash
260+
sudo launchctl kickstart -k system/com.dablabs.smartha-agent
261+
```
262+
263+
Alternatively, go to **System Settings > Privacy & Security**, find the blocked app, and click **Open Anyway**.
264+
265+
> **Note:** The right-click > Open workaround was removed in macOS Sequoia (15.0). The `xattr` method above works on all current macOS versions including Sequoia.
266+
267+
</details>
268+
246269
<details>
247270
<summary>Pin a specific version</summary>
248271

install.sh

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,12 @@ pick_filesystems() {
215215
# Network interface picker — shows numbered list, user enters a number
216216
# or "all". Sets ADV_IFACE to the chosen interface or "" for auto-filter.
217217
# ---------------------------------------------------------------------------
218-
VIRTUAL_PREFIXES="docker|br-|veth|zt|tailscale|ts|wg|virbr|vbox|vmnet|utun|lo"
218+
# Cosmetic labels for the interface picker UI. This list does NOT need to
219+
# mirror every entry in agent/config.go's defaultSkipPrefixes (51 entries).
220+
# It only tags common virtual interfaces so users can identify them during
221+
# install. The actual runtime filtering is handled by the Go agent.
222+
# Keep loosely in sync -- add entries when users report confusion.
223+
VIRTUAL_PREFIXES="docker|docker_gwbridge|br-|lxcbr|lxdbr|veth|podman|hassio|zt|tailscale|ts|wg|tun|tap|utun|virbr|vmbr|fwbr|fwpr|fwln|vbox|vmnet|lo"
219224

220225
pick_interface() {
221226
local -a iface_names=()
@@ -237,14 +242,17 @@ pick_interface() {
237242
if echo "$iface" | grep -qiE "^($VIRTUAL_PREFIXES)"; then
238243
case "$iface" in
239244
docker*|br-*) tag_label="${YELLOW}(Docker)${NC}" ;;
240-
veth*) tag_label="${YELLOW}(Docker container)${NC}" ;;
245+
veth*|podman*) tag_label="${YELLOW}(container)${NC}" ;;
246+
lxcbr*|lxdbr*) tag_label="${YELLOW}(LXC/LXD)${NC}" ;;
247+
hassio*) tag_label="${YELLOW}(HA OS)${NC}" ;;
241248
zt*) tag_label="${YELLOW}(ZeroTier)${NC}" ;;
242249
tailscale*|ts*) tag_label="${YELLOW}(Tailscale)${NC}" ;;
243250
wg*) tag_label="${YELLOW}(WireGuard)${NC}" ;;
251+
tun*|tap*|utun*) tag_label="${YELLOW}(VPN tunnel)${NC}" ;;
244252
virbr*) tag_label="${YELLOW}(libvirt)${NC}" ;;
253+
vmbr*|fwbr*|fwpr*|fwln*) tag_label="${YELLOW}(Proxmox)${NC}" ;;
245254
vbox*) tag_label="${YELLOW}(VirtualBox)${NC}" ;;
246255
vmnet*) tag_label="${YELLOW}(VMware)${NC}" ;;
247-
utun*) tag_label="${YELLOW}(VPN tunnel)${NC}" ;;
248256
lo*) tag_label="${YELLOW}(loopback)${NC}" ;;
249257
*) tag_label="${YELLOW}(virtual)${NC}" ;;
250258
esac
@@ -894,6 +902,16 @@ fi
894902
info "Installing binary to $INSTALL_BIN..."
895903
cp "$TMPDIR/$BINARY_FILE" "$INSTALL_BIN"
896904
chmod +x "$INSTALL_BIN"
905+
906+
# macOS: remove Gatekeeper quarantine flag so the binary can run without
907+
# an "unidentified developer" dialog. Files downloaded via curl get the
908+
# com.apple.quarantine xattr automatically. This attribute is NOT
909+
# SIP-protected and can be removed with sudo. The || true ensures this
910+
# is a no-op on Linux (where xattr may not exist).
911+
# Verified working through macOS Tahoe (16) as of April 2026.
912+
if [ "$PLATFORM" = "darwin" ]; then
913+
xattr -d com.apple.quarantine "$INSTALL_BIN" 2>/dev/null || true
914+
fi
897915
success "Binary installed."
898916

899917
# ---------------------------------------------------------------------------

0 commit comments

Comments
 (0)