ftp.nice.ch/pub/next/unix/network/news/nntp.1.5.11.s.tar.gz#/nntp/common

Makefile
 
README
 
README.HPUX
 
README.IRIX
 
README.LIB
 
README.MTXNIU
 
README.SYSV
 
README.XENIX
 
clientlib.c
[View clientlib.c] 
clientlib.h
[View clientlib.h] 
conf.h
[View conf.h] 
conf.h.dist
 
nntp.h
[View nntp.h] 
version.c
[View version.c] 

README

     You will need to customize common/conf.h to get the server,
support, and client programs running on your system.  Unfortunately,
"rrn" has its own ideas of where to look for configuration information,
so there is some duplication here.

    >>> Also, you should see README.SYSV if you are compiling this on
    >>> a System V machine, as there is some extra stuff you need to do.

    >>> Also, you should see README.MTXNIU if you are compiling this
    >>> on a system running MTXNIU BSD + NFS. 

    >>> Also, you should see README.IRIX, if you are compiling this on the
    >>> SGI IRIS.

    >>> Also, you should see README.XENIX, if you are compiling this on
    >>> a machine running SCO XENIX with TCP.

    >>> Also, you should see README.HPUX, if you are compiling this under
    >>> HP-UX.

     FIRST, copy conf.h.dist to conf.h and alter ONLY conf.h.

     This is sort of a walk through conf.h so you can get some idea of
