- This integrates the wsdd initscript functions into the samba initscript. When samba is started or stopped or the status requested then wsdd is part of that process. - Tested in my vm testbed and confirmed to work for start, stop and status. Confirmed pid's shown with status command are in the appropriate pid files.
Fixes: bug#13445 Tested-by: Adolf Belka adolf.belka@ipfire.org Signed-off-by: Adolf Belka adolf.belka@ipfire.org --- src/initscripts/packages/samba | 40 +++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-)
diff --git a/src/initscripts/packages/samba b/src/initscripts/packages/samba index 93f14cd29..3945f4384 100644 --- a/src/initscripts/packages/samba +++ b/src/initscripts/packages/samba @@ -2,7 +2,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007-2022 IPFire Team info@ipfire.org # +# Copyright (C) 2007-2024 IPFire Team info@ipfire.org # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -30,6 +30,8 @@ function fix_permissions() { mkdir -p /var/run/samba/{nmbd,ncalrpc,winbindd} }
+eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings) + case "$1" in start) fix_permissions @@ -42,6 +44,35 @@ case "$1" in
boot_mesg "Starting winbind..." loadproc /usr/sbin/winbindd + + # Arguments for wsdd command + ARGS=( + # Launch as non-privileged user + "--user" "wsdd:wsdd" + + # Launch in chroot + "--chroot" "/var/run/wsdd" + + # Only use IPv4 + "--ipv4only" + + # Configure the workgroup + "--workgroup" "$(testparm -s --parameter-name workgroup 2>/dev/null)" + ) + + # Conditionally add the GREEN/BLUE interface + for intf in GREEN_DEV BLUE_DEV; do + if [ -n "${!intf}" ]; then + ARGS+=( "--interface" "${!intf}" ) + fi + done + + # Create chroot directory for wsdd + mkdir -p /var/run/wsdd + + PIDFILE="/var/run/wsdd.pid" + boot_mesg "Starting Web Service Discovery Host Daemon..." + loadproc -b -p "${PIDFILE}" /usr/bin/wsdd "${ARGS[@]}" ;;
stop) @@ -53,6 +84,10 @@ case "$1" in
boot_mesg "Stopping winbind..." killproc /usr/sbin/winbindd + + PIDFILE="/var/run/wsdd.pid" + boot_mesg "Stopping Web Service Discovery Host Daemon..." + killproc -p "${PIDFILE}" /usr/bin/wsdd ;;
reload) @@ -76,6 +111,9 @@ case "$1" in statusproc /usr/sbin/nmbd statusproc /usr/sbin/smbd statusproc /usr/sbin/winbindd + + PIDFILE="/var/run/wsdd.pid" + statusproc /usr/bin/wsdd ;;
*)