1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-02 06:03:50 +00:00
freebsd-ports/mail/milter-manager/files/milter-manager.in
Doug Barton 83eb2c3700 In the rc.d scripts, change assignments to rcvar to use the
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.
2012-01-14 08:57:23 +00:00

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"