[news.software.b] NNTP and C News

lamy@ai.utoronto.ca (Jean-Francois Lamy) (07/04/89)

I did the context diffs for C news 1.5.5.  I advise that you ignore the
sources in the C news distribution, as they are for 1.5 (which Geoff is
still running).  The safest course of action is for you to get nntp 1.5.5
from neat.ai.toronto.edu (128.100.1.65) and to get the C news diffs from
there as well.  Unpack, unshar the shar file to create batch.c, and apply
the diffs with patch.  You will have a vanilla 1.5.5.C that you can customize
for your site.

The rest of the installation is exactly like 1.5.5.  You should specify the
location of the list of articles in your sys file to match what your nntpsend
expects.

If you want, you can use the enclosed nntpsend, which locks things "C news
style" and does not rely on the file of article paths "cooling off" like
nntpsend currently does.  It also assumes that the lists of articles togo are
under spool/out.going like the rest of C news batching does.  I chose that
over doing a "vianntp" batcher because I prefer running nntpsend
independently.  You can run as many of those nntpsends at the same time
as you wish, they lock properly.  I even had them running after each 
relaynews for an afternoon...

I have also enclosed our sys file, should you need an example.

Jean-Francois Lamy               lamy@ai.utoronto.ca, uunet!ai.utoronto.ca!lamy
AI Group, Department of Computer Science, University of Toronto, Canada M5S 1A4
-------------------------------------------------------------------------------
#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# If this archive is complete, you will see the following message at the end:
#		"End of shell archive."
#
# Contents:
#   nntpsend sys
#
# Wrapped by lamy@ai.utoronto.ca on Mon Jul  3 21:18:11 1989
#
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f nntpsend -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"nntpsend\"
else
echo shar: Extracting \"nntpsend\" \(2854 characters\)
sed "s/^X//" >nntpsend <<'END_OF_nntpsend'
X#!/bin/sh
X#
X# nntpsend site1 ... siten
X# send nntp batches to remote sites, C news style.
X#
X# Author: Jean-Francois Lamy, lamy@ai.utoronto.ca, 1989-06-27
X#
X# We assume that the file of articles to be sent is found under
X# $NEWSARTS/out.going/iname/togo, where iname is the site's internet name.
X# this may requre a $NEWSLIB/sys entry with an explicit location specified
X# if the Usenet name differs, as in the last field of:
X#
X# utstat:comp,news,ut,tor,can,ont,uw,list/all:F:utstat.toronto.edu/togo
X#
X# A togo.next file in the site directory may contain articles left over from
X# previous transmissions (we append togo to togo.next, call nntpxmit on
X# togo.next and it leaves failed articles there).
X
X# =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
X. ${NEWSCONFIG-/news/bin/config}
X
X# we assume $NEWSBIN/nntp is where nntpxmit lives; adjust appropriately
XPATH=$NEWSBIN/nntp:$NEWSCTL/bin:$NEWSBIN/batch:$NEWSBIN:$NEWSPATH 
Xexport PATH
Xumask $NEWSUMASK
X
Xpname=`basename $0`
Xecho ${pname}: "[$$]" begin `date`
X
Xfor host in ${remotes=$*}
Xdo
X	cd $NEWSARTS/out.going/$host
X	
X	if test -s togo || test -s togo.next
X	then
X
X		# we have articles to send to $host. Lock the news system, so
X		# that we can be sure that "togo" does not change while we
X		# append it to the list of things to send out.  If we don't do
X		# that, and relaynews is in a long batch, we could actually
X		# catch up with relaynews and then we would need some hairy
X		# stuff to deal with that.
X
X		lock="$NEWSCTL/LOCK"		# lock relaynews.
X		ltemp="$NEWSCTL/L.$$"
X		echo $$ >$ltemp
X		trap "rm -f $ltemp ; exit 0" 0 1 2 15
X		while true
X		do
X			if newslock $ltemp $lock
X			then
X				trap "rm -f $ltemp $lock ; exit 0" 0 1 2 15
X				break
X			fi
X			sleep 30
X		done
X
X		# while relaynews is locked, append the articles to go to
X		# the togo.next file for the current site. lock current site
X		# until nntpxmit completes, so we can unlock relaynews asap.
X
X		nntplock="$NEWSCTL/LOCKnntpsend.$host"
X		if newslock $ltemp $nntplock
X		then 	
X			# we have togo.next all to ourselves
X			trap "rm -f $nntplock $ltemp $lock ; exit 0" 0 1 2 15
X			if test -s togo.next
X			then
X				cat togo >> togo.next 2>/dev/null
X				rm -f togo
X			else
X				mv -f togo togo.next
X			fi
X
X			# unlock news; the host's togo.next file is locked and
X			# won't be tampered with, so togo no longer matters.
X			rm -f $ltemp $lock
X
X			# perform the actual transfers.
X			if test -s togo.next
X			then
X				echo ${pname}: "[$$]" begin ${host}
X				nntpxmit ${host}:togo.next
X				echo ${pname}: "[$$]" end ${host}
X			fi
X
X			# unlock this site.
X			rm -f $nntpltemp $nntplock
X		else	
X			# transfer in progress, leave articles to accumulate
X			# in ${host} for the time being.
X			echo ${pname}: "[$$]" ${host} locked by "[`cat $nntplock`]"
X			rm -f $ltemp $lock
X		fi # newslock LOCK$host.nntp
X	fi # test -s togo ...
Xdone
X
Xecho ${pname}: "[$$]" end `date`
END_OF_nntpsend
if test 2854 -ne `wc -c <nntpsend`; then
    echo shar: \"nntpsend\" unpacked with wrong size!
