mirror of
https://git.FreeBSD.org/ports.git
synced 2025-01-02 06:03:50 +00:00
83eb2c3700
literal name_enable wherever possible, and ${name}_enable when it's not, to prepare for the demise of set_rcvar(). In cases where I had to hand-edit unusual instances also modify formatting slightly to be more uniform (and in some cases, correct). This includes adding some $FreeBSD$ tags, and most importantly moving rcvar= to right after name= so it's clear that one is derived from the other.
155 lines
4.7 KiB
Bash
155 lines
4.7 KiB
Bash
#!/bin/sh
|
|
#
|
|
# $FreeBSD$
|
|
#
|
|
|
|
# PROVIDE: milter-manager
|
|
# REQUIRE: LOGIN
|
|
# BEFORE: mail
|
|
# KEYWORD: shutdown
|
|
|
|
# Define these miltermanager_* variables in one of these files:
|
|
# /etc/rc.conf
|
|
# /etc/rc.conf.local
|
|
# /etc/rc.conf.d/miltermanager
|
|
#
|
|
# miltermanager_enable (bool): Set to "NO" by default.
|
|
# Set it to "YES" to enable milter-manager
|
|
# miltermanager_cfgdir (str): Configuration directory. see milter-manager(1)
|
|
# miltermanager_profiles (list): Set to "" by default.
|
|
# Define your profiles here.
|
|
# miltermanager_debug (str): Run the milter in debug mode(can run one instance only).
|
|
#
|
|
# miltermanager_${profile}_* : Variables per profile.
|
|
#
|
|
# all parameters below now can be set in milter-manager.conf(5).
|
|
# miltermanager_uid (str): Set username to run milter.
|
|
# miltermanager_gid (str): Set groupname to run milter.
|
|
# miltermanager_socket_gid (str): Set groupname to access the socket.
|
|
# miltermanager_socket (str): Path to the milter socket in socketspec.
|
|
# Sockets must be different from each other.
|
|
# miltermanager_flags (str): Flags passed to start command.
|
|
|
|
. /etc/rc.subr
|
|
|
|
name="miltermanager"
|
|
rcvar=miltermanager_enable
|
|
|
|
extra_commands="reload"
|
|
start_precmd="manager_precmd"
|
|
stop_postcmd="manager_postcmd"
|
|
command="%%PREFIX%%/sbin/milter-manager"
|
|
_piddir="/var/run/milter-manager"
|
|
pidfile="${_piddir}/pid"
|
|
|
|
load_rc_config $name
|
|
|
|
#
|
|
# DO NOT CHANGE THESE DEFAULT VALUES HERE
|
|
#
|
|
: ${miltermanager_enable="NO"}
|
|
: ${miltermanager_cfgdir="%%PREFIX%%/etc/milter-manager"}
|
|
: ${miltermanager_uid="mailnull"}
|
|
: ${miltermanager_gid="mail"}
|
|
: ${miltermanager_socket_gid="mail"}
|
|
: ${miltermanager_debug="NO"}
|
|
# Options other than above can be set with $miltermanager_flags.
|
|
# see milter-manager documentation for detail.
|
|
|
|
if [ -n "$2" ]; then
|
|
profile="$2"
|
|
if [ "x${miltermanager_profiles}" != "x" ]; then
|
|
pidfile="${_piddir}/${profile}.pid"
|
|
eval miltermanager_enable="\${miltermanager_${profile}_enable:-${miltermanager_enable}}"
|
|
eval miltermanager_cfgdir="\${miltermanager_${profile}_cfgdir:-}"
|
|
if [ ! -d "${miltermanager_cfgdir}" ];then
|
|
echo "You must set config directory for (miltermanager_${profile}_cfgdir)"
|
|
exit 1
|
|
fi
|
|
eval miltermanager_socket="\${miltermanager_${profile}_socket:-}"
|
|
|
|
command_args="--pid-file ${pidfile}"
|
|
|
|
if [ -d "${miltermanager_cfgdir}" ];then
|
|
command_args="${command_args} --config-dir=${miltermanager_cfgdir}"
|
|
fi
|
|
if [ -n "${miltermanager_uid}" ] ; then
|
|
command_args="${command_args} --user-name ${miltermanager_uid}"
|
|
fi
|
|
if [ -n "${miltermanager_gid}" ] ; then
|
|
command_args="${command_args} --group-name ${miltermanager_gid}"
|
|
fi
|
|
if [ -n "${miltermanager_socket_gid}" ] ; then
|
|
command_args="${command_args} --socket-group-name ${miltermanager_socket_gid}"
|
|
fi
|
|
if [ -n "${miltermanager_socket}" ] ; then
|
|
command_args="${command_args} --connection-spec ${miltermanager_socket}"
|
|
fi
|
|
command_args="${command_args} --daemon"
|
|
else
|
|
echo "$0: extra argument ignored"
|
|
fi
|
|
else
|
|
if [ "x${miltermanager_profiles}" != "x" -a "x$1" != "x" ]; then
|
|
if [ "x$1" != "xrestart" ]; then
|
|
for profile in ${miltermanager_profiles}; do
|
|
echo "===> miltermanager profile: ${profile}"
|
|
%%PREFIX%%/etc/rc.d/milter-manager $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
|
|
command_args="--pid-file ${pidfile}"
|
|
|
|
if [ -d "${miltermanager_cfgdir}" ];then
|
|
command_args="${command_args} --config-dir=${miltermanager_cfgdir}"
|
|
fi
|
|
if [ -n "${miltermanager_uid}" ] ; then
|
|
command_args="${command_args} --user-name ${miltermanager_uid}"
|
|
fi
|
|
if [ -n "${miltermanager_gid}" ] ; then
|
|
command_args="${command_args} --group-name ${miltermanager_gid}"
|
|
fi
|
|
if [ -n "${miltermanager_socket_gid}" ] ; then
|
|
command_args="${command_args} --socket-group-name ${miltermanager_socket_gid}"
|
|
fi
|
|
if [ -n "${miltermanager_socket}" ] ; then
|
|
command_args="${command_args} --connection-spec ${miltermanager_socket}"
|
|
fi
|
|
if checkyesno miltermanager_debug ; then
|
|
command_args="${command_args} --verbose"
|
|
else
|
|
command_args="${command_args} --daemon"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
manager_precmd ()
|
|
{
|
|
if [ ! -d ${_piddir} ] ; then
|
|
mkdir -p ${_piddir}
|
|
fi
|
|
if [ -n "${miltermanager_uid}" ] ; then
|
|
chown ${miltermanager_uid} ${_piddir}
|
|
fi
|
|
if [ -n "${miltermanager_gid}" ] ; then
|
|
chgrp ${miltermanager_gid} ${_piddir}
|
|
fi
|
|
}
|
|
|
|
manager_postcmd ()
|
|
{
|
|
# just if the directory is empty
|
|
rmdir ${_piddir} > /dev/null 2>&1
|
|
}
|
|
|
|
run_rc_command "$1"
|