|
|
1.1 ! root 1: This directory contains lotsa good stuff common to both ! 2: the news server, support, and client programs. The short of it is: ! 3: ! 4: conf.h Configuration information for NNTP server, ! 5: support, and client programs. Described in detail below. ! 6: ! 7: response_codes.h These are the #define's of the numeric response ! 8: codes in NNTP. This shouldn't change. ! 9: ! 10: rfc977.h Things that weren't response codes, but belong somewhere. ! 11: These should remain constant. ! 12: ! 13: clientlib.c This file is a collection of routines which clients ! 14: can use to talk to the NNTP server. The code is ! 15: well documented, but briefly, the functions are ! 16: ! 17: getserverbyfile Opens a named file and ! 18: returns the contents, ! 19: presumed to be a host name ! 20: server_init Open connection to server ! 21: getsocket Get a stream socket ! 22: get_server Get line from server ! 23: put_server Send line to server ! 24: close_server Close connection ! 25: ! 26: It is worth noting that these routines use ! 27: buffered I/O, and leave the external variables ! 28: "ser_rd_fp" and "ser_wr_fp" (server read/write ! 29: file pointers, respectively) floating around ! 30: for use by programs which need them. ! 31: ! 32: In any event, you shouldn't need to screw with ! 33: these routines. ! 34: ! 35: conf.h ! 36: ====== ! 37: ! 38: You will need to screw with this to get the server, support, and ! 39: client programs running. Unfortunately, "rrn" has its own ideas of ! 40: where to look for config information, so there is some duplication of ! 41: effort here. With luck, it won't be too great. ! 42: ! 43: This is sort of a walk through conf.h so you can get some idea of ! 44: what parameters need to be changed. The #defines's default value is ! 45: listed in parenthesis after it's name. Manual entries mentioned here ! 46: are in the "doc" directory of the NNTP distribution. ! 47: ! 48: First are some compile-time type options, for compiling in ! 49: certain code. The options should be "#undef"ed if you don't want ! 50: them, and "#defined" if you do. ! 51: ! 52: ALONE (undefined) ! 53: ! 54: Defines whether we're a stand alone version of the server, or ! 55: whether we're running under inetd. I suggest you run under inetd. ! 56: ! 57: FASTFORK (undefined) ! 58: ! 59: If we're ALONE, then this option tells us not to read the ! 60: active file when we fork, but rather for the parent daemon to re-read ! 61: it every READINTVL (below) seconds. This should make forking off children ! 62: a little bit faster. ! 63: ! 64: BSD_42 (undefined) ! 65: ! 66: If you have a 4.2 BSD system (as opposed to a 4.3 BSD system), ! 67: this needs to be defined. Really it does only two things: changes ! 68: the log level to be compatible with 4.2, and automatically defines ! 69: DBM (below). If, somehow, you already have ndbm, then you should ! 70: kill the lines which auto-define it. ! 71: ! 72: DBM (undefined) ! 73: ! 74: If you don't have the ndbm routines in your standard library (i.e., ! 75: if you're not running 4.3 BSD), you'll have to define this; all it ! 76: does is replace the ndbm calls with the earlier, unwieldy dbm calls. ! 77: ! 78: vfork (undefined) ! 79: ! 80: If you don't have the vfork system call, define vfork to be fork, ! 81: i.e., ! 82: ! 83: #define vfork fork ! 84: ! 85: If you do have it, use it: it will increase performance on transfer ! 86: dominated machines by a factor or two or so in nntpd. ! 87: ! 88: SYSLOG (LOG_NEWS) ! 89: ! 90: Some systems, such as the Masscomp, do not have a syslog facility. ! 91: If SYSLOG is undefined, no syslog/openlog calls will be made. ! 92: Naturally, if SYSLOG isn't defined, LOG (below) cannot be defined. ! 93: Otherwise, define it to be the name of the facility under which we ! 94: log stuff. ! 95: ! 96: LOG (undefined) ! 97: ! 98: When LOG is defined, we log copious amounts of information via ! 99: syslog to a special file. One a busy system like ucbvax, this produces ! 100: about 100K of log information per day. Look in ../src/SYSLOG to ! 101: get an idea of what will be logged. You can use the scripts ! 102: provided in ../support to produce statistics on your NNTP server if ! 103: you run with LOG. ! 104: ! 105: IHAVE_DEBUG (undefined) ! 106: ! 107: Enables logging of each message-id as it is offered via the IHAVE ! 108: command. This produces huge log files, but is useful if you suspect ! 109: a site is repeatedly offering the same article to your site after you ! 110: have rejected it. ! 111: ! 112: XHDR (defined) ! 113: ! 114: Enables the XHDR command, which is an extention of the NNTP spec. ! 115: XHDR allows client programs to see header lines (e.g., subject) from ! 116: an article or range of articles. This allows the '=' command in rn ! 117: to be much faster, IF AND ONLY IF your server machine is fast. Since ! 118: this command foists off work on the server, it may be better to leave this ! 119: undefined if your server machine is heavily loaded. ! 120: ! 121: SUBNET (undefined) ! 122: ! 123: If you are running 4.3 BSD or have support for subnets on ! 124: your local net, this will include subnet support for the access ! 125: file. Basically, a routine goes out and looks at all your ethernet ! 126: interfaces, and figures out subnet masks from them. It then ! 127: uses these to resolve subnets from IP addresses. ! 128: ! 129: DAMAGED_NETMASK (undefined) ! 130: ! 131: 4.3 supports subnet masks of any bit-width, but user programs ! 132: are *very* hard pressed to deal with masks which are not a multiple ! 133: of 8 bits wide. If you have a weird netmask, define DAMAGED_NETMASK. ! 134: The code which uses it is in server/inet_snetof.c. This code ! 135: is a real hack, and you may have to diddle with it to make it work. ! 136: ! 137: GHNAME (defined) ! 138: ! 139: Defined if you want to use the 4BSD gethostname() call to ! 140: determine the name of your system. This #define is only used ! 141: by the mini-inews when posting news. Some reasons you might not ! 142: want to use this are: if your UUCP/news name is different than ! 143: your internet name; if your gethostname() currently doesn't ! 144: return fully-qualified names (e.g., 4.2) but you may "upgrade" ! 145: to 4.3 (and return fq'd names) shortly, and you'd rather not ! 146: have to recompile news... See UUNAME below. ! 147: ! 148: UUNAME (undefined) ! 149: ! 150: If this is defined, mini-inews will get the hostname out ! 151: of /etc/uucpname or /local/uucpname. ! 152: ! 153: >>> If GHNAME and UUNAME are undefined, mini-inews will <<< ! 154: >>> get the host name from /usr/include/whoami.h <<< ! 155: ! 156: TIMEOUT (2 hours) ! 157: ! 158: If a server is idle in command mode for TIMEOUT amount of time, ! 159: it will close the connection with an error message. This prevents ! 160: old servers from clogging the system. Timeout should be at least two ! 161: hours so people can go eat lunch and leave an rn on their terminal. ! 162: ! 163: XFER_TIMEOUT (30 minutes) ! 164: ! 165: This is like TIMEOUT, above, but takes effect when the server is ! 166: receiving news via IHAVE or POST. If at least one line is not received ! 167: in XFER_TIMEOUT amount of time, the server aborts with an error. ! 168: ! 169: DOMAIN ("uucp") ! 170: ! 171: If domain is defined, it specifies that whatever it is defined ! 172: as will be appended to host names; this is for posting news when ! 173: your hostname() doesn't return your fully-qualified domain name. ! 174: If your hostname system call does return a fully-qualified name, ! 175: simply undef DOMAIN. ! 176: ! 177: ! 178: SERVER_FILE ("/usr/local/lib/rn/server") ! 179: ! 180: This file contains the name of the machine which runs the ! 181: news server. Mini-inews, rrn, and getactive all use the contents ! 182: of this file. The idea behind this is that you don't have to have the server ! 183: compiled into anything, and can have the same binaries across ! 184: machines which have different news servers. ! 185: ! 186: You must edit this file, and add a single line which contains ! 187: the name of the news server for each machine which runs rrn. ! 188: ! 189: If you have multiple news servers on your network, users can ! 190: select which one they want to use via the NNTPSERVER environment ! 191: variable, which will override the contents of SERVER_FILE. Simply ! 192: set NNTPSERVER to be the name of the machine whose news server you ! 193: want to use. ! 194: ! 195: If you are afraid of people abusing a particular news server ! 196: via NNTPSERVER, you should edit the access file for that news server ! 197: accordingly. Security begins at home. ! 198: ! 199: >>> rrn, mini-inews, and getactive NO LONGER have compiled in server names <<< ! 200: >>> Be sure to create the SERVER_FILE as mentioned above, or you'll lose! <<< ! 201: ! 202: POSTER ("news") ! 203: ! 204: If your nntpd is run as root, nntpd will attempt to setuid() ! 205: and setgid() to the uid and gid of whoever POSTER is defined as. ! 206: If your nntpd isn't running as root (i.e., it might run as "usenet"), ! 207: either undefine this, or define it to be a user which exists but ! 208: is not used -- the setuid will fail in any event. ! 209: ! 210: Next, we have some common files: ! 211: ! 212: ACTIVE_FILE ("/usr/lib/news/active") ! 213: ! 214: Specifies the location of the "active" file. ! 215: ! 216: ACCESS_FILE ("/usr/lib/news/nntp_access") ! 217: ! 218: Specifies the location of the remote access file. ! 219: See the manual entry, nntpd.8c, for a better explanation. ! 220: A sample access file is in ../support/access_file. ! 221: ! 222: HISTORY_FILE ("/usr/lib/news/history") ! 223: ! 224: Specifies the location of the "history" file. ! 225: This is used with NEWNEWS and ARTICLE/HEAD/BODY/STAT when ! 226: given an message-id argument. ! 227: ! 228: INEWS ("/usr/lib/news/inews") ! 229: ! 230: Specifies the location of inews, for posting. Note that this ! 231: is NOT the same as the mini-inews in the inews directory ! 232: supplied with the NNTP distribution, which should only ! 233: be installed on client machines. INEWS should be the pathname ! 234: of real, live, honest-to-God inews. Your inews may be ! 235: in a different place, such as /usr/bin/inews. ! 236: ! 237: SPOOLDIR ("/usr/spool/news/") ! 238: ! 239: This is the directory where news is stored. Note that ! 240: the trailing / is important. ! 241: ! 242: RNEWS ("/usr/bin/rnews") ! 243: ! 244: Specifies the location of the rnews program which is used ! 245: for dealing with news received from other systems via the ! 246: IHAVE command; it is often a link to inews. ! 247: ! 248: STAT_FILE ("/usr/lib/news/mgdstats") ! 249: ! 250: When the support program "mkgrdates" is run, it keep stats ! 251: in a file to tell whether or not to rebuild its database ! 252: the next time it is run; this is the file the stats are kept ! 253: in. Needless to say, it must be writable by whatever user-id ! 254: runs "mkgrdates". See the manual entry "mkgrdates.8c" for ! 255: more info. ! 256: ! 257: NGDATE_FILE ("/usr/lib/news/groupdates") ! 258: ! 259: Specifies the location of the newsgroup creation date file. ! 260: See the manual entry for both nntpd.8c and mkgrdates.8c for ! 261: more info. ! 262: ! 263: READINTVL (600 seconds) ! 264: ! 265: If the server is compiled with FASTFORK and ALONE, then this number ! 266: tells how often to check if the active file has changed (and to ! 267: read it in if it has changed since the last time). See README ! 268: in the "server" directory of the NNTP distribution. If you are ! 269: not compiled with FASTFORK and ALONE (hint: you're not going to), ! 270: don't worry about this. ! 271:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.