#!/bin/sh
# $NetBSD: script,v 1.4 2005/01/18 18:12:55 peter Exp $

BIGLIST=`grep script /usr/share/sushi/system/inetdconf/form | \
    cut -f2,3 -d, | awk '{print $1}'`

BACKUPDIR="/var/sushi"
INETDCONF="/etc/inetd.conf"
BACKUP="${BACKUPDIR}/inetd.conf"

if [ ! -d $BACKUPDIR ]; then
	mkdir $BACKUPDIR
	chown root:wheel $BACKUPDIR
	chmod 700 $BACKUPDIR
fi

# create a backup
cp -p $INETDCONF $BACKUP
if [ $? -ne 0 ]; then
	echo "Can't create a backup"
	exit 1
fi

# temporary files
cp -p $BACKUP $BACKUP.new
cp -p $BACKUP $BACKUP.old

if [ "$1" = "YES" ]; then
	restart=YES
fi
shift

echo "Processing $INETDCONF"

j=0
for i in $BIGLIST
do
	j=`expr $j + 1`
	x=$(echo `eval echo \\$${j}`)
	A=`echo "$i" | sed -e 's@,@	.*	@'`
	B=`echo "$i" | sed -e 's@,@ @'`
	C=`/usr/share/sushi/system/inetdconf/script1 $B | grep YES`
	if [ -z "$C" -a $x = "YES" ]; then
		echo "Cannot enable service $B"
		continue
	fi
	C=`/usr/share/sushi/system/inetdconf/script1 $B | head -1`
	if [ $C = "YES" -a $x = "YES" ]; then
		continue
	fi
	if [ $C = "NO" -a $x = "NO" ]; then
		continue
	fi
	if [ $C = "YES" -a $x = "NO" ]; then
		echo "DISABLING service $B"
		sed "s@\(^$A	.*\)@#\1@" < $BACKUP.old > $BACKUP.new
		if [ $? -ne 0 ]; then
			echo "sed failed"
			rm -f $BACKUP.new $BACKUP.old
			exit 1
		fi
	fi
	if [ $C = "NO" -a $x = "YES" ]; then
		echo "ENABLING service $B"
		sed "s@^#\($A	.*\)@\1@" < $BACKUP.old > $BACKUP.new
		if [ $? -ne 0 ]; then
			echo "sed failed"
			rm -f $BACKUP.new $BACKUP.old
			exit 1
		fi
	fi
	cp -p $BACKUP.new $BACKUP.old
done

cp -p $BACKUP.new $INETDCONF

if [ $? -eq 0 ]; then
	echo "Successfully wrote a new $INETDCONF"
else
	echo "Failed to write a new $CONFFILE"
fi

rm -f $BACKUP.new $BACKUP.old

if [ "$restart" = "YES" ]; then
	/etc/rc.d/inetd reload
fi
