#!/bin/sh
#
# $Id: vadddomain_handle.in,v 2.27 2023-12-03 15:43:38+05:30 Cprogrammer Exp mbhangui $

domaindir=/var/indimail
use_etrn=0
OPTS=$(getopt -o ateh:T:q:l:bB:E:u:vVRi:g:d:Or:CD:H:U:P:s:p:cfm:S:I: -- "$@")
eval set -- "$OPTS"
while true; do
	case "$1" in
		-t)
		use_etrn=1
		shift 1
		;;
		-a|-e|-b|-v|-V|-R|-O|-C|-c|-f|-A)
		shift 1
		;;
		-d)
		domaindir=$2
		shift 2
		;;
		-T)
		use_etrn=2
		shift 2
		;;
		-h|-q|-l|-B|-E|-u|-i|-g|-d|-r|-D|-H|-U|-P|-s|-p|-c|-m|-S|-I)
		shift 2
		;;
		--)
		shift
		break
		;;
		*)
		echo "$0: invalid option [$1]" 1>&2
		break
		;;
	esac
done
set $@
domain=$1

if [ -n "$CONTROLDIR" ] ; then
	controldir=$CONTROLDIR
else
	controldir=/etc/indimail/control
fi
echo "domain=$domain domaindir=$domaindir, controldir=$controldir"

