[news.software.b] manual newgroups in C news

wisner@hayes.fai.alaska.edu (Bill Wisner) (08/25/90)

This is the newgroup script I use on my system to have notification of
newgroup messages mailed to me instead of having them automatically
executed. It is improved over the version that Chip Salzenebrg posted
a few weeks ago in that it handles cases where a group is having its
moderation status changed instead of being created.

You may need to edit the filename in line 13 if you don't use the
standard path for your C news configuration file.

Bill Wisner <wisner@hayes.fai.alaska.edu> Gryphon Gang Fairbanks AK 99775
"If you have a problem with one of my users, take it to me, and if
I need to kill them, I will." -- Eliot Lear <lear@turbo.bio.net>

#! /bin/sh
# newgroup group flag
#	subject to our sys file group pattern
#
# Modified by Chip Salzenberg, 7 June 1990.
# Send mail to Usenet administrator describing the newgroup request.
# But if group already exists with correct type, don't bother.
#
# Modified by Bill Wisner, 23 August 1990
# Properly handle changes in moderation status.

# =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
. ${NEWSCONFIG-/usr/lib/newsbin/config}
export NEWSCTL NEWSBIN NEWSARTS
PATH=$NEWSCTL/bin:$NEWSBIN/relay:$NEWSBIN:$NEWSPATH ; export PATH # include mkpdir
umask $NEWSUMASK

afile=/tmp/ncd
afilehdr=/tmp/ncdhdr
afilebody=/tmp/ncdbody
hdr=/tmp/nc$$

trap "exit 1" 1 2 3 13 15
trap "rm -f $hdr $afile $afilehdr $afilebody; exit 0" 0

$NEWSBIN/inject/tear $afile
$NEWSBIN/canonhdr <$afilehdr >$hdr

# unapproved ctl msg? then quit
grep -s '^Approved:' $hdr >/dev/null || { rm -f $hdr; exit 0; }

# quit if the group already exists in the form requested
pat="^`echo $1 | sed 's/\./\\\\./g'` "
type=`awk "/$pat/ { print \\$4; exit }" $NEWSCTL/active`

case "$type" in
x|=*)	exit 0 ;;
y)	test "" = "$2" && exit 0 ;;
m)	test "moderated" = "$2" && exit 0 ;;
esac

SENDER="`grep '^Sender:' $hdr | sed 's/^[^:]*: *//'`"
case "$SENDER" in
"")	SENDER="`grep '^From:' $hdr | sed 's/^[^:]*: *//' `" ;;
esac

if test "$type" -eq "y" -a "moderated" = "$2"; then
	( echo "$SENDER says"
	  echo "to change the group '$1' from unmoderated to moderated"
	  if test -s $afilebody; then
	  	echo "and adds this comment:";
		cat $afilebody
	  fi ) | mail $NEWSMASTER
	exit 0
fi

if test "$type" -eq "m" -a "moderated" != "$2"; then
	( echo "$SENDER says"
	  echo "to change the group '$1' from moderated to unmoderated"
	  if test -s $afilebody; then
		echo "and adds this comment:";
		cat $afilebody
	  fi ) | mail $NEWSMASTER
	exit 0
fi

( echo "$SENDER says"
  if test "moderated" = "$2"; then
	echo "to create the moderated group '$1'"
  else
	echo "to create the group '$1'"
  fi
  if test -s $afilebody; then
	echo "and adds this comment:";
	cat $afilebody
  fi ) | mail $NEWSMASTER