[news.software.b] "de-junking" script

dhc@lanl.gov (Dave Carter) (08/18/90)

i need a script to go through my junk directory, and put the "junk"
articles where they belong, and creating the new newsgroup in the
active file if necessary.  our active file was missing a bunch of
newsgroups for a long time, and the junk directory has built up quite
a collection

i seem to remember someone posting something like this, but i was not
interested at the time.

thanks!

						- dave
dhc@lanl.gov

amos@taux01.nsc.com (Amos Shapir) (08/19/90)

Since this is a popular request, I decided to post:

[Quoted from the referenced article by dhc@lanl.gov (Dave Carter)]
>
>i need a script to go through my junk directory, and put the "junk"
>articles where they belong, and creating the new newsgroup in the
>active file if necessary.  our active file was missing a bunch of
>newsgroups for a long time, and the junk directory has built up quite
>a collection
>
>i seem to remember someone posting something like this, but i was not
>interested at the time.


		o /		o /		o /		o /
--Cut-here-------X---------------X---------------X---------------X----
		o \		o \		o \		o \

#!/bin/sh
# mvjunk.sh
#
# Move news files out of junk and into their proper directories,
# updating the active list and localgroups as we go.
# Unknown newsgroups found in junked articles are created by a newgroups
# article; the articles are then reposted in case the group is required
# across the local net, and to put the group creation into the news logs.
#
# TRW Advanced Technology Facility  STA 2-Jun-1985
#
# Modified 10/22/85-James M. Scardelis, SA, Warner Computer Systems
#       to create newsgroups locally only.
#
# Modified April 1989 David Wright  dww@stl.stc.co.uk
#	to fix bugs in group creation and make directories include parents
#
# Modified Aug. 1989 Amos Shapir amos@taux01.nsc.com
#	to repost found articles rather than mess around with the
#	active file.
#
# This program is in the public domain - do with it whatever you like.
#
#
# Actions taken and strange occurences are recorded in mvjunk-log.

# Set DISTRIB to cover your local net or organisation if you want any
# new groups found to be created across your net.   The default is local only

# This version is BSD-ish; to convert to sysV-ish systems, change 'hostname'
# to 'uname', and 'echo -n xxx' to 'echo xxx\c' .

DISTRIB=${DISTRIB-local}
INEWS=${INEWS-/usr/lib/news/inews}
HOST=${HOST-`hostname`}

JUNK=/usr/spool/news/junk
SPOOL=/usr/spool/news
LIB=/usr/lib/news

umask 22

cd $JUNK

if /bin/test -z "`ls`" ; then exit
fi

chmod u+wr *

for j in $JUNK/*
do
	for group in `egrep '^Newsgroups:' $j | head -1 | \
		sed 's;Newsgroups:[ 	];;' | \
		sed 's;,; ;g'`
	do
		echo "Found article $j for group $group" | tee -a $LIB/mvjunk-log
		l=`egrep '^Control:' $j`
		case "$l" in
		'')	: ;;
		*)	group="control";;
		esac
#
# Create group if necessary
#
		cd $SPOOL
		the_date=`date`
		entry=`egrep "^$group " $LIB/active`
		case "$entry" in
		'')	echo -n "Create group $group? "
			read answer
			case "$answer" in
			y*)	echo \
			    "Created $the_date to hold articles found in junk"|\
			    $LIB/inews -d $DISTRIB -C $group
			    echo "Created group $group at $the_date" \
			    >> $LIB/mvjunk-log
			    echo \
			    "$group	found in junk; created at $the_date" \
						>> $LIB/localgroups
			    ;;
			*) continue;;
			esac;;
		esac
#
# repost article
#
		sed -e "/^Path:/s/$HOST!//" -e '/^Message-ID:/s//Old-&/' \
		-e '/^Distribution:/d' -e '/^Lines:/{' \
		-e h -e "s/.*/Distribution: $DISTRIB/" -e G -e \} $j \
		| $LIB/inews -h
	done
	/bin/rm -i $j		# But my MOTHER lives in Hackensack!
done

		o /		o /		o /		o /
--Cut-here-------X---------------X---------------X---------------X----
		o \		o \		o \		o \
May the Source be with you, always...
-- 
	Amos Shapir		amos@taux01.nsc.com, amos@nsc.nsc.com
National Semiconductor (Israel) P.O.B. 3007, Herzlia 46104, Israel
Tel. +972 52 522408  TWX: 33691, fax: +972-52-558322 GEO: 34 48 E / 32 10 N