# send sighup to inlookup service to reload domains
cd /
(
if [ -n "$SERVICEDIR" ] ; then
	servicedir=$SERVICEDIR
else
	servicedir=/service*
fi
if [ $use_etrn -eq 0 ] ; then
	/bin/ls $servicedir/qmail-smtpd.*/variables/PLUGIN*init 2>/dev/null | sed s'{/variables/.*{{'g 
	/bin/ls -d $servicedir/inlookup.*
fi
/bin/ls -d $servicedir/*-send.*
) | while read line
do
	echo "Sending SIGHUP to $line"
	/usr/bin/svc -h $line
done

if [ $use_etrn -eq 0 ] ; then
	# print domain information
	/usr/bin/vdominfo $domain

	# create user for bogofilter
	echo "Creating standard users for spam filter (bogofilter)"
	for i in ham spam register-ham register-spam
	do
		/usr/bin/valias -i '&'"B"$i $i@$domain
		if [ $? -eq 0 ] ; then
			printf "Created alias %30s --> &B%s\n" $i@$domain $i
		fi
	done
	echo
	echo "Creating pre and post filters prefilt@$domain, postfilt@$domain"
	for i in prefilt postfilt
	do
		/usr/bin/vadduser -d -e $i@$domain  xxxxxxxx
		echo
	done

	# create rule for moving spam, virus emails to folders
	echo "creating rules for spam, virus detected emails"
	/usr/bin/vcfilter -i -t  spamFilter -c "Starts with" -k "Yes, spamicity=" -f Spam   -b 0 -h "X-Bogosity" \
		prefilt@$domain
	if [ $? -eq 0 ] ; then
		echo "Created prefilter to filter SPAM"
	fi
	/usr/bin/vcfilter -i -t virusFilter -c "Equals" -k "virus found" -f Quarantine -b 0 -h "X-QHPSI" \
		prefilt@$domain
	if [ $? -eq 0 ] ; then
		echo "Created prefilter to filter virus"
	fi
	echo

	echo "Domain Directory content"
	# display domain directory
	/bin/ls -dl $domaindir/domains/$domain
	/bin/ls -al $domaindir/domains/$domain
	echo
else
	echo "Domain Directory content"
	# display domain directory
	if [ -d $domaindir/autoturn/$domain ] ; then
		/bin/ls -dl $domaindir/autoturn/$domain
		/bin/ls -al $domaindir/autoturn/$domain
	else
		d=$(grep $domain: $controldir/virtualdomains | cut -d: -f2 | sed 's/autoturn-//')
		/bin/ls -dl $domaindir/autoturn/$d
		/bin/ls -al $domaindir/autoturn/$d
	fi
	echo
fi

# get securely chown, chmod path
PATH=/usr/bin:/usr/sbin:/bin
chown=$(which chown)
chmod=$(which chmod)
sort=$(which sort)
grep=$(which grep)
# add the domain to spamignore, nodnscheck
for i in spamignore nodnscheck
do
	echo "adding $domain to $controldir/$i control file"
	if [ -f $controldir/$i ] ; then
		$grep -w @"$domain" $controldir/$i > /dev/null
		if [ $? -ne 0 ] ; then
			echo @"$domain" >> $controldir/$i
			$sort -u $controldir/$i -o $controldir/$i
		fi
	else
		echo @"$domain" > $controldir/$i
	fi
	$chown root:qmail $controldir/$i
	if [ "$i" = "spamignore" ] ; then
		# 664 for roundcube plugin to modify
		$chmod 664 $controldir/$i
	else
		$chmod 644 $controldir/$i
	fi
done
echo
if [ $use_etrn -eq 0 ] ; then
	vuserinfo postmaster@$domain
fi
exit 0
#
# $Log: vadddomain_handle.in,v $
# Revision 2.27  2023-12-03 15:43:38+05:30  Cprogrammer
# fix for ETRN, ATRN domains
#
# Revision 2.26  2023-11-26 19:55:28+05:30  Cprogrammer
# handle etrn/atrn domain creation
#
# Revision 2.25  2023-09-05 21:48:01+05:30  Cprogrammer
# allow both textual and numberical values for -c and -h option
#
# Revision 2.24  2023-08-07 17:38:12+05:30  Cprogrammer
# updated argument list for getopt
#
# Revision 2.23  2023-07-31 21:51:18+05:30  Cprogrammer
# cd to root before doing svc -h
#
# Revision 2.22  2023-03-20 10:29:40+05:30  Cprogrammer
# handle all command line arguments passed to vadddomain
# use SERVICEDIR env variable if set for service directory
#
# Revision 2.21  2022-11-05 21:12:54+05:30  Cprogrammer
# added vuserinfo of postmaster account
#
# Revision 2.20  2020-09-21 07:57:01+05:30  Cprogrammer
# added /usr/sbin for FreeBSD for chown command
#
# Revision 2.19  2020-05-26 11:21:29+05:30  Cprogrammer
# make spamignore writeable for roundcube
#
# Revision 2.18  2020-05-25 00:05:59+05:30  Cprogrammer
# use root:qmail permission for spamignore, nodnscheck
#
# Revision 2.17  2018-01-27 10:11:44+05:30  Cprogrammer
# updated comment
#
# Revision 2.16  2017-03-29 22:11:31+05:30  Cprogrammer
# add domain entry to nodnscheck
#
# Revision 2.15  2016-05-22 23:22:48+05:30  Cprogrammer
# fhs compliance
#
# Revision 2.14  2016-05-17 23:16:42+05:30  Cprogrammer
# set domain directory as set by configure
#
# Revision 2.13  2016-05-17 14:43:59+05:30  Cprogrammer
# use control directory defined by configure
#
# Revision 2.12  2016-05-16 22:31:19+05:30  Cprogrammer
# issue sighup to qmail-smtpd if tcpserver plugin has been configured to reload control files
#
# Revision 2.11  2014-04-15 23:17:29+05:30  Cprogrammer
# avoid grep if spamignore does not exist
#
# Revision 2.10  2013-08-03 20:22:25+05:30  Cprogrammer
# send sighup to qmail-send
#
# Revision 2.9  2013-07-21 16:08:49+05:30  Cprogrammer
# fix permission of spamignore
#
# Revision 2.8  2013-05-13 08:57:20+05:30  Cprogrammer
# use ./configure setting for indimail directory
#
# Revision 2.7  2013-04-29 22:52:31+05:30  Cprogrammer
# added domain to spamignore control file
#
# Revision 2.6  2013-03-05 23:40:27+05:30  Cprogrammer
# corrected header to X-Bogosity instead of received for spam filter rule
#
# Revision 2.5  2012-06-20 19:04:47+05:30  Cprogrammer
# fix for recursive emails when email sent to training ids
#
# Revision 2.4  2011-06-01 18:49:30+05:30  Cprogrammer
# added rule for filtering virus infected mails & putting them in quarantine folder
#
# Revision 2.3  2010-05-17 14:24:59+05:30  Cprogrammer
# create home directory for prefilt, postfilt
#
# Revision 2.2  2010-05-01 15:13:19+05:30  Cprogrammer
# added users prefilt, postfilt for pre & post filters
# added rule for moving spam mails to Spam folder
#
# Revision 2.1  2010-04-23 09:21:51+05:30  Cprogrammer
# post handle for vadddomain
#
