diff -ruN dkfilter.bak/Makefile dkfilter/Makefile --- dkfilter.bak/Makefile Fri Jul 28 21:25:46 2006 +++ dkfilter/Makefile Fri Jul 28 20:59:23 2006 @@ -24,12 +24,24 @@ GNU_CONFIGURE= yes USE_RC_SUBR= dkfilter_in dkfilter_out -WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION} +DKFILTER_USERNAME?= dkfilter +DKFILTER_USERID?= 325 +DKFILTER_GROUPNAME?= ${DKFILTER_USERNAME} +DKFILTER_GROUPID?= ${DKFILTER_USERID} + +SUB_FILES= pkg-install pkg-deinstall +SUB_LIST= USER=${DKFILTER_USERNAME} \ + UID=${DKFILTER_USERID} \ + GROUP=${DKFILTER_GROUPNAME} \ + GID=${DKFILTER_GROUPID} .include .if ${PERL_LEVEL} < 500600 IGNORE= require Perl 5.8 or newer. Install lang/perl5.8 and try again .endif + +pre-install: + ${SH} ${PKGINSTALL} ${PREFIX} PRE-INSTALL .include diff -ruN dkfilter.bak/files/dkfilter_in.in dkfilter/files/dkfilter_in.in --- dkfilter.bak/files/dkfilter_in.in Fri Jul 28 21:25:46 2006 +++ dkfilter/files/dkfilter_in.in Fri Jul 28 21:21:33 2006 @@ -20,10 +20,10 @@ # set defaults -dkfilter_in_enable=${dkfilter_in_enable:-"NO"} -dkfilter_in_flags=${dkfilter_in_flags:-"127.0.0.1:10025 127.0.0.1:10026"} -dkfilter_in_pidfile=${dkfilter_in_pidfile:-"/var/run/dkfilter_in.pid"} -dkfilter_in_user=${dkfilter_in_user:-"dkfilter"} +: ${dkfilter_in_enable="NO"} +: ${dkfilter_in_flags="127.0.0.1:10025 127.0.0.1:10026"} +: ${dkfilter_in_pidfile="/var/run/dkfilter_in.pid"} +: ${dkfilter_in_user="dkfilter"} start_cmd="dkfilter_in_start" stop_cmd="dkfilter_in_stop" @@ -34,12 +34,23 @@ echo "${name} already running?" exit 1 fi + echo "Starting ${name}." + logger -t ${name} "Starting ${name}" + tmpfile=`mktemp /tmp/dkfilter.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX` touch ${dkfilter_in_pidfile} chown ${dkfilter_in_user} ${dkfilter_in_pidfile} su -m ${dkfilter_in_user} -c "daemon -p ${dkfilter_in_pidfile} \ %%PREFIX%%/bin/dkfilter.in ${dkfilter_in_flags}" \ - > /dev/null 2>&1 - echo "Starting ${name}" + > /dev/null 2> ${tmpfile} + sleep 1 # XXX: wait until dkfilter start. + logger -t ${name} `cat ${tmpfile}` + err=`grep Error ${tmpfile}` + if [ "${err}" ]; then + echo "Failed to start ${name}." + echo "${err}" + rm -f ${dkfilter_in_pidfile} + fi + rm -f ${tmpfile} } dkfilter_in_stop() diff -ruN dkfilter.bak/files/dkfilter_out.in dkfilter/files/dkfilter_out.in --- dkfilter.bak/files/dkfilter_out.in Fri Jul 28 21:25:46 2006 +++ dkfilter/files/dkfilter_out.in Fri Jul 28 21:21:09 2006 @@ -23,13 +23,13 @@ # set defaults -dkfilter_out_enable=${dkfilter_out_enable:-"NO"} -dkfilter_out_flags=${dkfilter_out_flags:-" --header \ +: ${dkfilter_out_enable="NO"} +: ${dkfilter_out_flags=" --header \ --keyfile=%%PREFIX%%/etc/dkfilter/private.key \ --selector=selector1 --domain=example.org --method=nofws \ 127.0.0.1:10027 127.0.0.1:10028"} -dkfilter_out_pidfile=${dkfilter_out_pidfile:-"/var/run/dkfilter_out.pid"} -dkfilter_out_user=${dkfilter_out_user:-"dkfilter"} +: ${dkfilter_out_pidfile="/var/run/dkfilter_out.pid"} +: ${dkfilter_out_user="dkfilter"} start_cmd="dkfilter_out_start" stop_cmd="dkfilter_out_stop" @@ -40,12 +40,23 @@ echo "${name} already running?" exit 1 fi + echo "Starting ${name}." + logger -t ${name} "Starting ${name}." + tmpfile=`mktemp /tmp/dkfilter.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX` touch ${dkfilter_out_pidfile} chown ${dkfilter_out_user} ${dkfilter_out_pidfile} su -m ${dkfilter_out_user} -c "daemon -p ${dkfilter_out_pidfile} \ %%PREFIX%%/bin/dkfilter.out ${dkfilter_out_flags}" \ - > /dev/null 2>&1 - echo "Starting ${name}." + > /dev/null 2> ${tmpfile} + sleep 1 # XXX: wait until dkfilter start. + logger -t ${name} `cat ${tmpfile}` + err=`grep Error ${tmpfile}` + if [ "${err}" ]; then + echo "Failed to start ${name}." + echo "${err}" + rm -f ${dkfilter_out_pidfile} + fi + rm -f ${tmpfile} } dkfilter_out_stop() diff -ruN dkfilter.bak/files/pkg-deinstall.in dkfilter/files/pkg-deinstall.in --- dkfilter.bak/files/pkg-deinstall.in Thu Jan 1 09:00:00 1970 +++ dkfilter/files/pkg-deinstall.in Fri Jul 28 20:55:23 2006 @@ -0,0 +1,13 @@ +#!/bin/sh +# $FreeBSD$ + +if [ "$2" != "POST-DEINSTALL" ]; then + exit 0 +fi + +USERNAME=%%USER%% + +if pw usershow "${USERNAME}" 2>/dev/null 1>&2; then + echo "To delete ${USERNAME} user permanently, use 'pw userdel \"${USERNAME}\"'" +fi +exit 0 diff -ruN dkfilter.bak/files/pkg-install.in dkfilter/files/pkg-install.in --- dkfilter.bak/files/pkg-install.in Thu Jan 1 09:00:00 1970 +++ dkfilter/files/pkg-install.in Fri Jul 28 20:56:00 2006 @@ -0,0 +1,36 @@ +#! /bin/sh +# +# $FreeBSD$ + +PATH=/bin:/usr/bin:/usr/sbin + +case $2 in + +PRE-INSTALL) + echo "---> Starting install script:" + + if [ -z "%%USER%%" -o -z "%%GROUP%%" -o \ + -z "%%UID%%" -o -z "%%GID%%" ]; then + echo "ERROR: A required pragma was empty" + exit 1 + fi + + # Create group if required + if pw group show "%%GROUP%%" >/dev/null 2>&1; then + echo "---> Using existing group \"%%GROUP%%\"" + else + echo "---> Adding group \"%%GROUP%%\" (%%GID%%)" + /usr/sbin/pw groupadd %%GROUP%% -g %%GID%% || exit 1 + fi + + # Create user if required + if pw user show "%%USER%%" >/dev/null 2>&1; then + echo "---> Using existing user \"%%USER%%\"" + else + echo "---> Adding user \"%%USER%%\" (%%UID%%)" + pw useradd "%%USER%%" -u "%%UID%%" -g "%%GROUP%%" -h - \ + -d "/nonexistent" -s "/sbin/nologin" -c "DK Filter Owner" || exit 1 + fi + ;; + +esac