feat: Deduplicate Samba daemon startup (#1840)

This commit is contained in:
Kroese
2026-07-12 22:51:48 +02:00
committed by GitHub
parent 3a0b973c0b
commit 0b119d589c
+39 -36
View File
@@ -24,14 +24,15 @@ configureNetwork() {
interfaces="$DEV"
else
hostname="host.lan"
case "${NETWORK,,}" in
"passt" | "slirp" )
interfaces="lo"
socket="127.0.0.1" ;;
*)
socket="$IP"
interfaces="$BRIDGE" ;;
esac
if isUserMode; then
interfaces="lo"
socket="127.0.0.1"
else
socket="$IP"
interfaces="$BRIDGE"
fi
if [ -n "${SAMBA_INTERFACE:-}" ]; then
interfaces+=",$SAMBA_INTERFACE"
fi
@@ -114,7 +115,7 @@ addShare() {
fi
if [[ "$dir" == "$tmp" ]]; then
writeReadme "$dir" "$ref"
writeReadme "$dir" "$ref" || return 1
fi
if ! {
@@ -196,9 +197,10 @@ addOptionalShare() {
prepareSambaDirs() {
# Create directories if missing
mkdir -p /var/lib/samba/sysvol
mkdir -p /var/lib/samba/private
mkdir -p /var/lib/samba/bind-dns
mkdir -p \
/var/lib/samba/sysvol \
/var/lib/samba/private \
/var/lib/samba/bind-dns || return 1
# Try to repair Samba permissions
[ -d /run/samba/msg.lock ] && chmod -R 0755 /run/samba/msg.lock 2>/dev/null || :
@@ -219,16 +221,28 @@ debugLog() {
return 0
}
startSamba() {
startDaemon() {
rm -f /var/log/samba/log.smbd
local name="$1"
local log="$2"
shift 2
if ! smbd -l /var/log/samba; then
rm -f "$log"
if ! "$@"; then
SAMBA_DEBUG="Y"
error "Failed to start Samba daemon!"
error "Failed to start $name daemon!"
fi
debugLog /var/log/samba/log.smbd
debugLog "$log"
return 0
}
startSamba() {
startDaemon "Samba" "/var/log/samba/log.smbd" \
smbd -l /var/log/samba
return 0
}
@@ -237,14 +251,9 @@ startNetbios() {
# Enable NetBIOS on Windows 7 and lower
enabled "$DEBUG" && echo "Starting NetBIOS daemon..."
rm -f /var/log/samba/log.nmbd
startDaemon "NetBIOS" "/var/log/samba/log.nmbd" \
nmbd -l /var/log/samba
if ! nmbd -l /var/log/samba; then
SAMBA_DEBUG="Y"
error "Failed to start NetBIOS daemon!"
fi
debugLog /var/log/samba/log.nmbd
return 0
}
@@ -252,14 +261,11 @@ startWsddn() {
# Enable Web Service Discovery on Vista and up
enabled "$DEBUG" && echo "Starting wsddn daemon..."
rm -f /var/log/wsddn.log
if ! wsddn -i "${interfaces%%,*}" -H "$hostname" --unixd --log-file=/var/log/wsddn.log --pid-file="$DDN_PID"; then
SAMBA_DEBUG="Y"
error "Failed to start wsddn daemon!"
fi
startDaemon "wsddn" "/var/log/wsddn.log" \
wsddn -i "${interfaces%%,*}" -H "$hostname" \
--unixd --log-file=/var/log/wsddn.log --pid-file="$DDN_PID"
debugLog /var/log/wsddn.log
return 0
}
@@ -269,7 +275,7 @@ html "Initializing shared folder..."
SAMBA_CONFIG="/etc/samba/smb.conf"
enabled "$DEBUG" && echo "Starting Samba daemon..."
writeConfig
writeConfig || return 1
# Add shared folders
selectPrimaryShare
@@ -278,13 +284,10 @@ selectPrimaryShare
addOptionalShare "2"
addOptionalShare "3"
prepareSambaDirs
prepareSambaDirs || return 1
startSamba
case "${NETWORK,,}" in
"passt" | "slirp" )
return 0 ;;
esac
isUserMode && return 0
if [[ "${BOOT_MODE:-}" == "windows_legacy" ]]; then
startNetbios