freebsd-ports/mail/batv-milter/files/milter-batv.sh.in
Doug Barton 29813d5397 Remove painful examples of foo="", with particular prejudice against
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
2011-05-15 02:49:17 +00:00

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"