fi
chmod +x nntpsend
# end of overwriting check
fi
if test -f sys -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"sys\"
else
echo shar: Extracting \"sys\" \(2172 characters\)
sed "s/^X//" >sys <<'END_OF_sys'
X#
X# ourselves: accept everything
X#
Xjarvis.csri.toronto.edu:all
X#
X# upstream feeds
X#
X# NNTP
X# (F flag suppresses article size; spool directory name is internet site name)
Xmailrus:can,ont,gnu,inet,ddn,comp,news,sci,rec,misc,soc,talk,alt/world,na,usa,can,ont:F:mailrus.cc.umich.edu/togo
Xrutgers:can,ont,gnu,inet,ddn,comp,news,sci,rec,misc,soc,talk,alt/world,na,usa,can,ont:F:rutgers.edu/togo
X#
X# downstream feeds
X#
X# NNTP
X# (F flag suppresses article size; spool directory name is internet site name)
Xutstat:comp,news,ut,tor,can,ont,uw,list/all:F:utstat.toronto.edu/togo
Xubc-cs:can/all:F:cs.ubc.ca/togo
X# UUCP
Xdptcdc:can,ont,gnu,inet,ddn,comp,news,sci,rec,misc,soc,talk,alt/all:f:
Xutgpu:all,!local,!ai,!general,!graf,!gradnews,!lisp,!tex,!test/all:f:
X# mail batches
Xme:all/all:f:
Xqucis:all.all.ctl,alt.hypertext,can.jobs,comp.ai,comp.arch,comp.archives,comp.binaries.mac,comp.bugs.4bsd,comp.bugs.misc,comp.cog-eng,comp.compilers,comp.databases,comp.dcom,comp.doc,comp.editors,comp.emacs,comp.fonts,comp.graphics,comp.hypercube,comp.jobs,comp.lang.ada,comp.lang.c++,comp.lang.eiffel,comp.lang.misc,comp.lang.pascal,comp.lang.prolog,comp.lang.smalltalk,comp.laser-printers,comp.lsi,comp.newprod,comp.org.ieee,comp.os.cpm,comp.os.minix,comp.os.research,comp.parallel,comp.periphs,comp.protocol
s,comp.simulation,comp.society.futures,comp.software-eng,comp.sources.mac,comp.sources.misc,comp.sources.sun,comp.sources.unix,comp.sources.wanted,comp.sources.x,comp.std.c,comp.std.internat,comp.std.misc,comp.sys.ibm.pc,comp.sys.mac,comp.sys.nsc.32k,comp.sys.sgi,comp.sys.sun,comp.sys.transputer,comp.sys.workstations,comp.text,comp.theory,comp.unix,comp.windows,control,gnu,misc.jobs.offered,news,sci.crypt,sci.psychology,sci.research,to.qucis/world,na,can,ont:f:qucis.queensu.ca/togo
X#
X# feeds into mailing lists
X#
Xut.ai:ut.ai/all::/news/bin/mailgateway ut-ai@ai
Xcan.sun-stroke:can.sun-stroke/all::/news/bin/mailgateway sun-stroke@ai
Xradha-news:list.nrcnet-l/all::/news/bin/mailgateway sanand@hub
X#test-news:test/all::/news/bin/mailgateway lamy@ai
X#
X# distributed moderation
X#
X#digest-news:test,!test.ctl/all::/news/bin/stashtwimc
X#
X# testing
X#
X#utai:all/all:f:
X#utcsri:all/all:f:
X
END_OF_sys
if test 2172 -ne `wc -c <sys`; then
    echo shar: \"sys\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of shell archive.
