diff options
author | jlam <jlam> | 2002-07-31 15:48:31 +0000 |
---|---|---|
committer | jlam <jlam> | 2002-07-31 15:48:31 +0000 |
commit | a3794159c1d88ad897f73245a99176d76cab0db7 (patch) | |
tree | f4660b86b9ae87ea594854a67a3eba86eb1e503b /mail/cyrus-imapd/files | |
parent | ecd059a0cfcc5a7ba7aac4240db354c2de4b33ee (diff) | |
download | pkgsrc-a3794159c1d88ad897f73245a99176d76cab0db7.tar.gz |
Add a cyrus rc.d script that will generate the directories needed before
starting the Cyrus master process.
Diffstat (limited to 'mail/cyrus-imapd/files')
-rw-r--r-- | mail/cyrus-imapd/files/cyrus.sh | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/mail/cyrus-imapd/files/cyrus.sh b/mail/cyrus-imapd/files/cyrus.sh new file mode 100644 index 00000000000..1f22318315b --- /dev/null +++ b/mail/cyrus-imapd/files/cyrus.sh @@ -0,0 +1,78 @@ +#!/bin/sh +# +# $NetBSD: cyrus.sh,v 1.1 2002/07/31 15:48:32 jlam Exp $ +# +# PROVIDE: cyrus +# REQUIRE: DAEMON +# +# To start cyrus-imapd at startup, copy this script to /etc/rc.d and set +# cyrus=YES in /etc/rc.conf. + +if [ -f /etc/rc.subr ]; then + . /etc/rc.subr +fi + +rcd_dir=`@DIRNAME@ $0` + +name="cyrus" +rcvar=$name +command="@PREFIX@/cyrus/bin/master" +command_args="& sleep 2" +required_files="@PKG_SYSCONFDIR@/cyrus.conf @IMAPDCONF@" +extra_commands="mkimap reload" + +mkimap_cmd="cyrus_mkimap" +start_precmd="cyrus_prestart" + +cyrus_prestart() +{ + # Check to see if "configdirectory" is present before we start + # the Cyrus IMAP server. Otherwise, we run mkimap to generate + # the necessary directories. + # + if [ -f @IMAPDCONF@ ]; then + configdir=` \ + @AWK@ '/^configdirectory:/ { print $2; exit };' \ + @IMAPDCONF@ \ + ` + if [ -z "$configdir" ]; then + @ECHO@ "@IMAPDCONF@ missing 'configdirectory' setting" + exit 1 + fi + if [ ! -d "$configdir" ]; then + $rcd_dir/cyrus mkimap + fi + fi +} + +cyrus_mkimap() +{ + # Generate the prerequisite directory structure for Cyrus IMAP. + if [ -f @IMAPDCONF@ ]; then + imap_dirs=` + @AWK@ '/^configdirectory:/ { print $2 }; \ + /^partition-.*:/ { print $2 }; \ + /^sievedir:/ { print $2 }' \ + @IMAPDCONF@ \ + ` + for dir in ${imap_dirs}; do + if [ ! -d ${dir} ]; then + @MKDIR@ ${dir} + @CHMOD@ 750 ${dir} + @CHOWN@ @CYRUS_USER@ ${dir} + @CHGRP@ @CYRUS_GROUP@ ${dir} + fi + done + @SU@ -m @CYRUS_USER@ -c "@PREFIX@/cyrus/bin/mkimap" + fi +} + +if [ -f /etc/rc.subr -a -f /etc/rc.conf \ + -a -d /etc/rc.d -a -f /etc/rc.d/DAEMON ]; then + load_rc_config $name + run_rc_command "$1" +else + @ECHO@ -n " ${name}" + eval ${start_precmd} + ${command} ${cyrus_flags} ${command_args} +fi |