pantz@mth.msu.edu (Tzu-Hsi Pan) (01/18/90)
I'm interested in setting up a bridge such that mailing list members can receive news from a particular USENET news group and they can also post news to USENET thru the bridge. I'm sure this has been done in lots of sites. Could some one tell me how to do it as well as where to find the proper software if needed? Thanks. Pan (pantz@mth.msu.edu)
zmact61@tsun4.doc.ic.ac.uk.doc.ic.ac.uk (D Spinellis) (01/23/90)
In article <6062@cps3xx.UUCP> pantz@mth.msu.edu (Tzu-Hsi Pan) writes: > >I'm interested in setting up a bridge such that mailing list members >can receive news from a particular USENET news group and they can also >post news to USENET thru the bridge. The following script provides the USENET to mailing list function. It connects to a host running nntp and automatically creates a digest of all articles that appeared in the newsgroup since the last time it was run together with instructions to forward it to a list. Change the actual script in order to configure it for your needs. The output of the script needs to be piped to sh, so you will probably run it with a crontab entry like: 30 03 * * * /usr/local/bin/newsgate | sh There must be more comprehensive and sophisticated programs available. This script however works and is very easy to configure. There is a feature for adding articles local to the digest. The whole script needs named pipes. Diomidis #! /bin/sh # This is a shell archive, meaning: # 1. Remove everything above the #! /bin/sh line. # 2. Save the resulting text in a file. # 3. Execute the file with /bin/sh (not csh) to create the files: # newsgate # This archive created: Mon Jan 22 20:18:55 1990 export PATH; PATH=/bin:$PATH echo shar: extracting "'newsgate'" '(3209 characters)' if test -f 'newsgate' then echo shar: will not over-write existing file "'newsgate'" else sed 's/^X//' << \SHAR_EOF > 'newsgate' X#!/bin/sh X# Create a news digest from a newsgroups list using an nntp server. X# The output of the command can be fed to sh to mail the digest off. X# X# (C) Copyright 1989 Diomidis Spinellis. All rights reserved. X# X# Redistribution and use in source and binary forms are permitted X# provided that the above copyright notice and this paragraph are X# duplicated in all such forms. X# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR X# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED X# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. X XNEWSGATESPOOL=/usr/local/spool/digest X# The nntp host XHOST=uunet.uu.net X X# Groups to digest XGROUPS="comp.sources.unix comp.sources.misc alt.sources" X X# Where the numbers of the last articles forwarded are kept XLAST=$NEWSGATESPOOL/last X X# Local messages. Automatically erased after used. X# Each local article must be terminated with 78i- (A line of 78 -) XLOCAL=$NEWSGATESPOOL/local X X# Digest number XNUMBERFILE=$NEWSGATESPOOL/nf XNUMBER=`cat $NUMBERFILE 2>/dev/null || echo 1` X X# People who receive the digest. Must be comma separated. XRECEIVERS='user1@foo.bar, user2@bar.foo, user3@foo.bar, X user4, user5@foobar' XSRECEIVERS=`echo $RECEIVERS | sed -e 's/,//g'` X X# We need this so that telnet does not see a file close. Xrm -f cmds cmds1 X/usr/etc/mknod cmds p X/usr/etc/mknod cmds1 p X X# Ask for the articles available in the groups we are interested in X( X for i in $GROUPS X do X echo group $i X done X echo quit X) >cmds & X# Feed nntp with them and create nntp commands to print each article X( X # This is the list of articles already used. They are refixed by HHH X cat $LAST 2>/dev/null || X # If file does not exist initialise to 0 X for i in $GROUPS X do X echo "HHH $i 0" X done X # Make it zero longth so we can append the new ones X cp /dev/null $LAST X # This will print the available articles prefixed by 211 X telnet gould nntp <cmds 2>/dev/null X) | X/bin/awk ' X# Already sent X/^HHH/ { X last[$2] = $3 X} X# Articles available X/^211/ { X if (last[$5] > $3) X first = last[$5] + 1 X else X first = $3 X print "group", $5 X for (i = first; i < $4; i++) X print "article", i X # Update the last file X print "HHH", $5, $4 >>"'$LAST'" X} XEND { X print "quit" X} X' >cmds1 & X X# Now get the articles and create the batch Xtelnet gould nntp <cmds1 2>/dev/null | Xsed -n -e ' X# Do not print anything that comes of telnet after connection is closed X/^205.*closing connection\. Goodbye\.$/q X# Print only some items from the header X/^220.*Article retrieved; head and body follow\.$/,/^$/ { X /^From/p X /^Subject/p X /^Date/p X /^Newsgroups/p X} X# Print all the body X/^$/,/^\./p X' | X( Xcat <<EOF X#!/bin/sh X/usr/lib/sendmail -i "$SRECEIVERS" <<\END_SOURCES XDate: `date` XTo: $RECEIVERS XFrom: Source Digest <source@foo.bar> XSubject: The Source Groups Digest $NUMBER X XThis digest contains all articles posted in the USENET newsgroups Xcomp.sources.misc, comp.sources.unix and alt.sources. X X------------------------------------------------------------------------------ X`cat $LOCAL` X XEOF Xsed -e 's/^\./------------------------------------------------------------------------------/' Xecho END_SOURCES X) X Xexpr $NUMBER + 1 >$NUMBERFILE Xrm -f cmds cmds1 Xcp /dev/null $LOCAL SHAR_EOF if test 3209 -ne "`wc -c < 'newsgate'`" then echo shar: error transmitting "'newsgate'" '(should have been 3209 characters)' fi fi # end of overwriting check # End of shell archive exit 0 -- Diomidis Spinellis Internet: dds@cc.ic.ac.uk Department of Computing BITNET: dds@cc.ic.ac.uk Imperial College UUCP: ...!cernvax!cc.imperial.ac.uk!dds London SW7 2BZ JANET: dds@uk.ac.ic.cc