File ngircd-start-pre of Package ngircd

#!/bin/bash
#
# Set up chroot environment for ngircd
# when required by /etc/ngircd.conf
#
   CONFIG='/etc/ngircd.conf'
     MOTD='/etc/ngircd.motd'
CHROOTDIR='/var/lib/ngircd'
# Actual directory set by spec file
   PIDDIR='__piddir__'
      TAB='	'
    WHICH='/usr/bin/which'
    CPCMD=$($WHICH cp)
       CP="$CPCMD -du --preserve=all"
    MDCMD=$($WHICH mkdir)
       MD="$MDCMD -p"
    RMCMD=$($WHICH rm)
       RM="$RMCMD -f"
    LNCMD=$($WHICH ln)
       LN="$LNCMD -sf"
      CAT=$($WHICH cat)
    CHOWN=$($WHICH chown)
    CHMOD=$($WHICH chmod)
      SED='/usr/bin/sed'
     USER='ngircd'
    GROUP='ngircd'

warn_user()
{
	echo -e "*** WARNING ***"
	echo -e $1
}

if test -r $CONFIG ; then
	CHROOTED=$($CAT $CONFIG | $SED \
	-e "/ChrootDir/!d; /^[$TAB ]*[;#]/d" \
	-e "s|.*ChrootDir *= *$CHROOTDIR *|foobar|" \
	-e 's/.*ChrootDir.*/false/; s/foobar/true/' | /usr/bin/tail -n 1)
	if test -z "$CHROOTED" ; then
		if ! test -d ${PIDDIR} ; then
			$MD ${PIDDIR}
			$CHOWN $USER.$GROUP ${PIDDIR}
		fi
		if test -L $PIDDIR/ngircd.pid ; then
			$RM $PIDDIR/ngircd.pid
		fi
		exit 0
	elif ! $CHROOTED ; then
		warn_user "Chroot directory for ngircd must be $CHROOTDIR"
		exit 1
	fi
else
	warn_user "File $CONFIG not found. This should not happen."
	exit 1
fi

# Set up chroot environment
if $CHROOTED ; then
	if test -r /lib64/libresolv.so.2 ; then
		LIBDIR='lib64'
	else
		LIBDIR='lib'
	fi

	$MD $CHROOTDIR/$LIBDIR
	$MD $CHROOTDIR/$LIBDIR/security
	$MD $CHROOTDIR/usr/$LIBDIR
	$CP /$LIBDIR/libresolv* $CHROOTDIR/$LIBDIR/
	$CP /$LIBDIR/libnss_*   $CHROOTDIR/$LIBDIR/
	$CP /$LIBDIR/security/pam_permit.so $CHROOTDIR/$LIBDIR/security/
	$CP /$LIBDIR/security/pam_warn.so   $CHROOTDIR/$LIBDIR/security/
	$CP /$LIBDIR/security/pam_deny.so   $CHROOTDIR/$LIBDIR/security/
	$LN ../../$LIBDIR/libresolv.so.2 $CHROOTDIR/usr/$LIBDIR/libresolv.so

	LIBNSS=$(ls -1 /usr/$LIBDIR/libnss_*)
	for LINK in $LIBNSS ; do
		TRUNC=$(echo $LINK | sed -e 's|^/usr||')
		TARGET=$(ls -1 $TRUNC.*)
		$LN ../..$TARGET ${CHROOTDIR}$LINK
	done

	$MD $CHROOTDIR/etc/pam.d
	$CP /etc/hosts         $CHROOTDIR/etc/
	$CP /etc/nsswitch.conf $CHROOTDIR/etc/
	$CP /etc/resolv.conf   $CHROOTDIR/etc/
	$CP /etc/pam.d/ngircd  $CHROOTDIR/etc/pam.d/
	$CP /etc/pam.d/other   $CHROOTDIR/etc/pam.d/
	$CP $CONFIG            $CHROOTDIR/etc/
	$CHOWN root.$GROUP     ${CHROOTDIR}${CONFIG}
	if test -r $MOTD ; then
		$CP $MOTD      $CHROOTDIR/etc/
	fi

	$CAT /etc/passwd | /usr/bin/sed -e '/^ngircd/!d' \
		> $CHROOTDIR/etc/passwd

	$CAT /etc/group | /usr/bin/sed -e '/^ngircd/!d' \
		> $CHROOTDIR/etc/group

	if ! test -d ${CHROOTDIR}${PIDDIR} ; then
		$MD ${CHROOTDIR}${PIDDIR}
		$CHOWN $USER.$GROUP ${CHROOTDIR}${PIDDIR}
		$CHMOD g-w          ${CHROOTDIR}${PIDDIR}
	fi

	if ! test -d $PIDDIR ; then
		$MD $PIDDIR
		$CHOWN $USER.$GROUP $PIDDIR
	fi

	$RM $PIDDIR/ngircd.pid
	$LN ${CHROOTDIR}${PIDDIR}/ngircd.pid $PIDDIR/ngircd.pid
fi
openSUSE Build Service is sponsored by