Installation ------------ Please read the file INSTALL! Here is a quick summary: 1) Unpack the TAR. With GNU tar you can do it this way: "tar xzvf gulp.tar.gz" 2) "cd gulp" 3) "./configure" 4) "make" 5) "make install" 6) You end up with a "gulp" binary in /usr/local/bin. Usage ----- Gulp is a program for transporting news articles between news servers using NNTP. When invoked with a source and a destination host it will look for new articles in each group in the destination server's active file on the source host. Once a list of articles has been compiled it will fork a number of times and each child will transfer a proportion of the required articles in parallel. Optionally a the name of a file containing a perl routine filter_xover() may be specified. This is passed the name of the newsgroup and then the entries in the overview database for the article in question. The script should use that to decide whether the article should be accepted or not, returning the scalar OK if it is to be accepted and anything else for a rejection (the routine's return value is then reported as the reason for rejection). If the source newsserver will allow pipelining of article commands then that should be turned on (by adding '-p' to the command line) for extra throughput. It is possible that if the source newsserver also requires authentication then it isn't possible to take advantage of pipelining since any ARTICLE command could be replied to with '480 authentication required' and the program can't respond to that since it has already queued a number of other article requests. You may be able to get round this by forcing authentication when the client initially connects (by using the '-a' option) but this is not guaranteed to work and you may just have to turn pipelining off. Example ------- To transfer articles from news.demon.co.uk to meow.netscum.org.uk using 6 parallel streams of articles and a killfile use the following command line: gulp -F 6 -k filter.pl -f news.demon.co.uk -t meow.netscum.org.uk\ -n newsrc -A active.ignore The file newsrc is just used to store state information between runs and active ignore is a list of newsgroups present in meow.netscum.org.uk's active file which shouldn't have new articles fetched for them. The file filter.pl might look like this sub filter_xover { my ($newsgroup,$subject,$author,$date,$messageid, $references,$bytes,$lines,$xref) = @_; if($bytes > 100000) { return ("Exceeds 100k"); } return("OK"); } if you wanted to avoid transferring any article larger than 100 kilobytes. The various fields of the overview data and the newsgroup name will always be transfered as a list of scalars as indicated.