From e110a8aa3688e389a301d5630684594eb376fb10 Mon Sep 17 00:00:00 2001 From: sahil Date: Sun, 10 Jun 2012 18:58:16 +0000 Subject: - Add OPTION to install postfwd v2 rather than v1 and convert to new options framework. - Revise the rc.d script[1] with style and functionality improvements, one of which works around an upstream issue that obstructed operation of 'status' and other functions. Because this affects the default package, bump PORTREVISION. Reviewed by: dougb [1] --- mail/postfix-postfwd/Makefile | 26 +++++++++------ mail/postfix-postfwd/files/postfwd.in | 62 ++++++++++++++++++++++------------- 2 files changed, 56 insertions(+), 32 deletions(-) (limited to 'mail') diff --git a/mail/postfix-postfwd/Makefile b/mail/postfix-postfwd/Makefile index ff2d8d6e2b07..8dd844074a2f 100644 --- a/mail/postfix-postfwd/Makefile +++ b/mail/postfix-postfwd/Makefile @@ -7,6 +7,7 @@ PORTNAME= postfwd PORTVERSION= 1.32 +PORTREVISION= 1 CATEGORIES= mail MASTER_SITES= http://www.${PORTNAME}.org/old/ PKGNAMEPREFIX= postfix- @@ -21,37 +22,42 @@ RUN_DEPENDS= ${SITE_PERL}/${PERL_ARCH}/Net/DNS.pm:${PORTSDIR}/dns/p5-Net-DNS \ ${SITE_PERL}/${PERL_ARCH}/Storable.pm:${PORTSDIR}/devel/p5-Storable \ ${SITE_PERL}/${PERL_ARCH}/Time/HiRes.pm:${PORTSDIR}/devel/p5-Time-HiRes -PORTDOCS= arch.html ${PORTNAME}.CHANGELOG ${PORTNAME}.html \ - ${PORTNAME}.txt quick.html versions.html - +PORTDOCS= * PORTEXAMPLES= request.sample postfwd.plugins.sample -PLIST_FILES= bin/${PORTNAME} etc/${PORTNAME}.conf.sample +PLIST_FILES= bin/${PORTNAME} etc/${PORTNAME}.conf.sample SUB_FILES= pkg-message USE_RC_SUBR= ${PORTNAME} USE_PERL5_RUN= yes NO_BUILD= yes -MAN8= ${PORTNAME}.8 +MAN8= ${PORTNAME}.8 ${PORTNAME}2.8 -.include +OPTIONS_DEFINE= EXAMPLES DOCS POSTFWD2 +POSTFWD2_DESC= Install postfwd v2 rather than v1 + +.include do-install: +.if ${PORT_OPTIONS:MPOSTFWD2} + @${INSTALL_SCRIPT} ${WRKSRC}/sbin/${PORTNAME}2 ${PREFIX}/bin/${PORTNAME} +.else @${INSTALL_SCRIPT} ${WRKSRC}/sbin/${PORTNAME} ${PREFIX}/bin/ +.endif @${INSTALL_DATA} ${WRKSRC}/etc/${PORTNAME}.cf.sample ${PREFIX}/etc/${PORTNAME}.conf.sample - @${INSTALL_MAN} ${WRKSRC}/man/man8/${MAN8} ${MANPREFIX}/man/man8/ + @${INSTALL_MAN} ${WRKSRC}/man/man8/* ${MANPREFIX}/man/man8/ post-install: -.if !defined(NOPORTDOCS) +.if !empty(PORT_OPTIONS:MDOCS) @${INSTALL} -o ${DOCOWN} -g ${DOCGRP} -m 555 -d ${DOCSDIR} @cd ${WRKSRC}/doc/ && ${INSTALL_DATA} ${PORTDOCS} ${DOCSDIR} .endif -.if !defined(NOPORTEXAMPLES) +.if !empty(PORT_OPTIONS:MEXAMPLES) @${INSTALL} -o ${SHAREOWN} -g ${SHAREGRP} -m 555 -d ${EXAMPLESDIR} @${INSTALL_DATA} ${WRKSRC}/tools/request.sample ${EXAMPLESDIR} @${INSTALL_DATA} ${WRKSRC}/plugins/postfwd.plugins.sample ${EXAMPLESDIR} .endif @${CAT} ${PKGMESSAGE} -.include +.include diff --git a/mail/postfix-postfwd/files/postfwd.in b/mail/postfix-postfwd/files/postfwd.in index a2b57bd7c622..cd0087580faa 100644 --- a/mail/postfix-postfwd/files/postfwd.in +++ b/mail/postfix-postfwd/files/postfwd.in @@ -1,45 +1,63 @@ #!/bin/sh -# PROVIDE: postfwd +# $FreeBSD$ +# +# PROVIDE: postfwd # REQUIRE: LOGIN cleanvar # KEYWORD: shutdown # # Add the following lines to /etc/rc.conf.local or /etc/rc.conf # to enable this service: # -# postfwd_enable (bool): +# postfwd_enable (bool): # Set to "NO" by default. -# Set it to "YES" to enable postfwd. -# postfwd_config (path): Set to %%PREFIX%%/etc/postfwd.conf -# by default. -# +# Set it to "YES" to enable postfwd. +# postfwd_config (path): +# Set to %%PREFIX%%/etc/postfwd.conf +# by default. . /etc/rc.subr name=postfwd rcvar=postfwd_enable -command=%%PREFIX%%/bin/${name} -required_files=%%PREFIX%%/etc/${name}.conf -pidfile="/var/run/${name}.pid" +load_rc_config $name -stop_postcmd=stop_postcmd +: ${postfwd_enable:="NO"} +: ${postfwd_flags="--shortlog --summary=600 --cache=600 --cache-rbl-timeout=3600 --cleanup-requests=1200 --cleanup-rbls=1800 --cleanup-rates=1200"} -stop_postcmd() -{ - rm -f $pidfile -} +pidfile=${postfwd_pidfile:="/var/run/${name}.pid"} +required_files=${postfwd_config:="%%PREFIX%%/etc/${name}.conf"} -load_rc_config "$name" +command=%%PREFIX%%/bin/${name} +command_args="--daemon --file=${required_files} --pidfile=${pidfile} --interface=127.0.0.1 --port=10040 --user=nobody --group=nobody" + +start_precmd="${name}_check" +status_cmd="${name}_status" +stop_cmd="${command} -k --pidfile=${pidfile}" +stop_postcmd="rm -f ${pidfile}" +extra_commands="reload" +reload_cmd="${name}_reload" + +postfwd_check() { + if [ -f "${postfwd_pidfile}" ]; then + err 1 "${name} is already running." + fi +} -case "$postfwd_enable" in - [Yy][Ee][Ss] | 1 | [Oo][Nn] | [Tt][Rr][Uu][Ee]) ;; - *) echo "To make use of $name you must first set $rcvar=\"YES\" in /etc/rc.conf" ;; -esac +postfwd_status() { + postfwd_pid=`cat ${pidfile} 2>/dev/null` + postfwd_run=`ps -U nobody | grep -m 1 ${postfwd_pid} 2>/dev/null` + if [ -n "${postfwd_pid}" -a -n "${postfwd_run}" ]; then + echo "$name is running as ${postfwd_pid}" + else + echo "$name is not running" + fi +} -: ${postfwd_enable="NO"} -: ${postfwd_config="%%PREFIX%%/etc/${name}.conf"} +postfwd_reload() { -command_args="--shortlog --summary=600 --cache=600 --cache-rbl-timeout=3600 --cleanup-requests=1200 --cleanup-rbls=1800 --cleanup-rates=1200 -d -f ${required_files} -i 127.0.0.1 -p 10040 -u nobody -g nobody" + kill -HUP `cat $pidfile` +} run_rc_command "$1" -- cgit