exit 0

tale@pawl.rpi.edu (David C Lawrence) (07/04/89)

We're an NNTP-only site and I am having some difficulty getting
everything to run with C News.  Right now I am trying to set it up in
a parallel tree so I can make sure it is all working smoothly before I
ditch B News.

I'd appreciate from pointers from other nntp people regarding how I
should set everything up in order to work smoothly.

A side note before the NNTP stuff: in answer to the question about
whether C News would be run on a bunch of machines networked together,
I answered "no" -- because the C News programmes themselves (to send
and receive articles from the rest of the world) will only be run on
rpi.edu, though a lot of other machines mount the rpi.edu:/usenet
partition.  Is this correct?

Okay, here's what happened with NNTP.  I could really find any
documentation on getting it to work, so I went into nntpdiffs and make
a symlink to ../src.allnew/batch.c.  I also made symlinks at ../common
to the nntp common directory and linked every other .c and .h file in
nntp/server into the nntpdiffs/src directory (all files that didn't
conflict with a new .c file).  I edited the Makefile to specify the
install directory and tried to build nntpd.  While linking the final
programme, it complained that __space was an undefined symbol.
space() had been in the old misc.c but does not appear in the new one.
So, where did I go wrong?  How do I get my new nntpd built?  How do I
get C News and B News to co-exist happily until I am satisfied that C
News is working as it should?  What other things about our operation
should change under C News?  (Ie, do I have anything new to add to
cron or to the sys file?)

Thanks in advance for any help given.  It is very much appreciated.

Dave
--
 (setq mail '("tale@pawl.rpi.edu" "tale@itsgw.rpi.edu" "tale@rpitsmts.bitnet"))
        "Drinking coffee for instant relaxation?  That's like drinking
             alcohol for instant motor skills."  -- Mike Price (?)

henry@utzoo.uucp (Henry Spencer) (07/05/89)

In article <TALE.89Jul3192024@imagine.pawl.rpi.edu> tale@pawl.rpi.edu writes:
>A side note before the NNTP stuff: in answer to the question about
>whether C News would be run on a bunch of machines networked together,
>I answered "no" -- because the C News programmes themselves (to send
>and receive articles from the rest of the world) will only be run on
>rpi.edu, though a lot of other machines mount the rpi.edu:/usenet
>partition.  Is this correct?

The crucial issue is whether something like "inews" is ever going to get
run on another machine with the expectation that it will post the article
on rpi.edu, e.g. as a followup.  There are all kinds of ugly problems with
doing locks and such across machines, especially since NFS is so sloppy
about the fine points of Unix filesystem semantics, so we duck the
problem by punting everything to the server... but the software has to know
that there is a server and where it is.  If everything is strictly
read-only for all those other machines, there should be no problem.
But remember that people who read news sometimes want to post followups.
-- 
$10 million equals 18 PM       |     Henry Spencer at U of Toronto Zoology
(Pentagon-Minutes). -Tom Neff  | uunet!attcan!utzoo!henry henry@zoo.toronto.edu

lwk@caen.engin.umich.edu (Woody Kellum) (07/05/89)

I installed nntp 1.5.5.C succesfully on a Microvax II 3600 
running Ultrix V3.0 (at least so far). My only complaint is
that there were some pathnames in the code, which should 
#defined elsewere. I have yet to give it a full feed, however.  

I can't seem to get readnews (Australian) to work. Any one else
have this problem? 
    - Woody

-- 
Woody Kellum   Internet:  lwk@caen.engin.umich.edu