constructions that parse out to [ -z "$foo" ] && foo="" These are bad examples that get copied and pasted into new code, so the hope is that with less bad examples there will be less need for me to bring this up in review. In a few of these files all that were changed were comments so that next time I search for these patterns I won't trip on the file for no reason. In a few places, add $FreeBSD$ No functional changes, so no PORTREVISION bumps
163 lines
4.9 KiB
Bash
163 lines
4.9 KiB
Bash
#!/bin/sh
|
|
#
|
|
# $FreeBSD$
|
|
#
|
|
|
|
# PROVIDE: milter-batv
|
|
# REQUIRE: DAEMON
|
|
# BEFORE: mail
|
|
# KEYWORD: shutdown
|
|
|
|
# Define these milterbatv_* variables in one of these files:
|
|
# /etc/rc.conf
|
|
# /etc/rc.conf.local
|
|
# /etc/rc.conf.d/milterbatv
|
|
#
|
|
# milterbatv_enable (bool): Set to "NO" by default.
|
|
# Set it to "YES" to enable batv-milter
|
|
# milterbatv_uid (str): Set username to run milter.
|
|
# milterbatv_profiles (list): Set to "" by default.
|
|
# Define your profiles here.
|
|
# milterbatv_cfgfile (str): Configuration file.
|
|
#
|
|
# milterbatv_${profile}_* : Variables per profile.
|
|
# Sockets must be different from each other.
|
|
#
|
|
# all parameters below can be set in batv-filter.conf(5).
|
|
# milterbatv_socket (str): Path to the milter socket.
|
|
# milterbatv_domain (str): Domainpart of From: in mails to sign.
|
|
# milterbatv_allowlist (str): Path to the allow list file.
|
|
# milterbatv_key (str): Path to the private key file to sign with.
|
|
# milterbatv_flags (str): Flags passed to start command.
|
|
|
|
. /etc/rc.subr
|
|
|
|
name="milterbatv"
|
|
rcvar=`set_rcvar`
|
|
|
|
start_precmd="batv_prepcmd"
|
|
stop_postcmd="batv_postcmd"
|
|
command="%%PREFIX%%/bin/batv-filter"
|
|
_piddir="/var/run/milterbatv"
|
|
pidfile="${_piddir}/pid"
|
|
|
|
load_rc_config $name
|
|
|
|
#
|
|
# DO NOT CHANGE THESE DEFAULT VALUES HERE
|
|
#
|
|
: ${milterbatv_enable="NO"}
|
|
: ${milterbatv_uid="mailnull"}
|
|
: ${milterbatv_cfgfile="%%PREFIX%%/etc/mail/batv-filter.conf"}
|
|
|
|
# Options other than above can be set with $milterbatv_flags.
|
|
# see batv-milter documentation for detail.
|
|
|
|
if [ -n "$2" ]; then
|
|
profile="$2"
|
|
if [ "x${milterbatv_profiles}" != "x" ]; then
|
|
pidfile="${_piddir}/${profile}.pid"
|
|
eval milterbatv_enable="\${milterbatv_${profile}_enable:-${milterbatv_enable}}"
|
|
eval milterbatv_socket="\${milterbatv_${profile}_socket:-}"
|
|
if [ "x${milterbatv_socket}" = "x" ];then
|
|
echo "You must define a socket (milterbatv_${profile}_socket)"
|
|
exit 1
|
|
fi
|
|
eval milterbatv_cfgfile="\${milterbatv_${profile}_cfgfile:-${milterbatv_cfgfile}}"
|
|
eval milterbatv_domain="\${milterbatv_${profile}_domain:-${milterbatv_domain}}"
|
|
eval milterbatv_allowlist="\${milterbatv_${profile}_allowlist:-${milterbatv_allowlist}}"
|
|
eval milterbatv_key="\${milterbatv_${profile}_key:-${milterbatv_key}}"
|
|
eval milterbatv_flags="\${milterbatv_${profile}_flags:-${milterbatv_flags}}"
|
|
if [ -f "${milterbatv_cfgfile}" ];then
|
|
milterbatv_cfgfile="-x ${milterbatv_cfgfile}"
|
|
else
|
|
milterbatv_cfgfile=""
|
|
fi
|
|
if [ "x${milterbatv_socket}" != "x" ];then
|
|
_socket_prefix="-p"
|
|
fi
|
|
if [ "x${milterbatv_uid}" != "x" ];then
|
|
_uid_prefix="-u"
|
|
fi
|
|
if [ "x${milterbatv_domain}" != "x" ];then
|
|
milterbatv_domain="-d ${milterbatv_domain}"
|
|
fi
|
|
if [ "x${milterbatv_allowlist}" != "x" ];then
|
|
milterbatv_allowlist="-a ${milterbatv_allowlist}"
|
|
fi
|
|
if [ "x${milterbatv_key}" != "x" ];then
|
|
milterbatv_key="-k ${milterbatv_key}"
|
|
fi
|
|
command_args="-l ${_socket_prefix} ${milterbatv_socket} ${_uid_prefix} ${milterbatv_uid} -P ${pidfile} ${milterbatv_cfgfile} ${milterbatv_domain} ${milterbatv_allowlist} ${milterbatv_key}"
|
|
else
|
|
echo "$0: extra argument ignored"
|
|
fi
|
|
else
|
|
if [ "x${milterbatv_profiles}" != "x" -a "x$1" != "x" ]; then
|
|
if [ "x$1" != "xrestart" ]; then
|
|
for profile in ${milterbatv_profiles}; do
|
|
echo "===> milterbatv profile: ${profile}"
|
|
%%RC_SCRIPT%% $1 ${profile}
|
|
retcode="$?"
|
|
if [ "0${retcode}" -ne 0 ]; then
|
|
failed="${profile} (${retcode}) ${failed:-}"
|
|
else
|
|
success="${profile} ${success:-}"
|
|
fi
|
|
done
|
|
exit 0
|
|
else
|
|
restart_precmd=""
|
|
fi
|
|
else
|
|
if [ -f "${milterbatv_cfgfile}" ];then
|
|
milterbatv_cfgfile="-x ${milterbatv_cfgfile}"
|
|
else
|
|
milterbatv_cfgfile=""
|
|
fi
|
|
if [ "x${milterbatv_socket}" != "x" ];then
|
|
_socket_prefix="-p"
|
|
fi
|
|
if [ "x${milterbatv_uid}" != "x" ];then
|
|
_uid_prefix="-u"
|
|
fi
|
|
if [ "x${milterbatv_domain}" != "x" ];then
|
|
milterbatv_domain="-d ${milterbatv_domain}"
|
|
fi
|
|
if [ "x${milterbatv_allowlist}" != "x" ];then
|
|
milterbatv_allowlist="-a ${milterbatv_allowlist}"
|
|
fi
|
|
if [ "x${milterbatv_key}" != "x" ];then
|
|
milterbatv_key="-k ${milterbatv_key}"
|
|
fi
|
|
command_args="-l ${_socket_prefix} ${milterbatv_socket} ${_uid_prefix} ${milterbatv_uid} -P ${pidfile} ${milterbatv_cfgfile} ${milterbatv_domain} ${milterbatv_allowlist} ${milterbatv_key}"
|
|
fi
|
|
fi
|
|
|
|
batv_prepcmd ()
|
|
{
|
|
if [ -S ${milterbatv_socket##local:} ] ; then
|
|
rm -f ${milterbatv_socket##local:}
|
|
elif [ -S ${milterbatv_socket##unix:} ] ; then
|
|
rm -f ${milterbatv_socket##unix:}
|
|
fi
|
|
if [ ! -d ${_piddir} ] ; then
|
|
mkdir -p ${_piddir}
|
|
fi
|
|
if [ -n "${milterbatv_uid}" ] ; then
|
|
chown ${milterbatv_uid} ${_piddir}
|
|
fi
|
|
}
|
|
|
|
batv_postcmd()
|
|
{
|
|
if [ -S ${milterbatv_socket##local:} ] ; then
|
|
rm -f ${milterbatv_socket##local:}
|
|
elif [ -S ${milterbatv_socket##unix:} ] ; then
|
|
rm -f ${milterbatv_socket##unix:}
|
|
fi
|
|
# just if the directory is empty
|
|
rmdir ${_piddir} > /dev/null 2>&1
|
|
}
|
|
|
|
run_rc_command "$1"
|