mirror of
https://github.com/dockur/windows.git
synced 2026-07-15 01:38:16 +01:00
feat: Deduplicate Samba daemon startup (#1840)
This commit is contained in:
+42
-39
@@ -24,14 +24,15 @@ configureNetwork() {
|
|||||||
interfaces="$DEV"
|
interfaces="$DEV"
|
||||||
else
|
else
|
||||||
hostname="host.lan"
|
hostname="host.lan"
|
||||||
case "${NETWORK,,}" in
|
|
||||||
"passt" | "slirp" )
|
if isUserMode; then
|
||||||
interfaces="lo"
|
interfaces="lo"
|
||||||
socket="127.0.0.1" ;;
|
socket="127.0.0.1"
|
||||||
*)
|
else
|
||||||
socket="$IP"
|
socket="$IP"
|
||||||
interfaces="$BRIDGE" ;;
|
interfaces="$BRIDGE"
|
||||||
esac
|
fi
|
||||||
|
|
||||||
if [ -n "${SAMBA_INTERFACE:-}" ]; then
|
if [ -n "${SAMBA_INTERFACE:-}" ]; then
|
||||||
interfaces+=",$SAMBA_INTERFACE"
|
interfaces+=",$SAMBA_INTERFACE"
|
||||||
fi
|
fi
|
||||||
@@ -95,11 +96,11 @@ addShare() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$(ls -A "$dir")" ]; then
|
if [ -z "$(ls -A "$dir")" ]; then
|
||||||
|
|
||||||
if ! chmod 2777 "$dir"; then
|
if ! chmod 2777 "$dir"; then
|
||||||
error "Failed to set permissions for directory $dir" && return 1
|
error "Failed to set permissions for directory $dir" && return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! owner=$(stat -c %u "$dir"); then
|
if ! owner=$(stat -c %u "$dir"); then
|
||||||
error "Failed to determine ownership for directory $dir"
|
error "Failed to determine ownership for directory $dir"
|
||||||
return 1
|
return 1
|
||||||
@@ -110,11 +111,11 @@ addShare() {
|
|||||||
error "Failed to set ownership for directory $dir" && return 1
|
error "Failed to set ownership for directory $dir" && return 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$dir" == "$tmp" ]]; then
|
if [[ "$dir" == "$tmp" ]]; then
|
||||||
writeReadme "$dir" "$ref"
|
writeReadme "$dir" "$ref" || return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! {
|
if ! {
|
||||||
@@ -196,9 +197,10 @@ addOptionalShare() {
|
|||||||
prepareSambaDirs() {
|
prepareSambaDirs() {
|
||||||
|
|
||||||
# Create directories if missing
|
# Create directories if missing
|
||||||
mkdir -p /var/lib/samba/sysvol
|
mkdir -p \
|
||||||
mkdir -p /var/lib/samba/private
|
/var/lib/samba/sysvol \
|
||||||
mkdir -p /var/lib/samba/bind-dns
|
/var/lib/samba/private \
|
||||||
|
/var/lib/samba/bind-dns || return 1
|
||||||
|
|
||||||
# Try to repair Samba permissions
|
# Try to repair Samba permissions
|
||||||
[ -d /run/samba/msg.lock ] && chmod -R 0755 /run/samba/msg.lock 2>/dev/null || :
|
[ -d /run/samba/msg.lock ] && chmod -R 0755 /run/samba/msg.lock 2>/dev/null || :
|
||||||
@@ -219,16 +221,28 @@ debugLog() {
|
|||||||
return 0
|
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"
|
SAMBA_DEBUG="Y"
|
||||||
error "Failed to start Samba daemon!"
|
error "Failed to start $name daemon!"
|
||||||
fi
|
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
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -237,14 +251,9 @@ startNetbios() {
|
|||||||
# Enable NetBIOS on Windows 7 and lower
|
# Enable NetBIOS on Windows 7 and lower
|
||||||
enabled "$DEBUG" && echo "Starting NetBIOS daemon..."
|
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
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -252,14 +261,11 @@ startWsddn() {
|
|||||||
|
|
||||||
# Enable Web Service Discovery on Vista and up
|
# Enable Web Service Discovery on Vista and up
|
||||||
enabled "$DEBUG" && echo "Starting wsddn daemon..."
|
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
|
startDaemon "wsddn" "/var/log/wsddn.log" \
|
||||||
SAMBA_DEBUG="Y"
|
wsddn -i "${interfaces%%,*}" -H "$hostname" \
|
||||||
error "Failed to start wsddn daemon!"
|
--unixd --log-file=/var/log/wsddn.log --pid-file="$DDN_PID"
|
||||||
fi
|
|
||||||
|
|
||||||
debugLog /var/log/wsddn.log
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -269,7 +275,7 @@ html "Initializing shared folder..."
|
|||||||
SAMBA_CONFIG="/etc/samba/smb.conf"
|
SAMBA_CONFIG="/etc/samba/smb.conf"
|
||||||
enabled "$DEBUG" && echo "Starting Samba daemon..."
|
enabled "$DEBUG" && echo "Starting Samba daemon..."
|
||||||
|
|
||||||
writeConfig
|
writeConfig || return 1
|
||||||
|
|
||||||
# Add shared folders
|
# Add shared folders
|
||||||
selectPrimaryShare
|
selectPrimaryShare
|
||||||
@@ -278,13 +284,10 @@ selectPrimaryShare
|
|||||||
addOptionalShare "2"
|
addOptionalShare "2"
|
||||||
addOptionalShare "3"
|
addOptionalShare "3"
|
||||||
|
|
||||||
prepareSambaDirs
|
prepareSambaDirs || return 1
|
||||||
startSamba
|
startSamba
|
||||||
|
|
||||||
case "${NETWORK,,}" in
|
isUserMode && return 0
|
||||||
"passt" | "slirp" )
|
|
||||||
return 0 ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [[ "${BOOT_MODE:-}" == "windows_legacy" ]]; then
|
if [[ "${BOOT_MODE:-}" == "windows_legacy" ]]; then
|
||||||
startNetbios
|
startNetbios
|
||||||
|
|||||||
Reference in New Issue
Block a user