#!/bin/sh ############################################################################### # # # IPFire.org - A linux based firewall # # Copyright (C) 2007-2024 IPFire Team # # # # 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 # # the Free Software Foundation, either version 3 of the License, or # # (at your option) any later version. # # # # This program is distributed in the hope that it will be useful, # # but WITHOUT ANY WARRANTY; without even the implied warranty of # # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # # GNU General Public License for more details. # # # # You should have received a copy of the GNU General Public License # # along with this program. If not, see . # # # ############################################################################### . /etc/sysconfig/rc . $rc_functions function fix_permissions() { local lockdir="/var/lib/samba/winbindd_privileged" chmod 750 "${lockdir}" chgrp wbpriv "${lockdir}" mkdir -p /var/run/samba/{nmbd,ncalrpc,winbindd} } eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings) case "$1" in start) fix_permissions boot_mesg "Starting nmbd..." loadproc /usr/sbin/nmbd -D boot_mesg "Starting smbd..." loadproc /usr/sbin/smbd -D 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) boot_mesg "Stopping smbd..." killproc /usr/sbin/smbd boot_mesg "Stopping nmbd..." killproc /usr/sbin/nmbd 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) boot_mesg "Reloading smbd..." reloadproc /usr/sbin/smbd boot_mesg "Reloading nmbd..." reloadproc /usr/sbin/nmbd boot_mesg "Reloading winbind..." reloadproc /usr/sbin/winbindd ;; restart) $0 stop sleep 3 $0 start ;; status) statusproc /usr/sbin/nmbd statusproc /usr/sbin/smbd statusproc /usr/sbin/winbindd PIDFILE="/var/run/wsdd.pid" statusproc /usr/bin/wsdd ;; *) echo "Usage: $0 {start|stop|reload|restart|status}" exit 1 ;; esac