aboutsummaryrefslogtreecommitdiff
path: root/net/samba32/files/samba.in
diff options
context:
space:
mode:
Diffstat (limited to 'net/samba32/files/samba.in')
-rw-r--r--net/samba32/files/samba.in162
1 files changed, 162 insertions, 0 deletions
diff --git a/net/samba32/files/samba.in b/net/samba32/files/samba.in
new file mode 100644
index 000000000000..753507e69223
--- /dev/null
+++ b/net/samba32/files/samba.in
@@ -0,0 +1,162 @@
+#!/bin/sh
+#
+# $FreeBSD: /tmp/pcvs/ports/net/samba32/files/Attic/samba.in,v 1.1 2008-10-12 01:37:46 timur Exp $
+#
+
+# PROVIDE: nmbd smbd
+%%WINBIND%%# PROVIDE: winbindd
+# REQUIRE: NETWORKING SERVERS DAEMON ldconfig resolv
+%%CUPS%%# REQUIRE: cupsd
+# BEFORE: LOGIN
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+#samba_enable="YES"
+# or, for fine grain control:
+#nmbd_enable="YES"
+#smbd_enable="YES"
+%%WINBIND%%# You need to enable winbindd separately, by adding:
+%%WINBIND%%#winbindd_enable="YES"
+#
+# Configuration file can be set with:
+#samba_config="%%SAMBA_CONFDIR%%/%%SAMBA_CONFIG%%"
+#
+
+. %%RC_SUBR%%
+
+name="samba"
+rcvar=$(set_rcvar)
+
+load_rc_config "${name}"
+# Custom commands
+extra_commands="reload status"
+start_precmd="samba_start_precmd"
+start_cmd="samba_cmd"
+stop_cmd="samba_cmd"
+status_cmd="samba_cmd"
+restart_precmd="samba_checkconfig"
+reload_precmd="samba_checkconfig"
+reload_cmd="samba_reload_cmd"
+rcvar_cmd="samba_rcvar_cmd"
+# Defaults
+samba_enable=${samba_enable:=NO}
+samba_config_default="%%SAMBA_CONFDIR%%/%%SAMBA_CONFIG%%"
+samba_config=${samba_config="${samba_config_default}"}
+command_args=${samba_config:+-s "${samba_config}"}
+samba_daemons="nmbd smbd"
+%%WINBIND%%samba_daemons="${samba_daemons} winbindd"
+testparm_command="%%PREFIX%%/bin/testparm"
+smbcontrol_command="%%PREFIX%%/bin/smbcontrol"
+# Fetch parameters from configuration file
+samba_parm="${testparm_command} -s -v --parameter-name"
+%%WINBIND%%samba_idmap=$(${samba_parm} 'idmap uid' "${samba_config}" 2>/dev/null)
+samba_lockdir=$(${samba_parm} 'lock directory' "${samba_config}" 2>/dev/null)
+# Setup dependent variables
+if [ -n "${rcvar}" ] && checkyesno "${rcvar}"; then
+ nmbd_enable=${nmbd_enable=YES}
+ smbd_enable=${smbd_enable=YES}
+%%WINBIND%% # Check that winbindd is actually configured
+%%WINBIND%% if [ -n "${samba_idmap}" ]; then
+%%WINBIND%% winbindd_enable=${winbindd_enable=YES}
+%%WINBIND%% fi
+fi
+# Hack to work around name change of pid file with non-default config
+pid_extra=
+if [ -n "${samba_config}" -a "${samba_config}" != "${samba_config_default}" ]; then
+ pid_extra="-$(basename "${samba_config}")"
+fi
+# Hack to enable check of dependent variables
+eval real_${rcvar}="\${${rcvar}:=NO}" ${rcvar}=YES
+# Defaults for dependent variables
+nmbd_enable=${nmbd_enable:=NO}
+nmbd_flags=${nmbd_flags="-D"}
+smbd_enable=${smbd_enable:=NO}
+smbd_flags=${smbd_flags="-D"}
+%%WINBIND%%winbindd_enable=${winbindd_enable:=NO}
+%%WINBIND%%winbindd_flags=${winbindd_flags=''}
+# Requirements
+required_files="${samba_config}"
+required_dirs="${samba_lockdir}"
+samba_checkconfig() {
+ echo -n "Performing sanity check on Samba configuration: "
+ if ${testparm_command} -s ${samba_config:+"${samba_config}"} >/dev/null 2>&1; then
+ echo "OK"
+ else
+ echo "FAILED"
+ return 1
+ fi
+}
+
+samba_start_precmd() {
+ # XXX: Never delete winbindd_idmap, winbindd_cache and group_mapping
+ if [ -n "${samba_lockdir}" -a -d "${samba_lockdir}" ]; then
+ echo -n "Removing stale Samba tdb files: "
+ for file in brlock.tdb browse.dat connections.tdb gencache.tdb \
+ locking.tdb messages.tdb namelist.debug sessionid.tdb \
+ unexpected.tdb
+ do
+ rm "${samba_lockdir}/${file}" </dev/null 2>/dev/null && echo -n '.'
+ done
+ echo " done"
+ fi
+}
+
+samba_rcvar_cmd() {
+ # Prevent recursive calling
+ unset "${rc_arg}_cmd" "${rc_arg}_precmd" "${rc_arg}_postcmd"
+ # Check master variable
+ echo "# ${name}"
+ if [ -n "${rcvar}" ]; then
+ # Use original configured value
+ if checkyesno "real_${rcvar}"; then
+ echo "\$${rcvar}=YES"
+ else
+ echo "\$${rcvar}=NO"
+ fi
+ fi
+ # Check dependent variables
+ samba_cmd "${_rc_prefix}${rc_arg}" ${rc_extra_args}
+}
+
+samba_reload_cmd() {
+ local name rcvar command pidfile
+ # Prevent recursive calling
+ unset "${rc_arg}_cmd" "${rc_arg}_precmd" "${rc_arg}_postcmd"
+ # Apply to all daemons
+ for name in ${samba_daemons}; do
+ rcvar=$(set_rcvar)
+ command="%%PREFIX%%/sbin/${name}"
+ pidfile="%%SAMBA_RUNDIR%%/${name}${pid_extra}.pid"
+ # Daemon should be enabled and running
+ if [ -n "${rcvar}" ] && checkyesno "${rcvar}"; then
+ if [ -n "$(check_pidfile "${pidfile}" "${command}")" ]; then
+ debug "reloading ${name} configuration"
+ echo "Reloading ${name}."
+ # XXX: Hack with pid_extra
+ ${smbcontrol_command} "${name}${pid_extra}" 'reload-config' ${command_args} >/dev/null 2>&1
+ fi
+ fi
+ done
+}
+
+samba_cmd() {
+ local name rcvar command pidfile samba_daemons
+ # Prevent recursive calling
+ unset "${rc_arg}_cmd" "${rc_arg}_precmd" "${rc_arg}_postcmd"
+ # Stop processes in the reverse to order
+ if [ "${rc_arg}" = "stop" ] ; then
+ samba_daemons=$(reverse_list ${samba_daemons})
+ fi
+ # Apply to all daemons
+ for name in ${samba_daemons}; do
+ rcvar=$(set_rcvar)
+ command="%%PREFIX%%/sbin/${name}"
+ pidfile="%%SAMBA_RUNDIR%%/${name}${pid_extra}.pid"
+
+ run_rc_command "${_rc_prefix}${rc_arg}" ${rc_extra_args}
+ done
+}
+
+run_rc_command "$1"