home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / changi09.zip / changi.doc < prev    next >
Text File  |  1995-06-15  |  61KB  |  1,830 lines

  1.  
  2.  
  3.                ** Documentation for CHANGI 0.9 **
  4.  
  5.                          June 15th, 1995
  6.  
  7.  
  8. ====================================================================
  9. Changi                                             The meaning of...
  10. ====================================================================
  11.  
  12. Why is this called Changi? What does Changi mean? Where does this
  13. name came from? Since (almost) nobody was really interested to get
  14. an answer on these essential questions, I won't tell you.
  15.  
  16. At least you should be able to pronounce it correctly.
  17.  
  18. Ch  like ch in children
  19. a   like o  in love
  20. ng  like ng in ringing
  21. i   like i  in rings
  22.  
  23.  
  24.  
  25. What's this crap for?
  26. ---------------------
  27.  
  28. Changi is a NNTP server for OS/2. In fact it is a set of programs
  29. to enable you reading and writing newsgroup articles using your
  30. favourite NNTP newsreader (NR/2, TIN and others) on a single
  31. machine or in a local TCP/IP network. You may also use it to query
  32. new articles from your NNTP newsfeed, read them offline, post new
  33. articles offline and send them to your newsfeed at a later time.
  34. If you prefer UUCP to exchange news with the outer world, you may
  35. use UUPC for OS/2, to which Changi is fully compatible.
  36.  
  37.  
  38.  
  39. Legal stuff
  40. -----------
  41.  
  42. Permission is granted to any individual or institution to use,
  43. copy, or redistribute this executable so long as it is not sold
  44. for profit. However, this may not apply to any part of source code.
  45.  
  46. LIKE ANYTHING ELSE THAT'S FREE, CHANGI AND ITS ASSOCIATED UTILITIES
  47. ARE PROVIDED AS IS AND COME WITH NO WARRANTY OF ANY KIND, EITHER
  48. EXPRESSED OR IMPLIED.
  49.  
  50. This is the first release of a NNTP daemon for OS/2. It is a quick
  51. and dirty port of NNTP 1.5.11t5. Therefore credits should go to it's
  52. authors, Phil Lapsley, Stan Barber and others.
  53.  
  54. Parts of the Changi distribution are copyright by Kendra Electronic.
  55. Other parts were stolen from code written by Kai Uwe Rommel.
  56.  
  57. Hey, wait! Nothing is really free...today. If you like Changi,
  58. send me a postcard with a picture of your hometown. A single
  59. postcard can make my day, you know. It will also keep my motivation
  60. high to put more effort in a possible refinement of this program.
  61.  
  62. Send your postcard to
  63.  
  64.     Harald Kipp
  65.     Luetgendortmunder Str. 50
  66.     44388 Dortmund
  67.     Germany
  68.  
  69. THERE MAY BE ONLY TWO REASONS FOR NOT SENDING A POSTCARD.
  70.  
  71. 1. YOU DO NOT HAVE THE MONEY TO BUY THE STAMPS.
  72.  
  73. 2. THERE IS NO POST OFFICE NEAR (100 KILOMETERS) YOUR PLACE.
  74.    (Yes, there is one at the northpole.)
  75.  
  76. With version 0.5 I received postcards from
  77.  
  78. Alex (Surrey, UK)
  79. Bill (one from NY, the other from Dallas)
  80. Harold (Montreal)
  81. John (SF, near Germany)
  82.  
  83. Five cards from four people is not bad, if you consider the
  84. difficulties of an email and newsgroup freak to find out about
  85. postcards, stamps and post offices. <g>
  86.  
  87.  
  88. Obtaining the latest version
  89. ----------------------------
  90.  
  91. Every new version will be sent to ftp.hobbes.nmsu.edu and announced
  92. in comp.os.os2.networking.tcp-ip.
  93.  
  94.  
  95.  
  96.  
  97. Changi                                                  Getting help
  98. ====================================================================
  99.  
  100. Please send flames, suggestions, bug reports for this modified
  101. version to:
  102.  
  103. Internet: harald@os2point.ping.de (home)
  104.           harald@sesam.com        (office)
  105.  
  106. Fido:     2:2448/434 (home)
  107.           2:2448/404 (office)
  108.  
  109. Both internet links are not very reliable, while the Fido nodes
  110. might not be checked daily. If you cannot reach me at one address,
  111. try another.
  112.  
  113. English is not my native language, but I'm interested to improve it.
  114. Don't hesitate to tell me about grammatical mistakes or other bad
  115. linguistic use in this document.
  116.  
  117.  
  118. Where to find help too
  119. ----------------------
  120.  
  121. The author and other people a frequently checking the newsgroup
  122.  
  123.     comp.os.os2.networking.tcp-ip
  124.  
  125. for discussions related to Changi. Before posting your problems or
  126. suggestions to this newsgroup remember that Usenet is a volunteer
  127. network. All the code, maintenance, and answering are done by people
  128. who freely give their time to help the net. Please consider this and
  129. treat them accordingly.  Be as precise as possible so that overworked
  130. knowledgeable people will not waste time trying to solve the wrong
  131. problem.
  132.  
  133. Do not post articles to this group, which are not directly connected
  134. to OS/2, TCP/IP and their related tools. For general questions about
  135. Usenet you might look into the following newsgroups:
  136.  
  137. news.admin.misc         General topics of network news administration.
  138. news.admin.policy       Policy issues of Usenet.
  139. news.admin.technical    Maintaining network news. (Moderated)
  140. news.software.b         Discussion about B-news-compatible software.
  141. news.software.nn        Discussion about the "nn" news reader package.
  142. news.software.nntp      The Network News Transfer Protocol.
  143. news.software.readers   Software used to read network news.
  144. news.sysadmin           Comments directed to system administrators.
  145. news.announce.newusers  Explanatory postings for new users.
  146. news.newusers.questions Q & A for users new to the Usenet.
  147.  
  148.  
  149.  
  150. Changi                                                     Upgrading
  151. ====================================================================
  152.  
  153. This version contains many changes to the previous release 0.5.
  154. And it contains even more bug fixes, but due to the many changes
  155. new bugs may have been included too.
  156.  
  157. The environment variable NEWSSERVER is no longer used. Programs
  158. in this package will now read the variable named NNTPSERVER
  159. instead.
  160.  
  161. You may use either slashes or backslashes to specify directory
  162. paths, but backslashes are now the preferred method to avoid
  163. trouble with 4OS2.
  164.  
  165. There a three new programs included. One is called Chanco which
  166. will handle control messages. Another is called Shrink and
  167. may be applied to your ever growing logfiles. And at least
  168. I added the long missing Expire to keep your newsbase tidy.
  169.  
  170. Many programs in this package got many new options.
  171.  
  172. For a quick start you may simply copy all binaries of this new
  173. version to your CHANGIWORKDIR and enter the NNTPSERVER environment
  174. setting into your config.sys. At least check your changi.cfg
  175. against the one included here for new items.
  176.  
  177.  
  178. Other changes
  179. -------------
  180.  
  181. I didn't understand the implementation of xover for a long time
  182. and didn't fully implement it in the current version. But at least
  183. Changi is now faking it.
  184.  
  185. Code in the logfile module has been cleaned up. At least the most
  186. important logging of NNTP telegrams is working now.
  187.  
  188. The IHAVE protocol has been implemented. Unfortunately I can't test
  189. it.
  190.  
  191. The server wasn't drive aware. All directories had to reside on the
  192. same drive. This had been fixed.
  193.  
  194. A new configuration file item 'access' may be used to limit access
  195. rights of other hosts on Changi.
  196.  
  197. Added support for active.times, so NEWGROUPS should work now. A new
  198. configuration item 'actimes' specifies the path to this file.
  199.  
  200.  
  201. Changi                                                       Package
  202. ====================================================================
  203.  
  204. The Changi distribution is divided into several different programs
  205. to provide high flexibility, compatibility with other news
  206. processing software and easy expandability.
  207.  
  208. CHANGI.EXE
  209. The NNTP server program is running permanently in the background.
  210. Best place to start it will be the tcpexit.cmd.
  211.  
  212. CHANX.EXE
  213. This is a NNTP client used to transfer news articles between the
  214. newsbase on your local machine and a NNTP server on a remote host.
  215.  
  216. INEWS.EXE
  217. This program is called by Changi whenever a connected client is
  218. posting in article. Inews will store the article in the spool
  219. directory for later transfer by chanx and it will call Rnews.
  220.  
  221. RNEWS.EXE
  222. Called by Inews and Chanx (and even Changi in special cases) this
  223. program stores an article in the local newsbase. If the article
  224. contains a control message, Rnews will call Chanco.
  225.  
  226. CHANCO.EXE      !!! NEW !!!
  227. This program may be called from the command line to create new or
  228. remove outdated newsgroups. When called by Rnews it is also used to
  229. cancel news articles.
  230.  
  231. EXPIRE.EXE      !!! NEW !!!
  232. You should call this program once a day to keep your local newsbase
  233. tidy. Expire may also be used to recreate your history file.
  234.  
  235. SHRINK.EXE      !!! NEW !!!
  236. All programs in the Changi distribution will create ever growing
  237. log files. Use this program to shrink them to a specified size.
  238.  
  239. For your convenience a sample CHANGI.CFG is included. Use any
  240. text editor to modify this file to meet your needs.
  241.  
  242.  
  243. Changi                                                  Installation
  244. ====================================================================
  245.  
  246. You need OS/2 but you don't need Warp. Any version including 1.3
  247. or above should be sufficient.
  248.  
  249. Changi needs HPFS. It will not work on FAT formatted drives.
  250.  
  251. You need either IBM TCP/IP for OS/2 (base kit version 1.2.1 or
  252. above) or WARP IAK.
  253.  
  254.  
  255.  
  256. How to install?
  257. ---------------
  258.  
  259. Create a new directory, copy the Changi archive into it and
  260. unpack it.
  261.  
  262. Edit your config.sys to add a new environment variable named
  263. CHANGIWORKDIR which points to the directory where you unpacked
  264. Changi.
  265.  
  266. For example, if you put Changi into C:\Changi then you must add
  267.  
  268.         SET CHANGIWORKDIR=C:\Changi
  269.  
  270. to your config.sys. In addition Changi will use the following
  271. environment, if set:
  272.  
  273.         SET TMP=<directory>
  274.         SET NNTPSERVER=<hostname without domain>
  275.         SET HOSTNAME=<local hostname with domain>
  276.  
  277. Under any circumstances, you need at least take a look at or
  278. create and/or edit the following files that all should be in
  279. your %CHANGIWORKDIR% directory, if not otherwise specified.
  280.  
  281. changi.cfg         - the global configuration file
  282. active             - the active file
  283.  
  284. Changi operates via TCP/IP at the port indicated in the 'nntp'
  285. service entry in a file named services. Make sure that the
  286. following line exists in your etc\services file:
  287.  
  288.         nntp  119/tcp
  289.  
  290. Edit changi.cfg to meet your needs. This file contains lots of
  291. comments to help you choosing the correct settings.
  292.  
  293. You must also create a simple text file in the CHANGIWORKDIR
  294. named active. This file must contain all newsgroup names you wish
  295. to read from or write to, one per line with some extra information.
  296. The format of this file is described in detail in one of the
  297. following chapters.
  298.  
  299. If you haven't installed the TCP/IP base kit and want to run
  300. the server on a machine with IAK only without being connected
  301. to the net, run the following command before starting Changi.
  302.  
  303.    ifconfig lo 127.0.0.1
  304.  
  305. You may now refer to your machine using this ip-address. For
  306. example you may start NR/2 with
  307.  
  308.     nr2 127.0.0.1
  309.  
  310.  
  311. Reboot your computer to make your changes in the config.sys working.
  312.  
  313. Change to the Changi directory and start Changi.exe.
  314.  
  315. Start nr2.exe (part of the IAK) with your IP address (setup with
  316. ifconfig) as a command line parameter.
  317.  
  318.  
  319. Changi                                                 Configuration
  320. ====================================================================
  321.  
  322. All programs in this package get their configuration from three
  323. sources. They read the contents of specific enironment variables,
  324. read the contents of a configuration file usually named changi.cfg
  325. and they read their command line parameters. Command line parameters
  326. may overwrite settings in the configuration file, while these may
  327. overwrite environment settings.
  328.  
  329. Environment variables
  330. ---------------------
  331.  
  332. SET CHANGIWORKDIR=<dirpath>
  333. This specifies the home (or root) directory for Changi. Any
  334. reference to a file or directory given without an absolute path
  335. will be assumed to live in this directory. Although this parameter
  336. is optional it should be specified. If not given, the current
  337. directory is used.
  338.  
  339. SET TMP=<dirpath>
  340. Specifies a directory to be used for temporary files. This may
  341. point to a RAM-disk, although I won't recommend it. At least
  342. one hole article must fit in this directory. Be aware that other
  343. programs may use this too and it is not a good idea to run OS/2
  344. with a huge RAM-disk. This parameter is optional, if not defined
  345. Changi will use the current directory.
  346.  
  347. SET HOSTNAME=<fulldomain>
  348. Specifies the full domain name of your local host. If you don't
  349. define this parameter you must include the MyDomain item in
  350. the configuration file.
  351.  
  352. SET NNTPSERVER=<hostname>
  353. Specifies either the simple hostname or the full domain name of
  354. your remote host. If you don't define this parameter you must
  355. include the Newsserver item in the configuration file.
  356.  
  357.  
  358. Configuration file
  359. ------------------
  360.  
  361. The programs of the Changi distribution will by default read
  362. additional configuration options from the file changi.cfg. This
  363. file is read on a line by line basis. Lines starting with a '#'
  364. (number sign) are treated as comments and are ignored. Empty line
  365. are allowed to increase readability. Configuration lines are
  366. specified by a keyword followed by one or more spaces and/or tabs
  367. and a specific parameter. All keywords are case insensitive.
  368.  
  369. This file might be read by all programs of the Changi distribution.
  370. However, not every program uses each parameter.
  371.  
  372.  
  373. Defining nodenames in the configuration file
  374. --------------------------------------------
  375.  
  376. MYDOMAIN <fulldomainname>
  377. Full domain name of your local host on which Changi is running. If
  378. you do not specify this item then you must set the HOSTNAME
  379. environment variable with the full domain name.
  380.  
  381.  
  382. MYNODE <hostname>
  383. Node name of your local host on which Changi is running. If you do
  384. not specify this name then Changi will use the beginning of the full
  385. domain name up to the first dot character.
  386.  
  387.  
  388. NEWSSERVER <hostname>
  389. You may either give the name of your news feed here or set the
  390. NNTPSERVER environment variable. You should not append any domain
  391. information unless your local host and this remote host are in
  392. different domains.
  393.  
  394.  
  395.  
  396. Defining directories in the configuration file
  397. ----------------------------------------------
  398.  
  399. You may either specify a single directory name without any path or
  400. you may otherwise give the full pathname. Under no circumstances
  401. partial (relative) directory paths are acceptable. If you supply
  402. the name of a single directory then the program will build a full
  403. path by appending that name to the value of the CHANGIWORKDIR
  404. environment variable.
  405.  
  406.  
  407. NEWSDIR <directory>
  408. All articles will be stored in subdirectories below this point. If
  409. this directory does not exist, the program will create it for you.
  410. Default is 'news'.
  411.  
  412.  
  413. SPOOLDIR <directory>
  414. All outgoing articles will be stored in this directory. Default is
  415. 'spool'.
  416.  
  417.  
  418. Defining filenames in the configuration file
  419. --------------------------------------------
  420.  
  421. Like with directories you may either specify the filename without
  422. any path or with it's full pathname. If no path is given then the
  423. program expects that file in the directory given by the contents
  424. of the CHANGIWORKDIR environment variable.
  425.  
  426.  
  427. ACCESS <filename>
  428. This optional parameter defines a file containing access
  429. restrictions to your NNTP server.
  430.  
  431.  
  432. ACTIMES <filename>
  433. An optional parameter specifying the name of a file, which contains
  434. a list of new created newsgroups. By default 'active.times' will be
  435. used. Changi will create this file automatically if a new newsgroup
  436. is created.
  437.  
  438.  
  439. ACTIVE <filename>
  440. This optional parameter specifies the name of a file, which contains
  441. a list of all active newsgroups. By default Changi will assume a
  442. file named 'active' in the CHANGIWORKDIR. This file must exist.
  443.  
  444.  
  445. HISTORY <filename>
  446. This parameter overwrites the name of your history file. You should
  447. not specify an extension. By default Changi will assume 'history'
  448. in the CHANGIWORKDIR and create the two files 'history.pag' and
  449. 'history.dir' while news are coming in.
  450.  
  451.  
  452.  
  453. Defining special newsgroups in the configuration file
  454. -----------------------------------------------------
  455.  
  456. DUPEGROUP <newsgroup>
  457. Name of the newsgroup where Changi will store received duplicate
  458. articles. The name 'duplicates' will be used if this parameter isn't
  459. defined. If the specified group does not exist in the active file,
  460. duplicate articles are junked.
  461.  
  462.  
  463. JUNKGROUP <newsgroup>
  464. Name of the newsgroup to store junked articles. Default is 'junk'.
  465. If the specified group doesn't exist in the active file, junked
  466. articles are discarded.
  467.  
  468.  
  469. Defining program calls in the configuration file
  470. ------------------------------------------------
  471.  
  472. If you specify the name of the program without path then that
  473. program must reside in one of the directories given by your PATH
  474. environment variable. Otherwise you must give it's full pathname.
  475.  
  476.  
  477. CONTROL <programcall>
  478. Specifies the command line to be called if control messages are
  479. received. By default 'chanco' will be called, which is part of
  480. the Changi distribution.
  481.  
  482.  
  483. GUNZIP <programcall>
  484. Specifies the pathname of a program to be used to uncompress zipped
  485. batchfiles. If not defined, then 'gzip -d' will be used. You won't
  486. need to define this parameter unless you are using UUCP to transfer
  487. your news, because Changi itself will never create compressed
  488. batches. The gzip program is not part of the changi distribution.
  489.  
  490.  
  491. INEWS <programcall>
  492. Overwrites the command line which Changi will use to inject news
  493. articles to the net. By default Changi will call 'inews' without
  494. any command line parameters. The inews program is part of the
  495. Changi distribution. However, you are free to use a similar program
  496. from other sources.
  497.  
  498. RNEWS <programcall>
  499. Defines the command line which Changi will use to store news
  500. articles in the local newsbase. By default Changi will call 'rnews'
  501. without any command line options. The rnews program is part of the
  502. Changi distribution. However, you are free to use a similar program
  503. from other sources.
  504.  
  505.  
  506. UNCOMPRESS <programcall>
  507. This program will only be used if rnews must process compressed
  508. batches which had been received by UUCP. If you don't know what this
  509. might be good for then you won't need it. Default is 'uncompre'.
  510. This program is not part of the Changi distirbution.
  511.  
  512.  
  513. Changi                                                  File formats
  514. ====================================================================
  515.  
  516. This chapter provides a list of data files used by the Changi
  517. distribution. It explains contents and usage of these files.
  518.  
  519. active
  520. ------
  521.  
  522. This file must contain all newsgroup names you wish to read from or
  523. write to, one per line, including current maximum and minimum
  524. article numbers and moderation status. You can use any text editor
  525. to create this file.
  526.  
  527. Note, that the current version of Changi can only handle active
  528. files with a maximum size of 32 kByte.
  529.  
  530. Here is an example line
  531.  
  532.                         These may be spaces or tabs
  533.                              v v v
  534. comp.os.os2.networking.tcp-ip 0 1 y
  535. ^                             ^ ^ ^
  536. Name of the newsgroup         ^ ^ ^
  537.                               ^ ^ ^
  538.          Highest article number ^ ^
  539.          initially 0            ^ ^
  540.                                 ^ ^
  541.             Lowest article number ^
  542.             initially 1           ^
  543.                                   ^
  544. Means yes, you may post to this group
  545. use n to prohibit posting (read only)
  546. use m for moderated groups
  547.  
  548. After receiving articles for a while the line might look like this:
  549.  
  550. comp.os.os2.networking.tcp-ip 10929 8732 y
  551.  
  552. With this line and the configuration Changi expects articles in the
  553. files
  554.  
  555. %CHANGIWORKDIR%\news\comp\os\os2\networking\tcp-ip\8732
  556.  
  557. up to
  558.  
  559. %CHANGIWORKDIR%\news\comp\os\os2\networking\tcp-ip\10929
  560.  
  561. After the initial creation of this file you should use Chanco to
  562. create new newsgroups.
  563.  
  564.  
  565. active.old
  566. ----------
  567.  
  568. Backup of the previous active file created by Changi when modifying
  569. the original.
  570.  
  571.  
  572. history
  573. -------
  574.  
  575. This files contains a list of articles currently known at this site,
  576. with reception date, article size and pathname.
  577.  
  578. By default Changi will assume 'history' in the CHANGIWORKDIR. It
  579. will automatically create two files while news are coming in. One is
  580. named 'history.dir' and contains an index to the second one named
  581. 'history.pag', which is a simple text file.
  582.  
  583. Here is an example line of my history.pag file:
  584.  
  585.                                       This must be a colon
  586.                                                          v
  587.                      These MUST be spaces (no tabs!)     v
  588.                          v         v   v                 v
  589. <5d1L8YlGGiB@cat.ping.de> 789107022 939 comp.os.os2.setup:12235
  590. ^                         ^         ^   ^                 ^
  591. Message-id                ^         ^   ^                 ^
  592.                           ^         ^   ^                 ^
  593.       Time at which article         ^   ^                 ^
  594.       was received (seconds)        ^   ^                 ^
  595.                                     ^   ^                 ^
  596.                  Lines in the article   ^                 ^
  597.                                         ^                 ^
  598.         This is the name of the newsgroup                 ^
  599.                                                           ^
  600.                           This is the number of the article
  601.  
  602. First a connected newsreader may asks Changi for all ids of a
  603. specified newsgroup received after a specified time. The time is
  604. used to maintain the number of unread articles and is given in
  605. seconds since 01/01/1970. For example, when NR/2 starts for the
  606. very first time it will ask for all articles since 01/01/1986.
  607.  
  608. To retrieve the article of our example line, the newsreader will
  609. query for
  610.  
  611. <5d1L8YlGGiB@cat.ping.de>
  612.  
  613. and Changi tries to find a line in the history file with this id
  614. at the beginning. In our example the article itself will exist in
  615.  
  616. %CHANGIWORKDIR%\news\comp\os\os2\setup\12235
  617.  
  618. If your history files get lost or corrupted you can use Expire to
  619. recreate it.
  620.  
  621. SEQF
  622. ----
  623.  
  624. This file is created and maintained by Inews and contains a simple
  625. number. This number will be used for creating job-ids. The local
  626. time in seconds since 01/01/1970 will be used too, but because it
  627. is possible that more than one spool job might be created within a
  628. single second, Changi uses this extra counter. It is incremented
  629. with each spool job.
  630.  
  631.  
  632. active.times
  633. ------------
  634.  
  635. Chanco will create and maintain this file if new newsgroups are
  636. created. It contains a list of created newsgroups and the time they
  637. were created, aimed at making it possible for news readers to be
  638. smarter about knowing when a group is new.
  639.  
  640. newsgroups
  641. ----------
  642.  
  643. List of know newsgroups and descriptions. Each line contains a group
  644. name, a tab, and a terse description of the group. The descriptions
  645. are read only by humans.
  646.  
  647. You may either create this file with your text editor or use Chanx
  648. to retrieve a list from your news feed.
  649.  
  650. Spool files
  651. -----------
  652.  
  653. After posting an article to, let's say lilly, Inews will create
  654.  
  655.     spool\lilly\C\<somethingweird>
  656.     spool\lilly\D\<somethingweird>
  657.  
  658. if called with option '-U', or
  659.  
  660.     spool\C.lilly<somethingwierd>
  661.     spool\D.lilly<somethingwierd>
  662.  
  663. if called without this option.
  664.  
  665.  
  666. ====================================================================
  667. Changi Daemon                                   Command line options
  668. ====================================================================
  669.  
  670. While the previous chapter was dealing with those configuration
  671. items used by all programs of the Changi distribution, the following
  672. information is specific to changi.exe only. Some of these options
  673. may be used to overwrite definitions made in the configuration file.
  674.  
  675.  
  676. -?
  677. The program will display a usage help and stop immediately.
  678.  
  679. -a <filename>
  680. Overwrites the name of the active file.
  681.  
  682. -c <filename>
  683. Sets the name of the configuration file. By default 'changi.cfg'
  684. will be used.
  685.  
  686. -da
  687. Logs active file handling for debugging.
  688.  
  689. -dd
  690. Logs history file handling for debugging.
  691.  
  692. -df
  693. Enables log file flushing. Should be specified for debugging
  694. only because this might dramatically increase your system load.
  695.  
  696. -dr
  697. Logs all NNTP telegrams received from the remote host. Used for
  698. debugging.
  699.  
  700. -ds
  701. Logs all NNTP telegrams sent to the remote host. Used for debugging.
  702.  
  703. -i <programcall>
  704. Overwrites the command line to inject news into the net.
  705.  
  706. -n <directory>
  707. Overwrites the name of your local news directoy.
  708.  
  709. -r <programcall>
  710. Overwrites the command line to store news received from the net.
  711. Changi uses this parameter if news are received with the IHAVE
  712. protocol.
  713.  
  714. -y <filename>
  715. Overwrites the name of the history file.
  716.  
  717.  
  718. Changi Daemon                         Configuring access permissions
  719. ====================================================================
  720.  
  721. You may choose to limit the hosts that can query the server for
  722. news. Further, you may not wish to allow certain hosts to post news.
  723. Finally, you may wish to restrict the newsgroups that can be
  724. accessed from remote hosts. Such limiting can be accomplished
  725. through an access file, usually named 'nntp_access'.
  726.  
  727. To do so, define an access entry in your changi.cfg and create
  728. 'nntp_access' with your text editor.
  729.  
  730. If you are using Changi as a simple offline newsreader, then there
  731. is no need to bother with this file. However, if you keep Changi
  732. running while being connected to any net, either a local LAN or the
  733. Internet via modem, you should limit access for foreign hosts.
  734.  
  735. This file consists of several lines with three or four fields
  736. separated by spaces in the each line. Anything to the right of a
  737. '#' (number sign) character is taken to be a comment and is ignored.
  738.  
  739. The absence of an entry corresponding to a client's host or domain
  740. implies that the client is not allowed to read or post news.
  741.  
  742. Changi is selective and searches for a best match when searching
  743. this file to check its client's permissions. That is, a specific
  744. host name match is used over a client being a member of a specified
  745. domain.
  746.  
  747.  
  748. General format of nntp_access
  749. -----------------------------
  750.  
  751. Every entry must have the following format:
  752.  
  753. host|*.domain|default  read|xfer|both|no  post|no  [newsgroups]
  754.  
  755.  
  756. host|*.domain
  757. This may be any valid host name, host address in the dotted decimal
  758. form or any valid domain part of a hostname preceeded by an asterisk.
  759. Default permissions can be set by having the first entry in the file
  760. be a host name of 'default'. If used, 'default' must be the first
  761. entry.
  762.  
  763.  
  764. read|xfer|both|no
  765. The second field of the entry specifies the read access of the host
  766. in question.
  767.  
  768.     read  Hosts can read news. This means that all commands except
  769.           IHAVE and POST can be executed.
  770.  
  771.     xfer  Matching hosts can only execute commands used for
  772.           transferring news, such as NEWNEWS, NEWGROUPS, IHAVE, and
  773.           ARTICLE with message-id parameters.
  774.  
  775.     both  These host can execute all commands but POST.
  776.  
  777.     no    This string denies read permission of any kind to a
  778.           matching host.
  779.  
  780.  
  781. post|no
  782. The third field defines whether a matching host has post permission.
  783.  
  784.     post  The POST command is permitted
  785.  
  786.     no    Matching clients are not allowed to post news.
  787.  
  788. newsgroups
  789. This field is optional, and, if present, is a comma separated list
  790. of newsgroup names that restrict the client's reading ability.
  791. Clients are not allowed to read or transfer articles in newsgroup
  792. names preceded by an exclamation point. By default, clients are
  793. allowed to read all newsgroups.
  794.  
  795. Sample nntp_access
  796. ------------------
  797.  
  798. #
  799. # Comments are preceded by '#'
  800. #
  801. default         no      no
  802. naxos           read    post
  803. dumbgate        xfer    no      comp.os.os2*
  804. *.ping.de       read    no      !sesam*
  805.  
  806. Clients on naxos may freely read an post articles, while dumbgate
  807. is only allowed to transfer news of the group comp.os.os2 and all
  808. it's subgroups. Other hosts in the domain ping.de might read any
  809. group except those starting with sesam. The rest of the world isn't
  810. granted any access at all.
  811.  
  812.  
  813.  
  814. Changi Daemon                                              Operation
  815. ====================================================================
  816.  
  817. The server handles clients on a multithreaded basis, creating
  818. threads to take care of clients as they request connections. Each
  819. thread changes its current directory to the news directory and
  820. then executes commands from its client. The standard commands are
  821. described in RFC 977, which differs from the Changi implementation
  822. in the following way.
  823.  
  824.  
  825. SLAVE
  826. This command is not implemented.
  827.  
  828.  
  829. XHDR header [<messageid>|articlerange]
  830. This is a common extension used by many newsreaders to retrieve
  831. certain header lines.
  832.  
  833.  
  834. XOVER [range]
  835. This also is a common extension. It returns overview data for the
  836. specified range of messages. The default is to return the data for
  837. the current article.
  838.  
  839.  
  840. Bugs
  841. ----
  842.  
  843. Supporting no locking mechanism is one of the major drawbacks of
  844. the current implementation. To avoid any file access conflicts
  845. you should ensure, that all clients are disconnected while
  846. receiving news by Chanx or UUPC or while running Expire.
  847.  
  848. Changi can only be stopped by pressing Ctrl+C. If clients were
  849. connected while stopping the program, Changi can't be restarted
  850. unless all clients have been disconnected. This is because
  851. TCP/IP has a very long timeout on socket connections when the
  852. server dies.
  853.  
  854. Changi does not support real XOVER mechanism, but a fake only.
  855.  
  856. Changi has no provision in the current version to send articles
  857. with the IHAVE protocol.
  858.  
  859.  
  860. ====================================================================
  861. Chanx                                            Passive NNTP client
  862. ====================================================================
  863.  
  864. Chanx is a small passive client to send news articles to and
  865. retrieve from a remote NNTP server. After establishing a connecting
  866. it will send locally posted articles to a remote server and retrieve
  867. new articles of a specified set of newsgroups that have arrived
  868. after a particular time, which usually is the last time it was
  869. invoked.
  870.  
  871.  
  872. Chanx features
  873. --------------
  874.  
  875. - Compatible with most NNTP servers. From the server point of
  876.   view Chanx behaves like a typical newsreader.
  877.  
  878. - Several options may significantly decrease article transfer
  879.   times.
  880.  
  881. - An unlimited number of newsgroups can be retrieved in a single
  882.   session.
  883.  
  884. - Chanx can read .newsrc for a list of newsgroups to retrieve.
  885.  
  886. - Chanx will use date and time of the remote host to avoid article
  887.   loss due to unsynchronized clocks.
  888.  
  889. - In case of lost connections Chanx will provides several methods
  890.   for recovery.
  891.  
  892.  
  893.  
  894. Chanx                                           Command line options
  895. ====================================================================
  896.  
  897. Simply call the program without any options to get a usage help:
  898.  
  899.   Usage: chanx [options] host [groups YYMMDD HHMMSS [dist]]
  900.  
  901. -c <configfile>
  902. sets the name of the configuration file. By default Chanx will
  903. use changi.cfg.
  904.  
  905. -df
  906. Enables log file flushing. Should be specified for debugging
  907. only because this might dramatically increase your system load.
  908.  
  909. -dr
  910. logs all NNTP telegrams sent by the remote host.
  911.  
  912. -ds
  913. logs all NNTP telegrams sent to the remote host.
  914.  
  915. -k <size>
  916. sets maximum number of k-bytes of articles to retrieve from the
  917. remote host. Chanx will check for this limit each time before
  918. retrieving an article.
  919.  
  920. -mb
  921. (batch mode) will not directly store retrieved articles into
  922. the newsbase but creates a temporary file named batch.<host>.
  923. This option might decrease the connection time while using
  924. large amounts of diskspace.
  925.  
  926. -mc
  927. (continuation mode) retrieves articles which ids had been
  928. collected in a previous session. In this mode chanx will neither
  929. post nor query new articles.
  930.  
  931. -me
  932. (enhanced mode) will use an enhanced mode during article retrieval,
  933. which may significantly speed up article transfer. Of course this
  934. will put an extra load on the remote host.
  935.  
  936. -mi
  937. (ignore previous) ignores article ids collected in a previous
  938. session.
  939.  
  940. -mn
  941. retrieves the current newsgroups list from the server.
  942.  
  943. -mo
  944. (omit update) will not update nntp.hostname. By default Chanx
  945. updates this file after retrieving the ids of all new articles
  946. from the server.
  947.  
  948. -mp
  949. (post only) disables the retrieval of new news.
  950.  
  951. -mq
  952. (query only) stops Chanx from posting.
  953.  
  954. -mr
  955. will send 'MODE READER' to the server. This should be used with
  956. INN running on the remote site if it needs to be switched from innd
  957. to nnrpd in order to talk to passive clients.
  958.  
  959. -ms
  960. will send a 'SLAVE' command to the server. Some NNTP servers
  961. might increase the priority for the current session.
  962.  
  963. -p <port>
  964. specifies a different port number. By default Chanx uses the nntp
  965. entry in etc\services or port 119 if no entry was found.
  966.  
  967. -r <rnewscall>
  968. overwrites the rnewscall configuration item.
  969.  
  970. -s <spooldir>
  971. overwrites the spooldir configuration item. Chanx will check
  972. this directory for waiting posts.
  973.  
  974. -t <minutes>
  975. sets maximum connection time in minutes. Note that this function
  976. will only work as long as the remote host is sending data. Chanx
  977. will check for this limit each time before retrieving an article.
  978. Situations in which the server on the remote host stops responding
  979. while keeping the connection alive must be handled somewhere else
  980. (slip/modem timeout etc.).
  981.  
  982. -y <historyfile>
  983. overwrites the historyfile configuration item.
  984.  
  985. host
  986. is the hostname of the remote site. This parameter must
  987. be specified.
  988.  
  989. groups
  990. is a list of the newsgroups you want to request for new
  991. articles. Seperate them with a comma. You may use the star
  992. character at the end of a newsgroupname as a joker.
  993. As an alternative you may use a full specified path to a
  994. newsrc file containing the newsgroups you want to retrieve.
  995. This file should contain one newsgroup per line, each followed
  996. by a colon. Chanx will ignore anything following the colon
  997. and it will not modify or update this file in any way.
  998.  
  999. YYMMDD HHMMSS
  1000. specifies date and time in GMT, not your local time. All
  1001. articles, which have arrived at the server after this time will
  1002. be retrieved.
  1003.  
  1004. dist
  1005. will only query articles with this distribution. This item
  1006. is only included for completeness. It may put heavy loads on the
  1007. server and substantially increase the transfer time.
  1008.  
  1009. I'll give you an example.
  1010.  
  1011.     chanx sehost.sesam.com comp.os.os2*,alt* 950202 000000
  1012.  
  1013. will query the server sehost.sesam.com for all articles of newsgroups
  1014. beginning with comp.os.os2 and alt which had been received by this
  1015. server since 02/02/95.
  1016.  
  1017. If you don't specify the groups then you cannot specify date
  1018. and time. Default for the groups parameter is *, which means all
  1019. newsgroups available on that server. Default time is 000000 and
  1020. default date is the current day.
  1021.  
  1022. However, all defaults apply only to your first connect with the
  1023. specified server. After that Chanx will store the name of
  1024. the newsgroups and the time of the last request in a file
  1025. named nntp.hostname. Next time you simply enter
  1026.  
  1027.     chanx host
  1028.  
  1029. Chanx will only retrieve those articles which have been received
  1030. by the remote server after the time of your last query.
  1031.  
  1032. You are free to edit the nntp.host file in order to change your list
  1033. of newsgroups or the date of your last request. The file is
  1034. a simple textfile containing one single line with three fields
  1035. speparated by blanks.
  1036.  
  1037.     groups date time
  1038.  
  1039. Remember that all newsgroups you want to read later on must be
  1040. defined in your active file.
  1041.  
  1042. If you've posted articles to a newsgroup then Chanx will send
  1043. them to your feet automatically before querying new ones.
  1044.  
  1045.  
  1046.  
  1047. Chanx                                                      Operation
  1048. ====================================================================
  1049.  
  1050. Chanx will first get the newsgroup list, distribution list and the
  1051. start time for the specified server, either from the nntp.host file
  1052. or from command line options.
  1053.  
  1054. The program will then connect to the NNTP server at the specified
  1055. host. With option -mr a 'MODE READER' command and with option -ms
  1056. a 'SLAVE' command will be sent to the server.
  1057.  
  1058. Now Chanx issues a 'NEWNEWS' command, asking for all new articles
  1059. that have arrived within a list of newsgroups after a specified
  1060. time. The server responds to this with a list of article identifers,
  1061. which will be stored by Chanx in a file named iwant.host. However,
  1062. each id will be checked before storage to avoid dupes. Only ids
  1063. not found in the local history file will be accepted.
  1064.  
  1065. If the list of newsgroups is too large to fit in a single NNTP
  1066. standard line (512 bytes maximum), then Chanx will repeat the
  1067. 'NEWNEWS' command until all newsgroups have been requested.
  1068.  
  1069. After this Chanx starts retrieving the article for each id of
  1070. the list in file iwant.host. Depending on option ??? Chanx
  1071. will either add these articles to a file named batch.host or
  1072. directly feed them to the rnews program.
  1073.  
  1074.  
  1075. Return codes
  1076. ------------
  1077.  
  1078. Chanx return codes will be useful to control program flow in
  1079. batch files.
  1080.  
  1081.  
  1082. 0  Completed successful
  1083. 1  Completed successful, but no articles received
  1084. 2  Configuration error or incorrect arguments
  1085. 3  General system error
  1086. 4  Unable to connect to remote host
  1087. 5  NNTP protocol error
  1088.  
  1089.  
  1090. Chanx known bugs
  1091. ----------------
  1092.  
  1093. Beside the lack of any locking mechanism, no bugs so far, which
  1094. probably means that there are lots of bugs to be discovered.
  1095.  
  1096.  
  1097.  
  1098. ====================================================================
  1099. Chanco                                     Control message processor
  1100. ====================================================================
  1101.  
  1102. Chanco is called by Rnews upon receiving a control message. In
  1103. addition the program may be called from the command line in order
  1104. to create new or remove outdated newsgroups.
  1105.  
  1106. Control messages are ordinary-looking news articles which contain a
  1107. special header line:
  1108.  
  1109. Control: <command> <options>
  1110.  
  1111. Such articles are filed in the pseudo-newsgroup control and cause
  1112. Rnews to call Chanco to perform related actions.
  1113.  
  1114.  
  1115. Return codes
  1116. ------------
  1117.  
  1118. Chanco return codes might be useful to control program flow in
  1119. batch files.
  1120.  
  1121.  
  1122. 0  Completed successful
  1123. 2  Configuration error or incorrect arguments
  1124. 3  General system error
  1125.  
  1126.  
  1127. Chanco known bugs
  1128. ------------------
  1129.  
  1130. Chanco doesn't support any locking mechanism.
  1131.  
  1132. The program is not very well tested.
  1133.  
  1134. Options -da and -dh don't work.
  1135.  
  1136.  
  1137. Chanco                                          Command line options
  1138. ====================================================================
  1139.  
  1140. Calling the program with '-?' option will display a usage help:
  1141.  
  1142.     usage: chanco [options] <command>
  1143.  
  1144.     commands:
  1145.       cancel <message-id>
  1146.       newgroup <newsgroup>
  1147.       rmgroup <newsgroup>
  1148.  
  1149.     options:
  1150.       -a<filename>   active file
  1151.       -c<filename>   config file
  1152.       -d<log-flags>  logfile flags
  1153.       -n<directory>  news directory
  1154.       -y<filename>   history file
  1155.  
  1156.     logfile flags:
  1157.       a  active file processing
  1158.       f  flush logfile after each line
  1159.       h  history file processing
  1160.  
  1161.  
  1162. -c <configfile>
  1163. sets the name of the configuration file. By default Chanco will
  1164. use changi.cfg.
  1165.  
  1166. -da
  1167. logs active file modifications.
  1168.  
  1169. -df
  1170. Enables log file flushing. Should be specified for debugging
  1171. only because this might dramatically increase your system load.
  1172.  
  1173. -dh
  1174. logs history file modifications.
  1175.  
  1176. -n <newsdir>
  1177. overwrites the newsdir configuration item. Chanco needs this
  1178. parameter to perform the cancel command.
  1179.  
  1180. -y <historyfile>
  1181. overwrites the historyfile configuration item.
  1182.  
  1183.  
  1184.  
  1185.  
  1186. ====================================================================
  1187. Inews                                                    Inject News
  1188. ====================================================================
  1189.  
  1190. Inews is used to store your postings in the spool directory for
  1191. later distribution (either by Chanx or UUPC).
  1192.  
  1193. It reads a Usenet news article (perhaps with headers) from a file or
  1194. standard input if no file is given, adds some headers and performs
  1195. some consistency checks.
  1196.  
  1197. If the article does not meet these checks (for example, posting to
  1198. non-existent newsgroups) then the article is rejected.
  1199.  
  1200. If it passes these checks, Inews stores to article together with
  1201. to special control files in the spool directory for distribution.
  1202. In the standard mode of operation, Inews calls Rnews to add the
  1203. article to the local newsbase too.
  1204.  
  1205. However, newsgroups that start with the six characters 'local.'
  1206. will not be spooled to other hosts.
  1207.  
  1208. Several headers may be specified on the command line.
  1209.  
  1210. Inews exits with a zero status if the article was succesfully posted
  1211. or mailed, or with a non-zero status if the article could not be
  1212. delivered.
  1213.  
  1214.  
  1215. Testing Inews
  1216. -------------
  1217.  
  1218. Testing Inews is quite easy. Create a file named test.art
  1219. containing something like (excluding the snip lines):
  1220.  
  1221. ------------------- snip ----------------------
  1222. Newsgroups: alt.test
  1223. From: me@frog.pizza.com
  1224. Subject: Testing
  1225. Reply-To: nobody@in.particular
  1226.  
  1227. This is a test
  1228. ------------------- snip ----------------------
  1229.  
  1230. After saving this file call Inews from the OS/2 command line.
  1231.  
  1232.     inews < test.art
  1233.  
  1234.  
  1235. What are the 'local.*' newsgroups for?
  1236. --------------------------------------
  1237.  
  1238. The local newsgroups (all newsgroups starting with local<dot>)
  1239. provide a simple way to create groups, which will not be posted
  1240. to the outside world.
  1241.  
  1242.  
  1243. Bugs
  1244. ----
  1245.  
  1246. Many command line option still don't work. <sigh>
  1247.  
  1248.  
  1249. Inews                                           Command line options
  1250. ====================================================================
  1251.  
  1252. Remember that all options with an attached parameter will accept a
  1253. single parameter only. If you need a value with more than one word
  1254. then quotes must be used to prevent inews from splitting them into
  1255. multiple parameters.
  1256.  
  1257.  
  1258. -A <approval>
  1259. Overwrite/adds an approval line. This is a potentially dangerous
  1260. option but at least needed for writing to one specific newsgroup
  1261. starting with alt (hint, hint, hint). Anyway, don't fiddle around
  1262. with this unless you really need it.
  1263.  
  1264. -c <configfile>
  1265. Sets the name of the configuration file. By default Inews will
  1266. use changi.cfg.
  1267.  
  1268. -C <newsgroups>
  1269. This option is used to create new newsgroups. Not implemented.
  1270. Use Chanco to create new groups.
  1271.  
  1272. -df
  1273. Enables log file flushing. Should be specified for debugging
  1274. only because this might dramatically increase your system load.
  1275.  
  1276. -d<flags>
  1277. Option '-df' is the only one currently working.
  1278.  
  1279. -D <distribution>
  1280. This option allows you to specify the maximum geographic
  1281. distribution of any post.
  1282.  
  1283. -e <expiration date>
  1284. This will override the default expiration date.
  1285.  
  1286. -f <sender>
  1287. This option specifies the article's sender.
  1288.  
  1289. -F <followup>
  1290. This option is used to attach a list of related articles which this
  1291. message references to.
  1292.  
  1293. -g <grade>
  1294. Specifies the grade for spooling articles to UUCP.
  1295.  
  1296. -h
  1297. ignored, but added for compatibility
  1298.  
  1299. -M
  1300. This flag is used for the creation of newsgroups. Not implemented.
  1301. Use Chanco to create new groups.
  1302.  
  1303. -N <newsgroups>
  1304. To submit an article to multiple newsgroups, the list must be
  1305. separated by commas.
  1306.  
  1307. -o <organization>
  1308. This options is used to specify organization name.
  1309.  
  1310. -r <reply to>
  1311. This parameter specifies the 'Reply-To:' line in the article
  1312. header.
  1313.  
  1314. -s <spooldir>
  1315. Specifies the spool directory.
  1316.  
  1317. -S <signature file>
  1318. Not implemented.
  1319.  
  1320. -t <subject>
  1321. Overwrites the 'Subject:' line in the article header.
  1322.  
  1323. -U
  1324. This option will force Inews to use the UUPC mangling mechanism for
  1325. the spool file names. Do not set this option if you are using
  1326. Chanx to transfer your locally posted articles to a remote host.
  1327.  
  1328. -v
  1329. Verbose, prints ids. Not implemented.
  1330.  
  1331.  
  1332.  
  1333.  
  1334. ====================================================================
  1335. Rnews                                                 Receiving news
  1336. ====================================================================
  1337.  
  1338. Rnews reads messages sent by a newsfeed and stores them in the
  1339. local newsbase. The message is read from the specified input file,
  1340. or standard input if no input is named.
  1341.  
  1342. When sent over UUCP, Usenet articles are typically joined in a
  1343. single file called batch file, to reduce the UUCP overhead. Batches
  1344. can also be compressed, to reduce the communication time.
  1345.  
  1346. If a message does not start with a number sign (``#'') and an
  1347. exclamation point, then the entire input is taken as a single news
  1348. article. If it does start with with those two characters, then the
  1349. first line is read and interpreted as a batch command.
  1350.  
  1351.  
  1352. What's the 'junk' newsgroup for?
  1353. --------------------------------
  1354.  
  1355. The junk newsgroup contains all the articles which rnews couldn't
  1356. file under a newsgroup name. These can include malformed postings,
  1357. postings to bogus groups, postings to groups that have been deleted,
  1358. postings to new groups that you haven't added yet, and postings to
  1359. groups that you don't carry at your site, and don't intend to.
  1360.  
  1361.  
  1362. Bugs
  1363. ----
  1364.  
  1365. Looks like Inews is not creating the spool directory. You
  1366. should create it manually.
  1367.  
  1368. Missing security checks and configuration on control messages.
  1369.  
  1370. Many command line options are not implemented.
  1371.  
  1372.  
  1373. Rnews                                           Command line options
  1374. ====================================================================
  1375.  
  1376. Remember that all options with an attached parameter will accept a
  1377. single parameter only. If you need a value with more than one word
  1378. then quotes must be used to prevent Rnews from splitting them into
  1379. multiple parameters.
  1380.  
  1381. -a <filename>
  1382. Overwrites the configured name of the active file.
  1383.  
  1384. -A <approval>
  1385. Overwrite/adds an approval line.
  1386.  
  1387. -c <configfile>
  1388. Sets the name of the configuration file. By default Rnews will
  1389. use changi.cfg.
  1390.  
  1391. -df
  1392. Enables log file flushing. Should be specified for debugging
  1393. only because this might dramatically increase your system load.
  1394.  
  1395. -d<flags>
  1396. Option '-df' is the only one currently working.
  1397.  
  1398. -D <distribution>
  1399. This option allows you to specify the maximum geographic
  1400. distribution of any post.
  1401.  
  1402. -e <expiration date>
  1403. This will override the default expiration date.
  1404.  
  1405. -f <sender>
  1406. This option specifies the article's sender.
  1407.  
  1408. -F <followup>
  1409. This option is used to attach a list of related articles which this
  1410. message references to.
  1411.  
  1412. -h
  1413. ignored, but added for compatibility
  1414.  
  1415. -N <newsgroups>
  1416. To submit an article to multiple newsgroups, the list must be
  1417. separated by commas.
  1418.  
  1419. -o <organization>
  1420. This options is used to specify organization name.
  1421.  
  1422. -r <reply to>
  1423. This parameter specifies the 'Reply-To:' line in the article
  1424. header.
  1425.  
  1426. -s <spooldir>
  1427. Specifies the spool directory.
  1428.  
  1429. -S <signature file>
  1430. Not implemented.
  1431.  
  1432. -t <subject>
  1433. Overwrites the 'Subject:' line in the article header.
  1434.  
  1435. -y <historyfile>
  1436. Overwrites the history file configuration item.
  1437.  
  1438.  
  1439.  
  1440. ====================================================================
  1441. Expire                                                   Cleaning up
  1442. ====================================================================
  1443.  
  1444. By default Expire scans the history file and uses the receive time
  1445. recorded in it to purge old news articles. If called with the '-h'
  1446. (ignore history) or '-r' (rebuild) option, Expire will use the
  1447. active file to scan the newsbase.
  1448.  
  1449. Expire makes its decisions on the time the article arrived, as
  1450. found in the history file. This means articles are often kept
  1451. longer than with other expiration programs that base their
  1452. decisions on the article's posting date.
  1453.  
  1454. Note, that Expire will keep the old history file while creating
  1455. a new one. As history files might grow very large, enough disk
  1456. space must be available. If in an emergency you should call
  1457. Expire with the '-h' option. In this case the program will
  1458. neither create a new history file nor touch the old one.
  1459.  
  1460.  
  1461. Bugs
  1462. ----
  1463.  
  1464. No locking supplied. Make sure that no clients are connected
  1465. to Changi and Inews isn't running before calling Expire.
  1466.  
  1467. The program has not been tested very well. Watch out for lots
  1468. of bugs.
  1469.  
  1470.  
  1471. Expire                                          Command line options
  1472. ====================================================================
  1473.  
  1474. Calling the program with the '-?' option will display a usage help:
  1475.  
  1476.     usage: expire [options] [newsgroups]
  1477.  
  1478.     newsgroups is a comma separated list of groups, which may
  1479.                include *, ? and [...] expressions
  1480.  
  1481.     options:
  1482.       -a<filename>   active file           -h ignore history
  1483.       -c<filename>   configuration file    -i ignore expire lines
  1484.       -e<days>       expire time           -r rebuild
  1485.       -E<days>       forget time
  1486.       -n<directory>  news directory
  1487.       -y<filename>   history filename
  1488.  
  1489.     logfile flags:
  1490.       e  log expiration progress
  1491.       f  flush logfile after each line
  1492.       t  test mode, do not really expire
  1493.  
  1494.  
  1495. -a <filename>
  1496. Overwrites the configured name of the active file.
  1497.  
  1498. -c <configfile>
  1499. sets the name of the configuration file. By default Expire will
  1500. use changi.cfg.
  1501.  
  1502. -de
  1503. Enables debugging output while expiring articles.
  1504.  
  1505. -df
  1506. Enables log file flushing. Should be specified for debugging
  1507. only because this might dramatically increase your system load.
  1508.  
  1509. -dt
  1510. Enables test mode. All actions are performed like in normal mode,
  1511. but no permanent modifications are done to neither the history
  1512. files nor the active file and no articles will be deleted.
  1513.  
  1514. -e <days>
  1515. Defines the expiration age. Articles received before the specified
  1516. time will be deleted.
  1517.  
  1518. -E <days>
  1519. Defines the maximum time to remember articles. Those received
  1520. before the specified time will be removed from the history.
  1521.  
  1522. -h
  1523. With this option set Expire will ignore an existing history file
  1524. and scan the newsbase using the active file. This is useful when
  1525. the filesystem does not have sufficient space to hold both the old
  1526. and new history files.
  1527.  
  1528. -i
  1529. This option will force Expire to ignore expire lines in article
  1530. headers and will significantly decrease processing time. Do not
  1531. use this option in conjunction with '-h' or '-r' unless you're
  1532. sure about what you're doing.
  1533.  
  1534. -n <directory>
  1535. Overwrites the name of your local news directoy.
  1536.  
  1537. -r
  1538. With this option set Expire will scan the newsbase using the active
  1539. file and build a new history file from scratch.
  1540.  
  1541. -y <historyfile>
  1542. overwrites the historyfile configuration item.
  1543.  
  1544. newsgroups
  1545. With this optional parameter you can limit the number of groups
  1546. to process. It offers the possibility to apply different expiration
  1547. times to different groups. Wildcards are accepted as follows.
  1548.  
  1549.     comp.os*    matches every group starting with comp.os
  1550.     *tcp-ip     matches every group ending with tcp-ip
  1551.     comp*tcp-ip this is possible too
  1552.     de.os[29]   matches de.os2 as well as de.os9
  1553.     de.os[2-9]  matches previous and de.os3, de.os4...
  1554.     a?t.comp    matches art.comp, alt.comp...
  1555.     !alt*       matches every group excluding those starting
  1556.                 with alt
  1557.     alt\!.\[x\] matches alt!.[x]
  1558.  
  1559. ====================================================================
  1560. Shrink                                               Shrinking files
  1561. ====================================================================
  1562.  
  1563. This little program shrinks files to a given size, preserving the
  1564. data at the end of the file.
  1565.  
  1566. Truncation is performed on line boundaries, where a line is a series
  1567. of bytes ending with a newline. There is no line length restriction
  1568. and files may contain any binary data.
  1569.  
  1570. A temporary file is created in the current directory.
  1571.  
  1572. A newline will be added to any non-empty file that does not end with
  1573. a newline. The maximum file size will not be exceeded by this
  1574. addition.
  1575.  
  1576. By default, files are truncated to zero bytes. The -s option may be
  1577. used to change the maximum size. Because the program truncates only
  1578. on line boundaries, the final size may be may be smaller then the
  1579. specified maximum.
  1580.  
  1581. The size parameter may end with a k, m, or g, indicating kilobyte
  1582. (1024), megabyte (1048576) or gigabyte (1073741824) lengths.
  1583. Uppercase letters are also allowed. The maximum file size is
  1584. 2147483647 bytes.
  1585.  
  1586. If the -v flag is used, then Shrink will print a status line if a
  1587. file was shrunk.
  1588.  
  1589.  
  1590.  
  1591. ====================================================================
  1592. UUPC                                               Using with Changi
  1593. ====================================================================
  1594.  
  1595. UUPC is a great UUCP package for OS/2, which is copyright by Kendra
  1596. Electronic. Like Changi it is free and it comes with source.
  1597. However, your newsfeed (internet provider) must support UUCP for
  1598. news exchange.
  1599.  
  1600. If you are new to UUCP and all this other UNIX-ish stuff, it will
  1601. probably take some time to get it running smoothly. While you read
  1602. through all the well done documentation that comes with UUPC (much
  1603. better than the crap supplied with Changi) even many things related
  1604. to Changi will become clearer.
  1605.  
  1606. UUPC, at least starting with version 1.12j, contains another
  1607. incarnation of Inews and Rnews too. Both, those that came with
  1608. Changi and the ones with UUPC, should be interchangeable. Should...
  1609. but unfortunately they are not. You may use any with UUPC, but
  1610. you cannot use those with Changi, that came with UUPC.
  1611.  
  1612. The reason for this incompatibility is the fact, that the UUPC
  1613. versions of Inews and Rnews cannot be fed by the standard input but
  1614. need a file instead. Hopefully this problem will be solved in the
  1615. near future.
  1616.  
  1617. If you use Changi's Inews with UUPC then you must set the '-U'
  1618. option in your changi.cfg. This will force Inews to use the UUPC
  1619. mangling mechanism for the spool file names. Otherwise Inews uses
  1620. the standard naming like all those UNIX versions.
  1621.  
  1622. You can find UUPC on the hobbes CD-ROM 03/95. Look for
  1623.  
  1624.     \32bit\comm\UPC12B??.ZIP
  1625.  
  1626. or try ftp.hobbes.nmsu.edu for the latest version.
  1627.  
  1628.  
  1629. ====================================================================
  1630. Problems                                               In case of...
  1631. ====================================================================
  1632.  
  1633. Reading documentation is a bit tedious, especially when you are
  1634. short in time because there's a problem crying out to be solved. But
  1635. news processing is relatively complex and effective troubleshooting
  1636. requires that you understand what's going on. The investment of time
  1637. is worthwhile.
  1638.  
  1639. Anyway, I will provide some hints solving common problems.
  1640.  
  1641.  
  1642. Problems with hostnames
  1643. -----------------------
  1644.  
  1645. Remember to either use your ip-number as the NR/2 command line
  1646. option, have any named server available and running or remove your
  1647. etc\resolv and create a hosts file.
  1648.  
  1649. Does your Changi.cfg really point to the correct paths? Check every
  1650. entry.
  1651.  
  1652.  
  1653. Chanx connection problems
  1654. -------------------------
  1655.  
  1656. If Chanx will not connect to the newsserver on the remote host, but
  1657. responds with
  1658.  
  1659.      chanx: could not open socket: Permission denied
  1660.  
  1661. then something might be wrong with your tcp/ip setup. In this case
  1662. try to ping your newsserver.
  1663.  
  1664.      ping <full domain name of your server>
  1665.  
  1666. If ping responds with something like
  1667.  
  1668.      64 bytes from 193.102.134.1: icmp_seq=0. time=0. ms
  1669.  
  1670. then at least your connection works. If you can't get a response
  1671. and if ping reports
  1672.  
  1673.     100% packet loss
  1674.  
  1675. after pressing ctrl-c, then check your tcp/ip configuration.
  1676.  
  1677. Try to telnet to your newsserver.
  1678.  
  1679.     telnet -p 119 <full domain name for your server>
  1680.  
  1681. If you get something like
  1682.  
  1683.     Connection refused
  1684.  
  1685. then there is probably no newsserver running at port 119 on the
  1686. remote host. Contact the news administrator of the remote host.
  1687.  
  1688. It telnet works fine but if Chanx receives only error messages but
  1689. no articles, call it with options '-dfrs' and look into the logfile
  1690. to find out what's going on. Also try '-mr' if INN is installed
  1691. on the remote site.
  1692.  
  1693.  
  1694. Newsreader problems
  1695. -------------------
  1696.  
  1697. Changi is very sensitive with it's input files. If your newsreader
  1698. displays all groups but no messages to read, you should check two
  1699. files, 'active' and 'history.pag', for compatibility. If you can't
  1700. get any unread articles, then there is probably some incompatibility
  1701. between Changi and your history file. Recreate them using the expire
  1702. program.
  1703.  
  1704.  
  1705. Posting problems
  1706. ----------------
  1707.  
  1708. If everything seems to work fine but the articles posted on the
  1709. local machine don't get sent to your neighbors, then you might
  1710. have configured the Inews call wrong. Use 'inews' without any
  1711. option to spool outgoing articles to be sent by Chanx. Instead use
  1712. 'inews -U' if you intend to call uucico to transfer your news.
  1713.  
  1714.  
  1715.  
  1716. Further Reading
  1717. ========================================================================
  1718.  
  1719.  
  1720. Standards
  1721. ---------
  1722.  
  1723. Changi communicates with newsreaders and remote hosts according to
  1724. standards described by RFCs. An RFC is a Request For Comment, a de
  1725. facto standard in the Internet Community. It is a form of published
  1726. software standard, done through the Network Information Center (NIC)
  1727. at SRI. Copies of RFCs are often posted to the net and obtainable
  1728. from archive sites. Current news-related RFCs include the following:
  1729.  
  1730.     RFC 822 specifies the format of messages; RFC 1036 uses this.
  1731.     RFC 977 specifies NNTP, the Network News Transfer Protocol.
  1732.     RFC 1036 specifies the format of Usenet articles.
  1733.     RFC 1123 amends RFC 822.
  1734.  
  1735.  
  1736.  
  1737. Books
  1738. -----
  1739.  
  1740. Like to read a book? I liked to read:
  1741.  
  1742.     Managing UUCP and Usenet
  1743.     by Tim O'Reilly and Grace Todino
  1744.     O'Reilly & Associates, Inc.
  1745.     ISBN 0-937175-93-5
  1746.  
  1747. This book covers most of UUCP and a bit of NNTP and how they work
  1748. in their original UNIX environment. Nevertheless it is quite useful
  1749. for news administration under OS/2.
  1750.  
  1751.  
  1752.  
  1753.  
  1754. ====================================================================
  1755. History
  1756. ====================================================================
  1757.  
  1758. 06/11/95    Version 0.8
  1759.  
  1760.     Chanx did only save the first part of newsgroup lists
  1761.     longer than 256 characters in nntp.hostname. This bug
  1762.     has been fixed.
  1763.  
  1764.     Some NNTP servers seem to have problems with newsgroup
  1765.     lists with a length of about 256 characters sent by
  1766.     Chanx. The maximum size is now limited to 128 characters
  1767.     in the hope that these servers will no accept it.
  1768.  
  1769.     Due to a bug in the configuration validation Chanco
  1770.     insists on a HOSTNAME environment variable. This bug
  1771.     has been fixed.
  1772.  
  1773.     Changi now logs upto two parameters received with
  1774.     commands it ignores.
  1775.  
  1776.  
  1777. 06/13/95    Version 0.8a
  1778.  
  1779.     Changi does now close the last accessed article when the
  1780.     client disconnects.
  1781.  
  1782.     Changi will now check the limit of 10000 articles when
  1783.     scanning a directory.
  1784.  
  1785.  
  1786. 06/14/95    Version 0.9
  1787.  
  1788.     Changing directories and drives presented a lot of
  1789.     problems. Changi is no more doing such masochism.
  1790.  
  1791.     After hunting a bug in the XOVER for several hours I
  1792.     found out that it was gone after switching of compiler
  1793.     optimisations. <phew!>
  1794.  
  1795.  
  1796.  
  1797. ====================================================================
  1798. Credits
  1799. ====================================================================
  1800.  
  1801. Thanks to...
  1802.  
  1803. ...Alex Chapman for his help with the missing expire.
  1804. ...Bill Fugina for his testing and his suggestions.
  1805. ...Brian Hampson for his endless patience with version 0.7.
  1806. ...Terry Raymond for his comments on version 0.7.
  1807. ...John Tibbetts for his help with the ihave protocol.
  1808. ...Eran Tromer for his help with the 4OS4 problem.
  1809.  
  1810. Code has been stolen from...
  1811.  
  1812. ...B-News done by Rick Adams and others.
  1813. ...C-News written mostly by Geoffrey Collyer and Henry Spencer.
  1814. ...INN done by Rich $alz.
  1815. ...Netnews 3.0 mainly done by Eric S. Raymond.
  1816. ...NNTPD written by Stan Barber and others.
  1817. ...UUPC, which is copyright by Kendra Electronic Wonderworks.
  1818.  
  1819.  
  1820. Thanks, and have fun.
  1821.  
  1822.  
  1823.     Harald Kipp
  1824.  
  1825.  
  1826.  
  1827. ====================================================================
  1828.                               EOF
  1829. ====================================================================
  1830.