From 8c1d11010cab82f4bfde744dc311a1d534f2a1ee Mon Sep 17 00:00:00 2001 From: Sahil Tandon Date: Sun, 10 Jun 2012 18:58:16 +0000 Subject: [PATCH] - 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 | 60 +++++++++++++++++---------- 2 files changed, 55 insertions(+), 31 deletions(-) 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 +load_rc_config $name + +: ${postfwd_enable:="NO"} +: ${postfwd_flags="--shortlog --summary=600 --cache=600 --cache-rbl-timeout=3600 --cleanup-requests=1200 --cleanup-rbls=1800 --cleanup-rates=1200"} + +pidfile=${postfwd_pidfile:="/var/run/${name}.pid"} +required_files=${postfwd_config:="%%PREFIX%%/etc/${name}.conf"} + command=%%PREFIX%%/bin/${name} -required_files=%%PREFIX%%/etc/${name}.conf -pidfile="/var/run/${name}.pid" +command_args="--daemon --file=${required_files} --pidfile=${pidfile} --interface=127.0.0.1 --port=10040 --user=nobody --group=nobody" -stop_postcmd=stop_postcmd +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" -stop_postcmd() -{ - rm -f $pidfile +postfwd_check() { + if [ -f "${postfwd_pidfile}" ]; then + err 1 "${name} is already running." + fi } -load_rc_config "$name" +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 +} -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_reload() { -: ${postfwd_enable="NO"} -: ${postfwd_config="%%PREFIX%%/etc/${name}.conf"} - -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"