what parameters need to be changed.  You should probably print this
file out (or keep it in a separate window if you're on a workstation)
and edit conf.h as you read through it.  For each #define in conf.h,
the default value is listed in parenthesis after its name in this
document.  Manual entries mentioned here are in the "doc" directory of
the NNTP distribution.

     First are some compile-time type options, for compiling in
certain code.  The options should be "#undef"ed if you don't want
them, and "#defined" if you do.

ALONE		(undefined)

     Defines whether we're a stand alone version of the server, or
whether we're running under inetd.  Define this if you do NOT have inetd.
If you do have inetd, keep it undef'ed.

FASTFORK	(undefined)

     If ALONE is defined, then this option tells us not to read the
active file when we fork, but rather for the parent daemon to re-read
it every READINTVL (below) seconds.  This should make forking off children
a little bit faster.

LOAD	(defined as 5)
	You can have nntp findout the load average on a BSD-type machine
(sun or ultrix) and if the load average is higher than LOAD, the connection
will be rejected.

DYNAMIC_ART_ARRAY	(undefined)
	Originally, nntpd assumes a specific maximum number of articles on
line per group. (See MAX_ARTICLES definition below.) This has proven to be
a problem at some sites. Define this to dynamically allocate a larger article
array as needed. WARNING: This code did not go through beta. Use at your own
risk.
	
BSD_42		(undefined)

     If you have a 4.2 BSD system (as opposed to a 4.3 BSD system),
this needs to be defined.  Really it does only two things: changes
the log level to be compatible with 4.2, and automatically defines
DBM (below).  If, somehow, you already have ndbm, then you should
kill the lines which auto-define it.

CMU_MACH	(undefined)
     Define if you are running CMU's MACH. NeXT is handled as a BSD_43
machine.

USG		(undefined)

     Compiles in code to support System V; some of these appear down
below. 

TLI		(undefined)
     Compiles in code to support the Transport Layer Interface of System V
Release 3 and later. [This code does not work yet, but will work in NNTP 1.6.]

**** The following four definitions have to do with the format of the ****
**** news history file. You must select the same format for NNTP that ****
**** you chose when you built your news software. If you don't, NNTP  ****
**** will NOT WORK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ****

DBM		(undefined)

     If you don't have the ndbm routines in your standard library (i.e.,
if you're not running 4.3 BSD), you'll have to define this; all it
does is replace the ndbm calls with the earlier, unwieldy dbm calls.

>>> If you define DBM, be sure to edit server/Makefile to have  "-ldbm"
>>> on the LIBS line, i.e.

	LIBS = -ldbm
[This does not apply if you are compiling on the SGI IRIX platform.]


NDBM		(defined)

     Define if you have the 4.3BSD ndbm routines and used them to build your
news software.

DBZ		(undefined)
     Define this is you are using the DBZ libraries. If you DO define this,
you will need to make alterations to makefile to insure that things will work.
If you built your news software using DBZ, you MUST build NNTP with DBZ. Many
people have success by use the cnews library as a link library.

USGHIST		(undefined)

     Define if you don't use dbm/ndbm for the history file, but instead
you use the USG-style history file format.  IF YOU DO NOT DEFINE ANY OF
DBZ, DBM OR NDBM ABOVE, THIS IS THE DEFAULT.

CNEWS	    (undefined)
        If you're running CNEWS instead of BNEWS define this. NNTP will not
work with CNEWS if you don't define this.

BATCHED_INPUT	(undefined)
	If this is defined, then the CNews-style batched input is used
to collect incoming articled into a file which periodically is sent to the
incoming news processor. 

LAI_TCP		(undefined)
	This should be defined if you are compiling on SCO Xenix with TCP/IP.
It make work on other systems as well.

EXCELAN		(undefined)
	This will compile in support for the EXCELAN EXOS TCP/IP routines.
It is known to work with Unisys 5000-series computer.

WIN_TCP		(undefined)
	Support for Wollongong TCP/IP for System V/386. [This code does not
yet work. It will work in NNTP 1.6.]

U_LONG		(undefined)
	Define this if your system does not know what a u_long is.

SIGRET		(defined)
     This should be defined to be int or void depending on what
signals return on your system. SunOS 4.X, Ultrix 3.X, and IRIX return void.
Most others return int.

GHNAME		(defined)

     Defined if you want to use the 4BSD gethostname() call to
determine the name of your system.  This #define is only used
by the mini-inews when posting news.  Some reasons you might not
want to use this are: if your UUCP/news name is different than
your internet name; if your gethostname() currently doesn't
return fully-qualified names (e.g., 4.2) but you may "upgrade"
to 4.3 (and return fq'd names) shortly, and you'd rather not
have to recompile news...  See UUNAME below.

UUNAME		(undefined)

     If this is defined, mini-inews will get the hostname out
of /etc/uucpname or /local/uucpname.

>>>	If GHNAME and UUNAME are undefined, mini-inews will	<<<
>>>	get the host name from /usr/include/whoami.h		<<<

MMAP		(undefined)
	Define this if you run on a version of Unix that has the mmap() system
call. SunOS and Solbourne's OS/MP are two versions of Unix that do.

vfork		(undefined)

     If you DON'T have vfork, replace this line with:

#define	vfork	fork

If you DO have vfork, be sure that this remains undefined.

MINFREE		(4000)
	This is the minimum number of kbytes or blocks (depending on what the
system) that must be free on the news spool partition before nntp will allow
an XFER command to function.

POSTBUFFER	(1000)
	NNTP will allow posting until there is less than MINFREE-POSTBUFFER
blocks or kbytes available. This allows posting to continue while XFERs are
stopped.

MINFILES	(MINFREE/4)
	This is the minimum number of inodes that must be available on the
news spool partition before nntp will allow any function that will create 
more files. If you define this, please be careful not to make it a large 
number. I recommend something around MINFREE/4.

SETPROCTITLE	(undefined)
	This will replace the process name with information about what nntp
is doing. This is known to work on BSD-flavored Unix, but may not work on
USG Unix.

IHAVE_DEBUG	(undefined)

     Enables logging of each message-id as it is offered via the IHAVE
command.  This produces huge log files, but is useful if you suspect
a site is repeatedly offering the same article to your site after you
have rejected it.

XHDR		(defined)

     Enables the XHDR command, which is an extention of the NNTP spec.
XHDR allows client programs to see header lines (e.g., subject) from
an article or range of articles.  This allows the '=' command in rn
to be much faster, IF AND ONLY IF your server machine is fast.  Since
this command foists off work on the server, it may be better to leave this
undefined if your server machine is heavily loaded.

SUBNET		(defined)

     If you are running 4.3 BSD or have support for subnets on
your local net, this will include subnet support for the access
file.  Basically, a routine goes out and looks at all your ethernet
interfaces, and figures out subnet masks from them.  It then
uses these to resolve subnets from IP addresses.

DAMAGED_NETMASK	(undefined)

     4.3 supports subnet masks of any bit-width, but user programs
are *very* hard pressed to deal with masks which are not a multiple
of 8 bits wide.  If you have a weird netmask, define DAMAGED_NETMASK.
The code which uses it is in server/subnet.c.

NETMASK		(undefined)

     The code in server/subnet.c wants to use 4BSD ioctls to determine
the subnet masks for each network interface.  However, you may be able
to support subnets without having such ioctls (HPUX is an example of
such a system; SunOS 3.3 is another).  If you will be satisfied by
having a compiled-in netmask, define NETMASK to be a hex constant
describing your netmask (e.g., 0xffffff00).  You must also define
SUBNET as well.

DECNET		(undefined)

     Compile in DECNET support into the server and clientlib.
This works under Ultrix (and not VMS!).

UMASK		(undefined)
     This should be defined if you are running CNEWS and are concerned
that batch files may be created that can be altered by anyone. Defining
this as 022 should work safely for most systems, but experiment to be
sure.

DOMAINMATCH	(defined)
     Defined to allow the use of domain specifications in the nntp access
file. Specifications for domains are of the form *.domain.name and can be
used instead of individually naming hosts or networks.

FAKESYSLOG	(undefined)

     This is useful if your system doesn't support syslog, but you'd
like logging none the less.  By defining FAKESYSLOG to be the name of
a file, e.g., "/usr/lib/news/nntplog", you can have all nntp messages
logged to that file, ala syslog.  If you define FAKESYSLOG, you must
define LOG and SYSLOG, below.  The code for the fake syslog routines
are in ../server/fakesyslog.c, and are largely joe-code.

FAKEAPPEND	(undefined)
	If your host supports the BSD fdopen() function and the O_APPEND flag
to open(), you should define FAKEAPPEND with FAKESYSLOG so that
multiple copies of nntpd don't trash the log with buffered fprintf's.
NOTE: FAKEAPPEND does nothing if FAKESYSLOG is not defined.

SYSLOG		(LOG_NEWS)

     nntpd uses the syslog system to report errors, and optionally, to
log usage statistics.  If SYSLOG is defined, errors will be
reported via the syslog() library routine; if it is not defined, no errors
will be reported.

     If you just define SYSLOG, only errors will be reported.  If you
want more information, such as statistics, you should define LOG, below.
Defining LOG will cause additional information besides errors to be
logged via SYSLOG.

     If you have syslog(), define SYSLOG to be the name of the facility
under which nntpd should log things.  If you are using FAKESYSLOG
above, it really doesn't matter what facility name you choose; LOG_NEWS
is fine.

LOG		(undefined)

     When LOG is defined, we log copious amounts of information via
syslog to a special file.  One a busy system like ucbvax, this produces
about 100K of log information per day.  Look in ../server/SYSLOG to
get an idea of what will be logged.  You can use the scripts
provided in ../support to produce statistics on your NNTP server if
you run with LOG.

TIMEOUT		(2 hours)

     If a server is idle in command mode for TIMEOUT amount of time,
it will close the connection with an error message.  This prevents
old servers from clogging the system.  Timeout should be at least two
hours so people can go eat lunch and leave an rn on their terminal.

XFER_TIMEOUT	(30 minutes)

     This is like TIMEOUT, above, but takes effect when the server is
receiving news via IHAVE or POST.  If at least one line is not received
in XFER_TIMEOUT amount of time, the server aborts with an error.

DOMAIN		("uucp")

     If domain is defined, it specifies that whatever it is defined
as will be appended to host names; this is for posting news when
your hostname() doesn't return your fully-qualified domain name.
If your hostname system call does return a fully-qualified name,
simply undef DOMAIN.

HIDDENNET	(undefined)

     If HIDDENNET is defined, it forces inews to interpret DOMAIN as
a complete host name, i.e. the local host is not prepended in the From:
header. The Path: header is generated with only the login name, allowing
inews on the nntp server to fill in the UUCP path. This has the effect of
making all machines on a local network look, to the outside world, as a
single host.

REALDOMAIN	(undefined)
     Define this if you want to use gethostbyname() to get your host's
fully qualified domain name. Useful if hostname() does not return the
fully qualified domain name. If you define this, it will override the
use of HIDDENNET.

DO_DOTDIR	(defined)
     If defined, mini-inews will look in the environment of the user for
DOTDIR and use $DOTDIR/.signature as the signature if it exists. If undefined
or $DOTDIR/.signature does not exist, $HOME/.signature will be used instead.
This is similiar to the behavior of rn.

AUTH		(defined)

     Defines whether we want to use the experimental NNTP Version 2
Authorization process. Read the file AUTHORIZATION in the root directory of
the NNTP distribution for more information.

SERVER_FILE	("/usr/local/lib/rn/server")

     This file contains the name of the machine which runs the
news server.  Mini-inews, rrn, and getactive all use the contents
of this file.  The idea behind this is that you don't have to have the server
compiled into anything, and can have the same binaries across
machines which have different news servers.

     You must edit this file, and add a single line which contains
the name of the news server for each machine which runs rrn.

     If you have multiple news servers on your network, users can
select which one they want to use via the NNTPSERVER environment
variable, which will override the contents of SERVER_FILE.  Simply
set NNTPSERVER to be the name of the machine whose news server you
want to use.

     If you are afraid of people abusing a particular news server
via NNTPSERVER, you should edit the access file for that news server
accordingly.  Security begins at home.

>>> rrn, mini-inews, and getactive NO LONGER have compiled in server names <<<
>>> Be sure to create the SERVER_FILE as mentioned above, or you'll lose!  <<<

POSTER		("usenet")

     If your nntpd is run as root, nntpd will attempt to setuid()
and setgid() to the uid and gid of whoever POSTER is defined as.
If your nntpd isn't running as root (i.e., it might run as "usenet"),
either undefine this, or define it to be a user which exists but
is not used -- the setuid will fail in any event.

PASSFILE	(/etc/nntp.sys)
	This file contains the password authentication information that the
client uses if AUTH is defined and in use.

ACCESS_FILE	("/usr/lib/news/nntp_access")

     Specifies the location of the remote access file. See the manual entry,
nntpd.8c, for a better explanation. A sample access file is in
../support/access_file.

STAT_FILE	("/usr/lib/news/mgdstats")

     NOTE: THIS IS NOT USED, BUT REMAINS FOR COMPATABILITY.
     When the support program "mkgrdates" is run, it keep stats
     in a file to tell whether or not to rebuild its database
     the next time it is run; this is the file the stats are kept
     in.  Needless to say, it must be writable by whatever user-id
     runs "mkgrdates".  See the manual entry "mkgrdates.8c" for
     more info.

NGDATE_FILE	("/usr/lib/news/groupdates")

     NOTE: THIS IS NOT USED, BUT REMAINS FOR COMPATABILITY.
     Specifies the location of the newsgroup creation date file.
     See the manual entry for both nntpd.8c and mkgrdates.8c for
     more info.

ACTIVE_TIMES_FILE ("/usr/lib/news/active.times")
     This needs to be defined if you defined CNEWS. It is a CNEWS-maintained
version of the NGDATE_FILE. Since it is supported by CNEWS itself, it means
the NEWGROUPS will actually work. Hurrah!

Next, we have some common files:

ACTIVE_FILE	("/usr/lib/news/active")

     Specifies the location of the "active" file.

DISTRIBUTIONS_FILE  ("/usr/lib/news/distributions")
     Specifies the location of the file that defines valid distributions for
this site. The format of the file is usually the name of the distribution
(e.g. "tx" for the state of Texas), some spaces or a tab, and a short descrip-
tion of the area that the distribution covers (e.g. "The State of Texas"). This
is used by the "LIST DISTRIBUTIONS" command.

NEWSGROUPS_FILE  ("/usr/lib/news/newsgroups")
     Specifies the location of the file that contains newsgroup descriptions.
The format of the file is usually the name of the newsgroup, a tab, and a short
description of the newsgroup (usually from the checkgroups control message).
This file is used by the "LIST NEWSGROUPS" command.

HISTORY_FILE	("/usr/lib/news/history")

     Specifies the location of the "history" file. This is used with NEWNEWS
and ARTICLE/HEAD/BODY/STAT when given an message-id argument.

INEWS		("/usr/lib/news/inews")

     Specifies the location of inews, for posting.  Note that this is NOT the
same as the mini-inews in the inews directory supplied with the NNTP
distribution, which should only be installed on client machines.  INEWS should
be the pathname of real, live, honest-to-God inews.  Your inews may be
in a different place, such as /usr/bin/inews.

SPOOLDIR	("/usr/spool/news")

     This is the directory where news is stored on the server.

RNEWS		("/usr/bin/rnews")

     Specifies the location of the rnews program which is used for dealing with
news received from other systems via the IHAVE command; it is often a link to
inews.

---- The following variables apply only if you are using C News batching. ----
NONEWSRUN	(undefined)
	Define this only if you plan to use the daemon version of relaynews.

TOOBIG		(300000, unless NONEWSRUN is defined)
	Under CNews-style batching, a file that is larger than this gets
sent to be unbatched. (Size is in bytes.)

TOOMANY		(1024, unless NONEWSRUN is defined)
	Under CNews-style batching, if the number of batched articles is
bigger than this, the batch file gets unbatched.

TOOOLD		(5 minutes)
	Under CNews-style batching, a file that is older than this gets
sent to be unbatched.

COPYSIZE	(8192)
	Under CNews-style batching, the number of bytes to copy at one time.

MAXDIGITS	(25)
	

MAXSTR		(1024)

INDIR		("/usr/spool/news/in.coming")
	Under CNews-style batching, the directory in which the batching takes
place.

BATCH_FILE	("/usr/spool/news/in.coming/nntp.XXXXXX")
	The filename template for batch files under CNews-style batching.

NEWSRUN		("/usr/lib/newsbin/input/newsrun")
	The name of the program to which batch files are fed once they are
created under CNews-style unbatching.
_________________________________________________________________________
Look carefully before modifying any of these!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-------------------------------------------------------------------------

FCNTL		(defined if SYSV is defined)

	Some systems define things like O_RDONLY, etc. in <fcntl.h>.
If FCNTL is defined, <fcntl.h> will be included.

FTRUNCATE	(defined if dgux)
	Use ftruncate() even if this is a  System V like machine.

NDIR		(defined if USG is defined)
     Uses the ndir compatability library, and includes <ndir.h>.

READINTVL	(600 seconds)

     If the server is compiled with FASTFORK and ALONE, then this number
tells how often to check if the active file has changed (and to read it in if
it has changed since the last time).  See README in the "server" directory of
the NNTP distribution.  If you are not compiled with FASTFORK and ALONE
(hint: you're not going to), don't worry about this.

MAX_ARTICLES	(4096)
	This is the maximum articles per newsgroup that nntp can handle
if DYNAMIC_ART_ARRAY is not defined.

README.HPUX

If you're compiling this under hpux, you'll may need to edit
Makefile and add

	LIBS = -lbsdipc -lBSD

Later version of hpux don't need this. Be sure that you define
USG in conf.h. That is necessary.

updated 3/11/90 by Stan Barber

README.IRIX

To make NNTP run on Silicon Graphics IRIX, do the following:

1. Edit common/conf.h. Make sure you define USG and look at all the
other stuff in there to be sure you have defined all the other things
you need. (You will most likely need to define vfork. You will most likely
need to undefine FASTFORK, and BSD_42.

3. Edit the Makefile in the root directory of the nntp sources.  Make sure to
add -lbsd to the LIBS line. Be sure to modify the CFLAGS lines to add
-I/usr/include/bsd

4. Now, you can cd to the root directory of the nntp sources and type
"make server" to make the server programs or "make client" to make the client
program.

5. You will need to modifiy the /usr/etc/inetd.conf file to add the nntpd
service.

If you have problems, send mail to sob@tmc.edu and he will help if he
can.

Stan Barber (update 3/11/90)



README.LIB

     This directory contains lotsa good stuff common to both
the news server, support, and client programs.  The short of it is:

conf.h.dist	Configuration information for NNTP server,
		support, and client programs.  Described in detail
		in README in this directory. Use this to create your
		own version of conf.h.

nntp.h		These are the #define's of the numeric response
		codes (and other stuff) in NNTP as defined by RFC 977.

clientlib.c	This file is a collection of routines which clients
		can use to talk to the NNTP server.  The code is
		well documented, but briefly, the functions are

			getserverbyfile	Opens a named file and
					returns the contents,
					presumed to be a host name
			server_init	Open connection to server
			getsocket	Get a stream socket
			get_server	Get line from server
			put_server	Send line to server
			close_server	Close connection

		It is worth noting that these routines use
		buffered I/O, and leave the external variables
		"ser_rd_fp" and "ser_wr_fp" (server read/write
		file pointers, respectively) floating around
		for use by programs which need them.

If you use the clientlib package to build an NNTP client of your
own, you either need to define NNTPSRC on the "cc" command
line when compiling clientlib.c, or add compile-type -D lines to
the "cc" command line for each option.  Defining NNTPSRC will
try to include "../common/conf.h", which should be used if it exists.

README.MTXNIU

If you are running MTXNIU 4.3 + NFS, then you need to add the following line
at the beginning of conf.h.

#define sun

This will make nntp work correctly. When nntp 1.6 comes out, you won't need
to worry about this.

STAN

README.SYSV

To make NNTP run on SYSV Release 2 or earlier, do the following:

1. Get the Berkeley Directory Library emulation package. You can get it
from archive-server@bcm.tmc.edu. This is the so-called NDIR 
package. Install it. (If you don't know if you have it, look for the
file ndir.h in /usr/include. If it is there, you have the NDIR library
and can move on the step 2.)

2. Edit common/conf.h. Make sure you define USG and look at all the
other stuff in there to be sure you have defined all the other things
you need. (You will most likely need to define U_LONG, ALONE, vfork,
and FAKESYSLOG. You will most likely need to undefine FASTFORK, BSD_42,
DBM, SUBNET, NETMASK, DAMAGED_NETMASK, and DECNET.) You will probably need to
undefine SYSLOG if you don't define FAKESYSLOG.

3. Edit the Makefile in the root directory of the nntp sources.  Make sure to
add -lndir to the LIBS line. If you have EXCELAN, you will probably need to
add a -lsocket here aswell. If the networking include files are not in the
"standard location" (e.g. /usr/include), be sure to modify the CFLAGS lines to
add -Ilocation_of_the_network_include_files.

4. Now, you can cd to the root directory of the nntp sources and type
"make server" to make the server programs or "make client" to make the client
program.

If you have problems, send mail to sob@tmc.edu and he will help if he
can.

Stan Barber (update 1/21/91)

P.S. For those of you with SVR3, we are still working on that. We expect to
have it working fully in NNTP 1.6. If you have sockets, this version will
most likely work, but may require some effort. A first attempt at supporting
TLI for clients is in the clientlib.c file. It does not work as yet. People
are encouraged to work with it and send me their fixes.



README.XENIX

To make NNTP run on SCO XENIX, do the following:

1. Be sure you are running TCP/IP. If you aren't, you might as well quit.
This just won't work.

2. Edit common/conf.h. Make sure you define USG and LAI_TCP. Look at all the
other stuff in there to be sure you have defined all the other things
you need. (You will most likely need to define vfork and FAKESYSLOG. You will
most likely need to undefine FASTFORK, and BSD_42. You will need to undefine
SYSLOG if you don't define FAKESYSLOG.)

3. Edit Makefile. Make sure to add "-lx -lsocket" to the LIBS line.

4. Now, you can cd to the root directory directory of the nntp sources and type
"make server" to make the server programs or "make client" to make the client
program.

If you have problems, send mail to sob@tmc.edu and he will help if he
can.

Stan Barber (6/30/90)

$Revision: 1.2 $

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.