home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / os2nosv4.zip / wg7jmods.txt < prev   
Text File  |  1992-11-19  |  112KB  |  2,968 lines

  1.  
  2.           MINI-MANUAL for the mods to KA9Q's
  3.               Internet Protocol Package
  4.                       NOS.EXE
  5.                   version 911229
  6.  
  7.                 WG7J's JNOS v1.06
  8.                   November 19, 1992
  9.  
  10.  
  11.                  Copyright, 1992
  12.                 Johan. K. Reinalda,
  13.                     WG7J/PA3DIS
  14.  
  15.             (email:  johan@ece.orst.edu,
  16.              packet: wg7j@wg7j.or.usa.na)
  17.  
  18.  
  19.  
  20. INTRODUCTION.
  21.  
  22.     This mini-manual attempts to explain some of the modifications I
  23. made to the KA9Q NOS.EXE program. It is NOT a 'beginner's intro' for the
  24. NOS.EXE program. I assume users have a basic knowledge of the NOS.EXE
  25. program; ie. users should be familiar with using and setting up the
  26. basics of the program.
  27.  
  28.     The file INTRONOS.ZIP contains an introduction document written
  29. and copyrighted by John Ackerman, AG9V. It is included in this distribution
  30. with his permission.
  31.  
  32.     Please ALSO read the 'README.NOW' file. This has a cronological and
  33. much more complete listing of the mods i've made in each of the versions.
  34.  
  35.     Another usefull document might be 'JNOS40.MAN'. This is the manual
  36.     for the port of NOS to the Kantronics Data Engine. A lot of the
  37.     commands in that version are similar to the JNOS code (same author,
  38.     so that happens :-) )... It has sections on setting up ax.25, netrom,
  39.     etc. that might be useful for jnos users.
  40.  
  41.     Some of the sections in this document are copied directly from JNOS40.MAN,
  42.     since i considered them important issues (and why re-invent the wheel :)
  43.  
  44.     Some of the modifications I made have been ported into
  45. the 'mainstream' release of PA0GRI's versions 1.9c and later.
  46. They are documented in PA0GRI's NOS_1229.MAN, that accompanies his
  47. releases. Those mods will not be discussed unless needed.
  48. (this concerns mods from v0.93 and earlier)
  49.  
  50.      Furthermore this manual gives an example of how to use
  51. this code as a full-service BBS. I run the code as the full-
  52. service BBS for Corvallis, OR and surroundings.
  53. The example files listed are from this setup. I do NOT claim
  54. that this is the best way to setup NOS for such purpose. I
  55. simply provide the setup as ONE possible way to configure things.
  56.     The examples and their explanations are far from
  57. a good tutorial. They are simply meant to show the 'reasoning'
  58. I use with handling mail on my system.
  59.     Users deciding to use NOS as a fullservice bbs could use this
  60. as a starting point and go from there...
  61.  
  62.      For those interfacing with both tcpip based SMTP mail and
  63. the bbs network, I have included a few hints, too.
  64.  
  65.  
  66. WHAT'S NEW
  67.  
  68.      See the file 'readme.now' for a short description of all the mods
  69. for each version...
  70.  
  71.  
  72. QUESTIONS BUGS, COMMENTS, REQUESTS, ETC...
  73.  
  74.         should go to the addresses listed above
  75.         (in that  order of preference!)
  76.  
  77.  
  78. CONTENTS:
  79.  
  80.     COMMANDS/CHANGES.
  81.  
  82.         1.      mbox commands
  83.                         1.1  attend
  84.                         1.2  convers
  85.                         1.3  fwdinfo
  86.                         1.4  haddress
  87.                         1.5  hideport
  88.                         1.6  jumpstart
  89.                         1.7  kick
  90.                         1.8  mailfor
  91.                         1.9  maxmsg
  92.                         1.10 motd
  93.                         1.11 mailstats
  94.                         1.12 mport
  95.                         1.13 newmail
  96.                         1.14 nrid
  97.                         1.15 past
  98.                         1.16 password
  99.                         1.17 qth
  100.                         1.18 secure
  101.                         1.19 sendquery
  102.                         1.20 smtptoo
  103.                         1.21 status
  104.                         1.22 timer
  105.                         1.23 tdisc
  106.                         1.24 tmsg
  107.                         1.25 trace
  108.                         1.26 utc
  109.                         1.27 zipcode
  110.  
  111.         2.      netrom commands
  112.                         2.1  alias
  113.                         2.2  bcnodes
  114.                         2.3  bcpoll
  115.                         2.4  call
  116.                         2.5  hidden
  117.                         2.6  interface
  118.                         2.7  load
  119.                         2.8  neighbour
  120.                         2.9  tdisc
  121.                         2.10 route info
  122.  
  123.         3.      onexit.nos
  124.  
  125.         4.      at command
  126.  
  127.         5.      bulletin command
  128.                         5.1  check
  129.                         5.2  date
  130.                         5.3  loophold
  131.                         5.4  return
  132.  
  133.         6.      callserver
  134.  
  135.         7.      user permissions
  136.  
  137.         8.      mailbox user commands
  138.  
  139.         9.      oldbid
  140.  
  141.         10.     expire
  142.  
  143.         11.     ftptdisc and the ftp client
  144.  
  145.         12.     TRACING
  146.  
  147.         13.     F-Key SESSION SWITCHING
  148.  
  149.         14.     NTS traffic deletion.
  150.  
  151.         15.     FORWARDING.
  152.  
  153.         16.     SETTING UP THE CONFERENCE SERVER
  154.  
  155.         17.     OF PACLEN'S, MTU'S, MSS'S AND MORE
  156.  
  157.         18.     INTERFACE BUFFERS
  158.  
  159.         19.     PER INTERFACE PARAMETERS
  160.  
  161.         20.     IP-heard
  162.  
  163.  
  164.     CONFIGURING NOS.EXE AS A FULLSERVICE BBS.
  165.                 /autoexec.nos
  166.                 /ftpusers
  167.                 /alias
  168.                 /spool/areas
  169.                 /spool/rewrite
  170.                 /spool/forward.bbs
  171.                 /onexit.nos
  172.  
  173.  
  174.     GATEWAYING BETWEEN SMTP AND AX.25 MAIL.
  175.                 mail from smtp -> ax.25
  176.                 mail from ax25 -> smtp
  177.  
  178.     POP SERVICES IN NOS
  179.  
  180.  
  181.     EPILOGUE.
  182.  
  183.  
  184. /***************************************************************/
  185.  
  186.  
  187. COMMANDS.
  188. ---------
  189.  
  190. 1. 'mbox'
  191.         This is the main command used to set most of the mailbox options.
  192.         There are quite a few subcommands, some of wich are discussed here.
  193.  
  194.  
  195. 1.1     mbox attend [on|off]
  196.         This displays or sets the attend flag. If set, users can initiate
  197.         chat with the sysop via the O)perator mailbox command.
  198.         (You need to have started the ttylink server for this !)
  199.  
  200. 1.2     mbox convers [on|off]
  201.         This displays or set the convers flag. If set, users are allowed
  202.         access to the conference bridge by giving the mailbox 'C' command.
  203.  
  204. 1.3     mbox fwdinfo [string]
  205.         This displays or sets the string that is used in the BBS R: header
  206.         when forwarding mail to other bbs's.
  207.  
  208. 1.4     mbox haddress [string]
  209.         This displays or sets your systems hierarchical bbs address. You do
  210.         not need the bbs call, nor the '.' between the bbs call and the
  211.         hierachical address. EG. mbox ha or.usa.na
  212.  
  213. 1.5     mbox hideport <iface>
  214.         This command allows you to hide a port from the mailbox 'P'
  215.         display. If you set a port to be hidden, a user can not 'see'
  216.         the port unless the user has sysop permissions.
  217.         AX.25 connections will also be disallowed. This is usefull for
  218.         forward-only ports, etc...
  219.  
  220.  
  221. 1.6     'mbox jumpstart <on/off>' and
  222.         'mbox jumpstart exclude [call1 call2 ...]' subcommands
  223.  
  224.         The standard 'vanilla' KA9Q code requires users connecting
  225.         to the system to hit an additional line in order to trigger
  226.         the mailbox. This is a problem inherent to the AX.25 protocol.
  227.         If jumpstart is off, the code behaves like this.
  228.  
  229.         When jumpstart is on, incoming connections that satisfy the
  230.         criteria described next, will get the prompt IMMEDIATELY !
  231.  
  232.     Presently, incoming connections can be requested for five
  233. different reasons:
  234. A - user connections,
  235. B - node connections to carry netrom 'circuits',
  236. C - IP in VC mode,
  237. D - RSPF run in VC mode, and
  238. E - others (am I forgetting any ?).
  239.  
  240.     In many situations most AX.25 connections will be coming from
  241. users wanting to connect to the mailbox. When jumpstart is on,
  242. a 'smart guess' is made. The mailbox is jumpstarted IF:
  243.  
  244. - the incoming connection is NOT a known neighbour node (case B)
  245. - and the interface that the connection came in on
  246.   is NOT in VC mode (case C)
  247. - and the call of the incoming station is not on the excluded list
  248.   (cases D and E); see later
  249.  
  250. IF the incoming connection satisfies all these requirements, the
  251. mailbox is jumpstarted and the prompt is send immediately.
  252.  
  253. Some known situations that can cause the mailbox incorrectly to
  254. be jumpstarted are the following:
  255.  
  256. -If nodes try to connect before we have heard there nodes-broadcast
  257.  we will not know of them as a netrom system and jumpstart the mailbox.
  258.  (this should be solved with the 'netrom load' command now working;
  259.  see later)
  260.  
  261. -If RPSF is run in VC mode, route updates will be send over a connection
  262.  instead of with UI frames. This will also incorrectly cause a jumpstart
  263.  to occur
  264.  
  265. In order to prevent these situations, the exclude command can be used.
  266.  
  267. 'mbox jumpstart exclude call1 call2 call3 ...'
  268.  
  269. will build a list of calls to exclude from jumpstarting.
  270. You can give several call with one exclude command, or give multiple
  271. exclude commands. A simple 'mbox jumpstart exclude' will show the
  272. list...
  273.  
  274. eg. if you want to make sure that neighbour node k7uyx-1 does not
  275. trigger the mailbox before we've heard one of his node broadcasts, add
  276. mbox jumpstart exclude k7uyx-1
  277.  
  278. eg. if w7abc is sending rspf route updates via VC, the following helps:
  279. mbox jumpstart exclude w7abc
  280.  
  281.  
  282. 1.7     mbox kick
  283.         This is an immediate command. If forces the system to start a new
  284.         bbs forwarding cycle.
  285.  
  286. 1.8  'mbox mailfor [interval]' or 'mbox mailfor exclude [area area]'
  287.  
  288.     Interval is in seconds, and if set, every so often the system
  289. reads all none-area mailboxes and checks them for unread mail.
  290. Next a beacon is sent on all active interfaces. (see 'mbox mport' command).
  291. This beacon packet is addressed to the AX.25 address 'MAIL'.
  292. The data in this packet contains a list of the mailboxes with unread mail.
  293. This is sent in a 'Mail for: <user> ... ' line. Systems like LAN-LINK can
  294. trigger mail-snatches off this. A simple 'mbox mailfor' will show the status
  295. of the timer and list mailboxes with unread mail.
  296.  
  297.     In certain cases you might not want a private area to show up
  298. in the mail beacon. Eg. private areas to be forwarded to other bbs's.
  299. You can exclude those from the beacon by adding exclude commands.
  300.  
  301. 'mbox mailfor exclude area1 area2 area3'
  302.  
  303. will disable these area names from the beacon. You can give multiple
  304. exclude commands to build the list. A simple 'mbox mailfor exclude'
  305. shows the list.
  306.  
  307.  
  308. 1.9     mbox maxmsg [n]
  309.         This displays or set the maximum number of messages in a mailbox
  310.         file, for both private and public (ie area-) mail. If there are
  311.         more the n messages, the user will only see the first n messages.
  312.  
  313. 1.10    mbox motd [string]
  314.         This displays or set the message of the day. This message is displayed
  315.         when regular users log on to the system.
  316.  
  317.  
  318. 1.11    mbox mailstats
  319.  
  320.         This commands shows how many messages have been read and sent by users
  321.         and how many messages have been received from and forwarded to bbs's.
  322.  
  323.  
  324. 1.12    mbox mport [<iface>]
  325.  
  326.         Displays or sets the interfaces that 'MAIL' beacons are sent on.
  327.         Only ports that have this flags set send the beacons, so you need
  328.         to have one of these line for all ports you want the mail beacon
  329.         to be sent on.
  330.  
  331. 1.13    mbox newmail [on|off]
  332.  
  333.         If on, users will be notified during the login stage wich areas
  334.         have new mail in them. This uses a time stamp on a status file
  335.         for each message area, and compares this to the last time the user
  336.         logged out.
  337.         The information shown can later be repeated with the 'AN' mailbox
  338.         command.
  339.  
  340.  
  341. 1.14    mbox nrid [on|off]
  342.         This displays or sets the netrom-id flag. If set, the first time
  343.         a user log on to the system, the system will add the netrom node
  344.         id in NODE:CALL format to the prompt. Users can then change it with
  345.         the mailbox XN command. The system will acknowledge the new prompt
  346.         format as set by the user the next time the user logs in.
  347.  
  348. 1.15    mbox past
  349.         This is displays the users that have logged on since the system has
  350.         been running.
  351.  
  352. 1.16    mbox password <newpassword>
  353.         This sets a new remote sysop password.
  354.  
  355. 1.17    mbox qth [location]
  356.         This displays or sets the location of your system, and uses it in the
  357.         R: headers when doing bbs forwarding.
  358.  
  359. 1.18    mbox secure on|off
  360.         This displays or sets the mailbox secure flag. If set, only users
  361.         coming on over netrom and ax25 connections can make gateway connects
  362.         if they have the right priveledges. If not set, anyone with the right
  363.         privs can do a telnet connect.
  364.  
  365. 1.19    mbox sendquery [on|off]
  366.         If on, users will be queried if they really want to send the message
  367.         after they have typed the ^Z or /ex when sending a message.
  368.         'N' or 'n' will abort, anything else will send the message.
  369.  
  370. 1.20    mbox smtptoo [on|off]
  371.         This displays or sets the smtp headers flag. If set, the system
  372.         will include most smtp header when forwarding the message via bbs
  373.         forwarding. If not set, they will be stripped (the default)
  374.  
  375. 1.21    mbox status
  376.         This displays the current users of the system.
  377.  
  378. 1.22    mbox timer [<nnnn>]
  379.         This displays the forwarding timer value. This sets the interval
  380.         between forwarding attempts.
  381.  
  382. 1.23    mbox tdisc [<nnnn>]
  383.  
  384.         This command sets an inactivity timer, in seconds. If no user input
  385.         has been received while connected to the mailbox, the user will be
  386.         disconnected. Default time is 0 seconds, ie no timeout.
  387.  
  388.  
  389. 1.24    mbox tmsg <message>
  390.         This displays or sets the 'telnet message'. This is a message
  391.         sent to telnet connections before the login prompt is sent!
  392.  
  393. 1.25    mbox trace [on|off]
  394.         This displays or sets the value of the trace flag. If set, the mailbox
  395.         is verbose about certains aspect of the forwarding cycle...
  396.  
  397.  
  398. 1.26    mbox utc [n]
  399.         This displays or set the offset from UTC for this system. It is used
  400.         in the forward code to calculate the current time.
  401.  
  402. 1.27    mbox zipcode [<nnnn>]
  403.         This allows you to set (or show) the systems mail zip-code.
  404.         This is used in the R: line when forwarding.
  405.  
  406.  
  407. 2.  netrom command
  408.  
  409.         These commands all influence netrom behaviour.  Not all are discussed
  410.         here.
  411.  
  412.  
  413. 2. 'netrom' subcommands
  414.  
  415. 2.1     netrom alias <alias>
  416.         Set or show the netrom alias.  There is just one alias for the
  417.         system.
  418.  
  419. 2.2     netrom bcnodes <iface>
  420.         This will force a broadcast of the nodes list on the given interface.
  421.  
  422. 2.3     netrom bcpoll <iface>
  423.         This will force a broadcast poll on the given interface. Systems
  424.         running JNOS1.05 or later, or DataEngines running JNOS40, will respond
  425.         to this by broadcasting their nodes list.
  426.         This speeds up route-discovery at boot time !
  427.  
  428.         Eg. add this to the autoexec file for each activated netrom interface.
  429.         This was primarily written for the DataEngine code, that doesn't have
  430.         the 'netrom load' from disk capability.
  431.  
  432. 2.4     netrom call <nrcall>
  433.         Set or show the netrom interface call. This can be different from
  434.         the ax.25 mycall parameter, but if not set will default to this.
  435.         This is the call used for all netrom connections and broadcasts.
  436.         Setting the netrom call with 'netrom call' is analogous to
  437.         'ifconfig netrom linkaddress <call>'
  438.  
  439. 2.5     netrom hidden [on|off]
  440.         This displays or sets the hidden flag. If set, the mailbox
  441.         nodes listing (the N command) will not show nodes who's alias
  442.         starts with a '#' character.
  443.  
  444. 2.6     netrom interface [<iface> <quality> [v] ]
  445.         Without arguments, it displays the currently active netrom interfaces.
  446.         If iface and quality are given, it will activate, or change,
  447.         that interface for netrom traffic with the given quality.
  448.         The default broadcast method is non-verbose, ie broadcast ourself only.
  449.         If you want verbose broadcasting, add the optional v parameter.
  450.  
  451. 2.7     netrom load
  452.         This now works as advertized. It will load the netrom routing table
  453.         from the file '/netrom.sav' as written by a previous 'netrom save'
  454.         command.
  455.  
  456. 2.8     netrom neigbour
  457.         Shows a detailed listing of known netrom neighbours.
  458.  
  459.  
  460. 2.9     netrom tdisc
  461.         This is the same as the AX.25 t4 timer. If set, when no data has
  462.         come in for the timeout period (over the Netrom connection), the
  463.         circuit is reset.
  464.  
  465.  
  466. 2.10    netrom route info [node name]
  467.         This command, without any node name, gives info about all known
  468.         netrom routes off the system.
  469.         If given with a node name, it will give info about that node only.
  470.  
  471.  
  472.  
  473. 3. /onexit.nos
  474.  
  475.         If present, the 'exit' command will execute commands in the
  476.         /onexit.nos file, before the system exits.
  477.         (this code by iw0cnb, inspired by pe1chl's net.exe)
  478.  
  479.  
  480.  
  481. 4. 'at' command
  482.  
  483.         The 'at' command allows timed execution of valid NOS commands.
  484.         (this command is also from iw0cnb's code, with a few mods.)
  485.         The "at" command with no arguments shows the list of events that
  486.         are to be executed. There are a couple of forms of setting up
  487.         timed execution:
  488.  
  489.         at yymmddhhmm <command>
  490.         Executes <command> at specified date,
  491.         expressed in Year-Month-Day-Hour-Min.
  492.         If specified date is past, the command is not executed.
  493.  
  494.         at hhmm <command>
  495.         Executes <command> at specified hour and minute of the current day,
  496.         or of the next day if the specified time is past.
  497.  
  498.         at mm <command>
  499.         Executes <command> at the specific minutes past the hour at the first
  500.         occurence possible.
  501.         This is usefull to start things like forward cycles at certain minutes
  502.         into the hour.
  503.  
  504.         at now+hhmm <command>
  505.         Executes <command> hh hours and mm minutes from now. hh and mm can
  506.         be up to 99.
  507.  
  508.         at now+mm <command>
  509.         Executes <command> when it is mm minutes past the hour.
  510.         Eg. if it's 1:32 now, and you give a 'at 14 ', then at 2:14
  511.         the command '?' will be executed.
  512.  
  513.         Notes and examples:
  514.         <command> may be any valid NOS command, possibly enclosed in quotes,
  515.         as well as a DOS shell command.
  516.         If you want multiple commands to be executed, use the
  517.         "source <filename>" command.
  518.         The third mode of operation requires the exact writing "now+" in
  519.         lower case and without spaces between hhmm.
  520.  
  521.         Single command execution examples:
  522.         at 9202150900 exit   /* Shuts off on 15 Feb 92 at 9:00am */
  523.         at 2245 "! /c pkzip oldmail \spool\mail\*.*"
  524.         at 25 "mb timer 3600"
  525.         at now+0500 "smtp kick"
  526.  
  527.         Multiple command execution examples:
  528.         at now+0859 "source cleanup.net"
  529.  
  530.         When multiple command execution is setup, this command allows
  531.         all sorts of interesting things;
  532.         if for example 'cleanup.net' has the line
  533.         'at now+0859 "source cleanup.net"
  534.         then the commands in the command-file 'cleanup.net' will be executed
  535.         every 9 hours
  536.  
  537.  
  538.  
  539. 5. 'bulletin' command
  540.         All of the subcommands have to do with interpreting the R: lines sent
  541.         when a bbs is forwarding to our system.
  542.  
  543.         5.1  bulletin check [<on|off>]
  544.  
  545.         If 'on', a list of bbs's that we forward to is automatically read
  546.         from forward.bbs. Next, when a bbs forwards mail to us, all 'B' type
  547.         messages and all mail with a BID is checked. The R: headers trail is
  548.         read and checked for bbs's in our list. If found, X-Forwarded-To
  549.         headers are added to the internal mail headers of the message. These
  550.         headers are read by the forward code and prevent forward attempts for
  551.         messages that are already at the destination forward bbs. This makes
  552.         the forward code more efficient. (All messages with a BID are checked
  553.         to make it work with things like 'sp sysop @ allusw < $bid')
  554.         Plain 'bulletin check' will show status, and if on, the check-list.
  555.  
  556.  
  557.         5.2  bulletin date [<on|off>]
  558.  
  559.         If 'on', when a message is forwarded to us from a bbs, the R: headers
  560.         will be read to obtain the message origination date from the last
  561.         R: header present. This will then be used as the 'Date: ...' line in
  562.         the message, thus better indicating the message's age.
  563.  
  564.         5.3  bulletin loophold [<#>]
  565.  
  566.         This sets or shows the number of loops after wich a message will be
  567.         held and not forwarded anymore. Default is 2. If a message if receive
  568.         that already has this number of our header lines (ie. R: lines) in
  569.         the message-headers, it will be marked as held.
  570.  
  571.  
  572.         5.4  bulletin return [<on|off>]
  573.  
  574.         If on, when a message is received via bbs-forwarding
  575.         a 'valid bbs-style return address' will be taken from the
  576.         last R: header, if one is present. This works with any message
  577.         type that starts with R:-headers (so personal mail as well).
  578.         This address will then be used as the 'From: ...' line in the message
  579.         eg. If the message is forwarded as 'SP W7ABC < W6XYZ'
  580.         and the last R:-header is
  581.         R:920312/1200z @:N7PQR.AB.CD.EF [TEST] #:0 Z:1
  582.         then the 'From:' line will read:
  583.         'From: w6xyz@n7pqr.ab.cd.ef'
  584.  
  585.         IMPORTANT !!!!
  586.         Since in most of these occasions, the from-hosts will NOT
  587.         be tcp/ip hostnames (eg. wg7j.ampr.org) but rather
  588.         bbs H-addresses (eg. WG7J.OR.USA.NA)
  589.         YOU (ie. the sysop) HAVE TO MAKE SURE your system can handle
  590.         these new addresses by setting up the ALIAS and REWRITE files
  591.         to handle these, and then setup bbs-forwarding (if needed)
  592.         as well with FORWARD.BBS (see later for examples)
  593.  
  594.  
  595.  
  596. 6. 'callserver <host> <port>' command
  597.  
  598.         This configures the <host> (ie. hostname or address) and
  599. tcp <port> to be used in the mailbox 'CALL' command (See later).
  600. This 'CALL' command is an alias or shortcut for an automatic telnet
  601. connect to set host and port.
  602.         This is mainly useful for gateway systems on Internet.
  603. It allows users to use a tcp-reachable callbook-server in an easy way.
  604. (or for that matter, any service reachable via telnet)
  605. Note: User needs to have telnet permissions
  606.  
  607. eg: 'callserver marvin.cs.buffalo.edu 2000'
  608. then the mailbox 'call' command will try to telnet to this host/port
  609. and users will be connected to the callbook server.
  610.  
  611.  
  612.  
  613. 7. MAILBOX USER PERMISSIONS
  614.  
  615.     The user permission in 'ftpusers' have the following values:
  616. #define FTP_READ        1       /* Read files */
  617. #define    FTP_CREATE    2    /* Create new files */
  618. #define FTP_WRITE       4       /* Overwrite or delete existing files */
  619. #define AX25_CMD        8       /* AX.25 gateway operation allowed */
  620. #define TELNET_CMD    16    /* Telnet gateway operation allowed */
  621. #define NETROM_CMD    32    /* NET/ROM gateway operation allowed */
  622. #define SYSOP_CMD    64    /* Remote sysop access allowed */
  623. #define EXCLUDED_CMD    128    /* This user is banned from the BBS */
  624. /* 256 and 512 are used in PPP*/
  625. #define NO_SENDCMD      1024    /*Disallow send command*/
  626. #define NO_READCMD      2048    /*Disallow read command*/
  627. #define NO_3PARTY       4096    /*Disallow third-party mail*/
  628. #define IS_BBS          8192    /*This user is a bbs*/
  629. #define IS_EXPERT    16384    /*This user is an expert*/
  630. #define NO_CONVERS      32768   /*Disallow convers command */
  631.  
  632. NOTE: the 'mbox expert' command is gone; each user now has a status bit
  633. for this. The mailbox 'X' command will toggle status, but not upgrade
  634. ftpusers...
  635.  
  636.  
  637.  
  638. 8. MAILBOX USER COMMAND CHANGES
  639.  
  640.     First of all, the present code KEEPS TRACK of the user's 'progress'
  641. in public areas. The message id of the last message listed in remembered
  642. and when the user changes areas or logs off, the id is stored in a
  643. <areaname>.USR file. These files are automatically created as needed
  644. in ~/spool/mail . Next time a user changes to the area, the L command
  645. will only list messages newer than the last one previously listed.
  646.     There is one exception: the area 'HELP' (if it exists) will NEVER
  647. be kept track off. All messages will ALWAYS be new.
  648. My users agreed that this was a good way of easily accesing help-messages.
  649. My 'mbox motd' points out the help area, and not logging this causes all
  650. help messages to be listed each time the 'L' command is given. New users
  651. do not need the LM, LA, and LL subcommands...
  652.  
  653.     The mailbox supports several new commands; several of them implement
  654. popular user commands from other bbs software.
  655.  
  656. - A, AF and AN
  657.         A will give a listing of available message areas; AF gives the
  658.         same listing, plus a description of each area if set by the sysop
  659.         AN will list wich areas have new mail since a user last logged out.
  660.  
  661. - IP    show the ip routes the system maintains.
  662.  
  663. - RM and VM
  664.     is now supported. It will 'read' or 'verbose' at most 19 new messages
  665.     in the current area. (19 is inherent to the cmdparser and the current
  666.     implementation of RM and V)
  667.  
  668. - RH
  669.     to Read with Headers, is the same as 'V'
  670.  
  671. - KM
  672.     to Kill Mine, kills all read messages in current area.
  673.  
  674. - KU
  675.     to Un-kill a message that was previously marked to be killed.
  676.  
  677. - LM, LA, 'L> xyz' and 'L< xyz'
  678.     are now supported. LM is the same as 'L', and simply lists new messages.
  679.     LA will list ALL messages in the current area.
  680.     L> and L< will search for the string 'xyz' in the To: and From: field,
  681.     respectively.
  682.  
  683. - M, ML, and MS
  684.     The 'M' command shows Mailbox-users and their activities. (reading,
  685.     sending, uploading, idle, etc...) Users in sysop mode will show as
  686.     Idle to regular users and as 'Sysop mode' to users with sysop privs
  687.  
  688.     ML shows all users that have connected since the system was started,
  689.     how many times they logged in, and the time since they last logged in.
  690.  
  691.     MS shows the status of messages (same as 'mbox mailstatus'),
  692.     and also gives a few system 'health and use' parameters.
  693.  
  694.  
  695. - CALL
  696.     If compiled in, tries to establish an automatic connect to a host
  697.     and port as setup with the 'callserver' command. This is mainly
  698.     useful for systems on internet that want to allow users to access
  699.     callbook servers (eg. marvin.cs.buffalo.edu:2000).
  700.  
  701. - NR
  702.     Nroutes will show a detailed list of all known netrom neigbours
  703.     (same as 'netrom neigbour' subcommand)
  704.  
  705. - 'N *'
  706.     This gives info on all routes
  707.  
  708. - Q call
  709.         If compiled in and configured, this will query the HamBase CD-Rom
  710.         callbook for the given call.
  711.  
  712. - X
  713.         will toggle the prompt between long and short version
  714.  
  715. -XA     will toggle the area indication on and off.
  716.  
  717. -XN     will toggle the netrom-id prompt on and off.
  718.  
  719. - XM    shows the number of line before more? will be prompted.
  720.         Defaults to 0 on anything but telnet connects and 24 on telnets.
  721.   XM n  will set the more? prompt to n lines.
  722.  
  723.   NOTE: the above X command setting are retained across logins.
  724.  
  725. - SR and SC
  726.     SR: Send Reply works again.
  727.     SC: Send with Carbon copy. The system will ask the user for a list
  728.         of addresses to also send the message to. It prompts "Cc: "
  729.         User can then type additional addresses, separated by comma's
  730.         to wich the message should go aswell
  731.     eg:
  732.     you type:       "SC johan""
  733.     system replies: "Cc: "
  734.     you type:       "ron@wa7tas,ka7ehk@wg7j, allor"
  735.     system replies: "Subject:"
  736.     etc...
  737.  
  738.  
  739. 9.   'Oldbid' command
  740.  
  741.         As of v1.01 all bid's (bulletin id's) stored have a timestamp
  742. added. This facilitates the automatic deletion of old bid's.
  743. The 'oldbid' command will expire bid's older then a certain age.
  744.  
  745. To setup bid expiry, the format of the command is:
  746. oldbid interval [age]
  747. where interval is the interval time in hours,
  748. age is the age of the bid in days.
  749. If no age is specified, it defaults to 21 days.
  750.  
  751. When the command is first given, the bid file is scanned for old entries,
  752. and then every 'interval' hours it is scanned again.
  753. The old bid file (/spool/history) will be renamed to /spool/history.bak,
  754. and then all entries still valid are copied over to a new history file.
  755.  
  756. Giving plain 'oldbid' will show the status of the timer and the age set.
  757.  
  758.  
  759. 10. 'expire' command.
  760.  
  761.         As of v1.01, there is a very simple automatic message expiration
  762. capability. Messages older then a given number of days will be deleted
  763. from the mailbox file after a backup copy of the whole file has been made.
  764.         Configuring automatic expiration consists of 2 parts:
  765. a - setting the interval timer.
  766.     This is done with 'expire n', where n is the number of hours between
  767.     expire checks.
  768.     * A simple 'expire' will show the status of the timer.
  769.     * 'expire now' will start expiration immediately and restart
  770.       the timer (if set)
  771.  
  772. b - Configuring the '/spool/expire.dat' file.
  773.     This file is the control file read by the expiry process.
  774.     It contains entries of mailfiles and ages. The format is
  775.     'areaname age', where areaname is a valid mailbox file in /spool/mail
  776.     and age is the maximum age in days.
  777.     Any format to indicate mailfiles in subdirectories below /spool/mail
  778.     is valid, so either '/', '\' or '.' can be used.
  779.     Lines starting with '#' or blank lines will be ignored.
  780.  
  781.     NOTE1: the areaname should NOT have the .txt extension added !!
  782.     NOTE2: the 2 fields have to be separated by one space!!
  783.     NOTE3: expiring messages in subdirectories has only been tested with
  784.            smtp mail files, NOT with NNTP originated messages. Thus it
  785.            might not work with those...
  786.     NOTE4: the date used is the entry in the 'Date: ' header,
  787.            NOT the entry in the 'From ' line that starts the message.
  788.            Thus, if the 'bulletin date' command is on, the origination date,
  789.            not the reception date, is what expires a bbs message.
  790.  
  791.  
  792.     Some examples:
  793.     in autoexec.nos:
  794.  
  795.     # expire once a day
  796.     'expire 24'
  797.  
  798.     in /spool/expire.dat:
  799.  
  800.     #keep this area very short
  801.     allusa 7
  802.     #this is in a subdirectory below /spool/mail
  803.     rec.radio/amateur\packet 21
  804.     #and so on
  805.     allor 14
  806.     pnw 10
  807.  
  808.  
  809.  
  810.     HINT: if you want the expiration of bulletins to occur at a certain time
  811.     of the day INDEPENDENT from when you start NOS, use the 'at' command
  812.     eg:
  813.     if you want it to happen in the middle of the night
  814.     (assuming your system's clock is in local time ;-) )
  815.  
  816.     'expire 24'                 #sets the interval
  817.     'at 0200 "expire now" '     #forces expiration, and restarts the timer
  818.  
  819.  
  820.  
  821. 11. 'ftptdisc' command
  822.  
  823.         This commands sets or shows the ftp user inactivity timeout.
  824.     If not zero, when a user connects to the ftpserver, the timer will
  825.     be started. If user doesn't give a command for the timeout period,
  826.     the session will be closed. This is disabled during any transfer;
  827.     ie it only works while the user is in command state...
  828.  
  829.     Doug Crompton, WA3DSP, has added some online help for the ftp command,
  830.     the iw0cnb resume code, and more. Here is what Doup writes about that:
  831.  
  832.  
  833.         I have added some FTP commands and updated some others. This is
  834.         going in my direction of a more user friendly NOS.
  835.  
  836.         FTP added commands (at the ftp prompt)
  837.  
  838.         'h' || '?"
  839.  
  840.           Display FTP help - list ftp available commands
  841.  
  842.         'lcd'
  843.  
  844.           List current LOCAL directory. The local directory inherits the
  845.           system current directory at FTP start. Each ftp session started
  846.           by the client has it's OWN copy of the state of current directory.
  847.           This directory prefix based on the rules below is applied to local
  848.           filenames used in put/get/mput/mget commands. Path names entered
  849.           are checked for validity of both drive and directory on the current
  850.           system. This should work for any valid DOS drive/directory on the
  851.           system such as CDROMS.
  852.  
  853.         'ldir <path>'
  854.  
  855.           List directory. Current directory is listed if path is omitted. Path
  856.           is appended to current local directory unless it contains a '/' in
  857.           the first position, a ":" in the name, or the '.' or '..' charcters.
  858.  
  859.           Examples:
  860.  
  861.             If the working directory (set by lcd) is set to 'c:/temp' and
  862.             the ldir command path is not entered the path becomes 'c:/temp/*.*'
  863.             If the ldir path is '/nos' the path becomes 'c:/nos/*.*' If the
  864.             ldir path is 'a:' the path becomes 'a:*.*' and if the ldir path
  865.             is 'temp2' the path becomes 'c:/temp/temp2/*.*'
  866.  
  867.             In short it is what you would expect.  '.' and '..' are supported
  868.             in both directory paths and filenames.
  869.  
  870.         'lmkdir <path>'
  871.  
  872.             Same rules apply as above.
  873.  
  874.         'rput <localfile> <remotefile>'
  875.  
  876.             Resume putting the file at a remote server. This will restart
  877.             a previously interrupted put. Note that you must have overwrite
  878.             priveledge at the server to do this.
  879.  
  880.         'resume <localfile> <remotefile>'
  881.  
  882.            Resume getting a file from the remote server. This will restart
  883.            a previously interrupted 'get'
  884.  
  885.            Both of these commands depend on an unchanged source file and a
  886.            partial file. The partial file is compared to the original and
  887.            only the remaining bytes are sent.
  888.  
  889.         An example of the use of these commands would be:
  890.  
  891.             ftp wa3dsp
  892.             login ...
  893.             connected ...
  894.  
  895.             ftp>cd /pub/docs
  896.         ^P ftp>lcd c:/tcpip   << directory exists
  897.             ftp>mkdir docs
  898.             ftp>lcd docs
  899.             ftp>mget *.*
  900.  
  901.            This would copy all files at the server in diretory /pub/docs
  902.            to the local directory c:/tcpip/docs   This is just one example,
  903.            often you would set the remote directory 'cd <path>' and the
  904.            local directory 'lcd <path>' and then simply say 'get <fname>'
  905.            or 'put <fname>'. Added to this flexibility is the ability to
  906.            do this in multiple sessions to different or the same server(s).
  907.  
  908.         Further Directory Examples:
  909.  
  910.             ftp>lcd
  911.             Current Directory - c:/tcpip
  912.             ftp> lcd spool
  913.             Current Directory - c:/tcpip/spool
  914.             ftp> lcd ..
  915.             Current Directory - c:/tcpip
  916.             ftp> lcd d:
  917.             Current Directory - d:/dosdir    << if 'd' drive exists and this is
  918.             ftp> lcd temp                            the first logon to this drive
  919.             Current Directroy - d:/dosdir/temp       it assumes the DOS current
  920.             ftp> lcd c:                              directory for this drive.
  921.             Current Directory - c:/tcpip
  922.             ftp> d:/
  923.             Current Directory  - d:/
  924.  
  925.  
  926.         The Nos main command 'dir' now uses the same rules as 'ldir' above.
  927.         You can now do 'dir a:' - which expands to 'dir a:*.*'
  928.  
  929.            Example:
  930.                                   EXPANDS TO
  931.             pwd c:/nos
  932.             dir                   >> dir c:/nos/*.*
  933.             dir spool             >> dir c:/nos/spool/*.*
  934.             dir /spool            >> dir c:/spool/*.*
  935.             dir a:                >> dir a:*.*
  936.             dir spool/mail/*.txt  >> dir c:/nos/spool/mail/*.txt
  937.  
  938.         Try this one...
  939.  
  940.             get anyfile.xxx
  941.             (wait until half or some portion of the file is received)
  942.             F10
  943.             reset
  944.             Establish the ftp connection again
  945.             resume anyfile.xxx (must be same name as above)
  946.             (and the rest of the file will be sent)
  947.  
  948.         Added Functions -
  949.  
  950.         In ftpcli.c
  951.  
  952.         static int doldir  __ARGS((int argc,char *argv[],void *p));
  953.         static int dolcd  __ARGS((int argc,char *argv[],void *p));
  954.         static int dolmkdir __ARGS((int argc,char *argv[],void *p));
  955.  
  956.         In dirutil.c
  957.  
  958.         char * make_dir_path(int count,char *arg,char* curdir);
  959.         char * make_fname(char * curdir, char * fname);
  960.         char * init_dirs(struct cur_dirs * dirs);
  961.         void free_dirs(struct cur_dirs * dirs);
  962.         int dir_ok(char * path,struct cur_dirs * dirs);
  963.  
  964.  
  965.         struct cur_dirs {
  966.                    int drv;
  967.                    char * curdir[27];
  968.                    char * dir;
  969.         } ;
  970.  
  971.         In pathname.c and pathname.h
  972.  
  973.         Function 'crunch' - remove 'static' definition
  974.  
  975.         Using these functions - Example:
  976.  
  977.         #include "dirutil.h"
  978.         and other required headers...
  979.  
  980.         main()
  981.  
  982.         {
  983.                 char newpath[128],fname[128], *p;
  984.  
  985.                 /*
  986.                  * Create Structure 'dirs' which stores
  987.                  * local status of system drives and directories
  988.                 */
  989.                 struct cur_dirs dirs;
  990.  
  991.                 printf("Local Directory - %s\n",init_dirs(&dirs);
  992.                 gets(newpath);
  993.  
  994.                 /*
  995.                  * Pass Requested path and dirs structure
  996.                  * to 'dir_ok' - returns 1 on success, 0 failure
  997.                 */
  998.  
  999.                 if (dir_ok(newpath,&dirs) {
  1000.                    p=dirs.dir;
  1001.                    printf("Current Directory - %s\n",p);
  1002.                 } else {
  1003.                    printf("Invalid Directory - %s\n",path);
  1004.                 }
  1005.                 gets(fname);
  1006.  
  1007.                 /*
  1008.                  * Pass Requested filename and current directory pointer
  1009.                  * to 'make_fname' - returns pointer to fully qualified
  1010.                  * name
  1011.                 */
  1012.  
  1013.                 printf("Fullpath = %s\n",make_fname(p,fname));
  1014.  
  1015.                 /*
  1016.                  * Cleanup allocations done in above functions
  1017.                 */
  1018.  
  1019.                 free_dirs(&dirs);
  1020.         }
  1021.  
  1022.  
  1023.         An example of how this is done in NOS code is in 'ftpcli.c' Here
  1024.         a structure pointer to 'dirs' is stored in the 'ftp' structure.
  1025.         Pathname is changed in the 'lcd' function and calling parameters
  1026.         follow the requirements for passing a structure to a structure.
  1027.  
  1028.         In ftpcli.c
  1029.  
  1030.         function 'doftp'
  1031.  
  1032.                 struct  cur_dirs dirs;
  1033.                 ftp.curdirs = &dirs;
  1034.  
  1035.                 .....
  1036.  
  1037.                 tprintf("Local Directory - %s\n",init_dirs(&dirs));
  1038.  
  1039.                 .....
  1040.  
  1041.                 free_dirs(&dirs);
  1042.  
  1043.         functions to get/put local files - ftp structure passed
  1044.  
  1045.                                              vvvvvvvvvvvvvvvvv
  1046.                 if((filel = fopen(make_fname(ftp->curdirs->dir,&argv[i][1]), "r")) == NU
  1047.         LLFILE){
  1048.                      tprintf("Can't open listfile: %s\n", &argv[i][1]);
  1049.                      continue;
  1050.                 }
  1051.  
  1052.         lcd function - ftp structure passed
  1053.  
  1054.                                     vvvvvvvvvvvv
  1055.                 if (!dir_ok(argv[1],ftp->curdirs)) {
  1056.                      tprintf("Invalid Drive/Directory - %s\n",argv[1]);
  1057.                      return 1;
  1058.                      }
  1059.                 }                                vvvvvvvvvvvvvvvvv
  1060.                 tprintf("Local Directory - %s\n",ftp->curdirs->dir);
  1061.                 return 0;
  1062.  
  1063.  
  1064.         *************************************************************************
  1065.  
  1066.            In general the current directory/filename handling in NOS needs
  1067.         to be looked at. It is not clear what depends on the system working
  1068.         directory. I would rather see nothing depend on it since it is a
  1069.         global value which effects all file and directory operations. Since
  1070.         NOS is a multitasking system it makes sense to keep this value private
  1071.         as needed in each session. The dirutil.c file needs some cleanup which
  1072.         I did not get to. In particuliar I suspect the wildcardize function
  1073.         is obsolete given the new code. Also as the function parameters are
  1074.         always put through 'undosify' (\ to /) tests for '\\' are not needed.
  1075.         If your function needs '\'s changed to '/'s call undosify(char *) This
  1076.         applies to MANY places in NOS where this conversion is done over and
  1077.         over. Granted it is just a couple of lines but that adds up!! Has anyone
  1078.         ever compiled a list of all of the functions in NOS with a brief description
  1079.         of what they do so that others can use existing code?
  1080.  
  1081.            There is no reason to change either the drive or directory at the
  1082.         DOS level in NOS and in fact with a multi-tasking system this is kinda
  1083.         dangerous. Especially if other functions are not aware of it. Better yet
  1084.         use FULLY qualified drive/directory names. These functions have been
  1085.         applied to the ftp client routines but there is no reason why they could
  1086.         not be used in the server also. Maybe with an additional 'permission
  1087.         file' drives and directories could be authorized. Something like:
  1088.  
  1089.          c:/pub/ * 3          < trailing slash - this and all below
  1090.          c:/games * 3         < none below
  1091.          d:/ *  3
  1092.          m:/ *  1             < maybe a cdrom
  1093.          c:/myfiles mypass 7  < password protected
  1094.  
  1095.         This would allow a user to specify drive/directory authorization on
  1096.         a system and even specify a password for that directory - assuming
  1097.         the authentication code was used (future) this would work. The ftpusers
  1098.         files would specify the login user/pass and the login directory. This
  1099.         file would specify what drive/directories were permitted on the system
  1100.         and what level of permission each had.
  1101.  
  1102.  
  1103.         Doug WA3DSP
  1104.  
  1105.  
  1106. 12. TRACING
  1107.  
  1108.         Tracing can now be done to a separate session. This is the new
  1109.     default. You can toggle to and from this trace session with the
  1110.     F9 key.
  1111.         Sometimes there are times you want to see the tracing while
  1112.     typing some commands. This can be done with the new command
  1113.     'strace on/off'. This defaults to ON, but when turned off,
  1114.     tracing will go to the command screen. If then turned on again,
  1115.     it will go to the trace (F9) screen again...
  1116.  
  1117.     For the memory hungry, session tracing can be turned off
  1118.     from the command line that starts NOS.EXE. Start it with a '-n'
  1119.     option to save about 4 kbyte of memory. This turns of the
  1120.     functionality of the 'strace' command...
  1121.     eg 'nos -n'
  1122.  
  1123.  
  1124. 13. F-Key SESSION SWITCHING
  1125.  
  1126.         Funtion keys F1-F8, if not defined as macros by the 'fkey'
  1127.     commands, will switch FROM ANY SESSION to the session of that
  1128.     numbers. eg. F3 will switch to session 3, no matter wether you
  1129.     are currently in the command, trace or any other session.
  1130.  
  1131.     If any of these F-keys is defined with the 'fkey' command,
  1132.     that session switch is disabled. (I use F5-F8 here for some
  1133.     quick keys, which leaves the first 4 session one keystroke away !)
  1134.  
  1135.  
  1136. 14. NTS traffic deletion.
  1137.  
  1138.         In order to ease NTS traffic handling, ANY user can now delete
  1139.     ANY message in areas who's name starts with "nts" (case is not
  1140.     significant). This allows users to delete traffic after delivery,
  1141.     without having to give them permission to delete all other mail
  1142.     as well (we wouldn't want that now, would we ;-)
  1143.         So area names like "nts", "ntslocal", or whatever you want
  1144.     to rewrite nts traffic to fall in this category.
  1145.     Any "nts*" mailfile (i mean wildcard here) that is NOT an area
  1146.     (ie not in /spool/areas) is still 'untouchable'
  1147.     (unless offcourse the user has permission to do so)
  1148.  
  1149.  
  1150. 15.  FORWARDING.
  1151.  
  1152.         BBS forwarding now can be 'scripted'. The format of forward.bbs
  1153.         file is expanded:
  1154.  
  1155.   w0rli                 <- still the bbs to forward to
  1156.   ax25 ax0 w0rli        <- still how to forward to
  1157.   [ multiples of:
  1158.   .send this text
  1159.   +continue if this string is received
  1160.   @wait_this_long for a reply  ]
  1161.   w0rli                 <- the areas to forward...
  1162.   pnw
  1163.   north
  1164.   -----------           <- end of this entry
  1165.  
  1166.   Valid connect-script lines are:
  1167.  
  1168.   '.' lines are like before. The text following will be sent over the
  1169.         connection.  This line doesn't need to contain text. In that case,
  1170.         a <cr> only gets send.
  1171.         NOTE: This will also reset the '+'  reply search string to null!
  1172.  
  1173.   '+' lines set a reply string to search for when a line is being received
  1174.         with the @ command.
  1175.  
  1176.   '@' lines set a timeout in seconds in wich to receive a line over the
  1177.         connection. This is the maximum time the system will
  1178.         wait for a reply. At this point, an attempt is made to receive a line
  1179.         from the connection in the time specified.
  1180.         If nothing is received after the timeout time, forwarding for this
  1181.         entry is cancelled.
  1182.         If something is received, and a search string was set with the
  1183.         + command, forwarding will be continued only if the search string
  1184.         appears somewhere in the line received.
  1185.         If the search string was not set, forwarding is continued.
  1186.  
  1187.         NOTE: if the value after @ can not be converted to a number, the
  1188.         default is 90 seconds.
  1189.         NOTE: the search string is reset if forwarding continues after the
  1190.         @ command.
  1191.  
  1192.  
  1193.    You can have as many of these lines to establish a connection. They need
  1194.    not be in any particular order.
  1195.  
  1196.    CAVEAT:
  1197.    Replies from the connection need to be full lines; ie they have to be
  1198.    terminated by a proper end-of-line sequence. This means you can not wait
  1199.    for the login prompt from a NOS system, since those are NOT terminated
  1200.    with a end-of-line sequence. (see the examples)
  1201.    You need to know the EXACT reply from systems you connect through.
  1202.    Each @ command reads only one line of data from the connection (if
  1203.    any, offcourse). This means that if a system replies multiple lines
  1204.    after a connection is made, you need multiple @ commands. (see the
  1205.    examples below). This makes it hard to connect via systems that can
  1206.    have varying replies, like NOS systems that do not have your system
  1207.    marked as a BBS, and thus will send welcome messages and varying
  1208.    message-of-the-day etc...
  1209.  
  1210.  
  1211. Some examples:
  1212.  
  1213. 1- a connection via a netrom neigbour:
  1214.         w0rli
  1215.         ax25 ax0 k7uyx-1        <- initial connection to netrom node
  1216.         .c rlimb                <- ask for a netrom connect from this node
  1217.         +Connected              <- if we don't get this, things went wrong
  1218.         @60                     <- maximum one minute wait !
  1219.         w0rli                   <- forward these areas...
  1220.         pnw
  1221.         allor
  1222.         ---------
  1223.  
  1224. 2- a connection via a JNOS system .
  1225.    This assumes that you are marked as a BBS at the JNOS system, so that
  1226.    you only get a '[JNOS...] and '>' prompt...
  1227.  
  1228.         n7dxt
  1229.         ax25 iposu              <- initial connection to the JNOS system
  1230.         +[JNOS                  <- wait for sign-on message from the JNOS box
  1231.         @15                     <- don't wait longer then 15 seconds
  1232.         +>                      <- wait for the prompt
  1233.         @15                     <- wait 15 seconds at the most
  1234.         .c ax0 n7dxt            <- next, request a gateway connect
  1235.         +Trying                 <- NOS replies it's trying...
  1236.         @15                     <- wait 15 secs max.
  1237.         +Connected              <- wait for 'IPOSU:WG7J-3} Connected to N7DXT'
  1238.         @60                     <- wait 60 secs max
  1239.         n7dxt                   <- send these following areas
  1240.         pnw
  1241.         allor
  1242.         ----------
  1243.  
  1244. 3- A connection to a JNOS system, and from there a telnet to a remote bbs
  1245.    (again, assumes your system is marked as a bbs !)
  1246.  
  1247.         wg7j
  1248.         ax25 con iposu          <- initial connection to JNOS
  1249.         +[JNOS                  <- sign-on from JNOS
  1250.         @15                     <- shouldn't take too long
  1251.         +>                      <- next is the prompt
  1252.         @15                     <- not too long either
  1253.         .t wg7j.ampr.org.       <- ask for a telnet connect
  1254.         +Trying                 <- JNOS is trying
  1255.         @15                     <- should come pretty soon
  1256.         +connected              <- wait for '*** connected to xxx'
  1257.         @45                     <- might take a while
  1258.         @30                     <- wait for another (blank) line
  1259.         +NOS                    <- now come the telnet sign-on message
  1260.         @30                     <- wait for this
  1261.         @30                     <- after this is a blank line, wait for it
  1262.         .w0rli                  <- now we get 'login:' and "Password:" prompts,
  1263.         .whomever               <- but they have no <cr>'s, so just answer
  1264.         sysop                   <- we're there, forward these areas.
  1265.         allor
  1266.         wg7j
  1267.         pnw
  1268.         nos
  1269.         ------
  1270.  
  1271.  
  1272.         
  1273. SETTING UP THE CONFERENCE BRIDGE
  1274. --------------------------------
  1275.  
  1276.         The conference facilities in JNOS40 can be accessed in three different
  1277. ways. Each way can independently be turned on or off.
  1278.  
  1279.         Before you enable any of these, you should set the convers hostname
  1280. to an appropriate name with the 'convers host' command.  If not, it will
  1281. default to the hostname.
  1282.  
  1283.  
  1284.         CONFERENCE CALL ACCESS
  1285.         First, a user can do an ax25 connect to the conference call.
  1286. You can set this call with the 'convers mycall' command.
  1287. You can set a separate inactivity timeout for these connections with the
  1288. 'convers t4' command.
  1289. Eg. our local node is CRV:K7UYX-1 in Corvallis, OR. You could set the
  1290. conference call to 'convers mycall QSO' and users can connect to
  1291. it to get directly to the conference bridge. If you want a long timeout,
  1292. use eg. 'convers t4 3600' for a one hour timeout. (default is 2 hours)
  1293.  
  1294. Next, you need to tell the system wich interfaces you want the conference call
  1295. to be active on. You might not want conference call connections on backbones,
  1296. or to avoid confusion with other systems using the same alias for the conference
  1297. call, etc.
  1298. Note: you can only do this AFTER you have attached the interfaces !
  1299.         convers interface 1
  1300.         convers interface 2
  1301.         convers interface 3
  1302.  
  1303.  
  1304.         NODE ACCESS
  1305.         Second, a user can connect to the regular node call,
  1306. by connection to the netrom alias (if used), the interface call or the
  1307. netrom call (if used). Then the user can give the 'C' command to join
  1308. the conference bridge. The permission to do so defaults to on, but
  1309. can be turned of with 'mbox convers off'.
  1310.  
  1311.         CONVERS SERVER ACCESS
  1312.         Last, there is the network server. This service listens to telnet
  1313. port 3600 and allows both users and remote conference servers to link to
  1314. you. It defaults to on, but can be stopped with 'stop convers'.
  1315.  
  1316.  
  1317.         LINKING TO REMOTE SERVERS.
  1318.         If you want to link to other conference servers, configure them
  1319. with as many lines as you need. You can add new links at any time.
  1320. Eg: 'convers link 44.26.0.4'
  1321.  
  1322.  
  1323. NOTE: is is very important to avoid link loops. They cause messages to
  1324. fly around in circles, thus overloading the network.
  1325. Eg. if you link to w0xyz, who in turn links to w0abc, there is no need for
  1326. either one of those to link back to you !
  1327.  
  1328. So to wrap it all up, something like this should work:
  1329.  
  1330. convers host Corvallis
  1331. convers mycall qso
  1332. convers t4 3600
  1333. convers interface 1
  1334. convers link 44.26.0.4
  1335. convers link 44.26.0.3
  1336. mbox convers off                #if you don't want nodeshell access
  1337.  
  1338.  
  1339.  
  1340.         A litte on CONFERENCE INTERNALS.
  1341.  
  1342.         The conference server in JNOS40 is modified from the convers code
  1343. in NOS.EXE, but is identical to the stuff in the JNOS releases.
  1344. Messages sent by a user get sent to all users on the local system as well
  1345. as all users on remote systems. All local users get their own copy of a message.
  1346. For users at remote systems, only one copy of the message is send across all
  1347. the remote links available. Say there are 3 local users, and 2 remote links
  1348. with 5 and 4 users respectively. If a local user sends a message, there will
  1349. be 4 copies sent: 2 to the 2 remaining local users, and 1 message each across
  1350. the 2 links. The message sent across the links will then be distributed to the
  1351. users at each of the linked servers.
  1352.  
  1353.  
  1354. OF PACLEN'S, MTU'S, MSS'S AND MORE
  1355. ----------------------------------
  1356.  
  1357. Setting Bufsize, Paclen, Maxframe, MTU, MSS and Window
  1358.  
  1359. Many Nos users are confused by these parameters and do not know  how  to  set
  1360. them  properly. This chapter will first review these parameters and then dis-
  1361. cuss how to choose values for them. Special emphasis  is  given  to  avoiding
  1362. interoperability  problems  that  may  appear when communicating with non-Nos
  1363. implementations of AX.25.
  1364.  
  1365. 1.  AX25 Parameters
  1366.  
  1367. 1.1.  Paclen
  1368.  
  1369. Paclen limits the size of the data field in an AX.25 I-frame. This value does
  1370. not  include  the  AX.25  protocol header (source, destination, digipeater
  1371. addresses, control and pid bytes).  The AX.25 V2 protocol specifies a maximum
  1372. of 256 bytes for the paclen.
  1373. Be aware that some AX.25 implementations can not handle paclen greater then
  1374. this, however NOS derived systems can handle this situation.
  1375. This may cause interoperability problems. Even Nos may have trouble with cer-
  1376. tain KISS TNCs because of fixed-size buffers. The original KISS TNC code  for
  1377. the  TNC-2  by  K3MC can handle frames limited in size only by the RAM in the
  1378. TNC, but some other KISS TNCs cannot.
  1379.  
  1380. Since unconnected-mode (datagram) AX.25 uses UI frames, the paclen value has no
  1381. effect in unconnected mode. IE. if you run IP in Datagram mode, you can still
  1382. have an MTU > Paclen !  (As long as your receive buffers can handle the mtu
  1383. size; see INTERFACE BUFFERS...)
  1384.  
  1385. In JNOS40, and JNOS v1.05 (and greater), paclen can be set on a per interface
  1386. basis with the 'ifconfig <iface> paclen ###' command.
  1387. Thus you can have a paclen of 256 on one interface and a smaller or larger
  1388. on other interfaces.
  1389. When you first attach an interface, the paclen defaults to the value of the
  1390. 'ax25 paclen' setting (this defaults to 256.)
  1391.  
  1392. If you want to carry netrom data over ax.25 links, the system needs to make
  1393. sure the paclen is large enough to handle the netrom MTU sized data.
  1394. Net/rom mtu is a maximum of 236; with a 20 byte header for the routing,
  1395. this gives a data size of 256 to be send with ax.25 packets.
  1396.  
  1397. In most versions of NOS.EXE, you can get problems when you use netrom and set
  1398. the paclen < 256. When the ax.25 layer gets to send netrom frames, it cannot
  1399. handle the whole data in one packet. It will then split it up in several
  1400. smaller frames, using the AX.25 Version 2.1 fragmentation scheme.
  1401. However, TheNet, Net/Rom, G8BPQ, MSYS and other nodes CAN NOT handle this
  1402. type of  fragmentation, resulting in impossible connections !
  1403.  
  1404. However, if you are running JNOS40, or JNOS v1.05 (or greater) for the PC,
  1405. you need not worry about this.  These 2 version of NOS have been modified
  1406. to never provide more then paclen sized netrom data to the ax.25 layer !
  1407. Thus the above problem will never happen...
  1408.  
  1409.  
  1410. 1.2.  Maxframe
  1411.  
  1412. This parameter controls the number of I-frames that may be send on an  AX.25
  1413. connection  before  it  must stop and wait for an acknowledgement.  Since the
  1414. AX.25/LAPB sequence number field is 3 bits wide, this number cannot be larger
  1415. than 7. It can be shown that the optimal value is 1.
  1416.  
  1417. Since unconnected-mode (datagram) AX.25 uses  UI  frames  that  do  not  have
  1418. sequence numbers, this parameter does not apply to unconnected mode.
  1419.  
  1420.  
  1421. 2.  IP and TCP Parameters
  1422.  
  1423. 2.1.  MTU
  1424.  
  1425. The MTU (Maximum Transmission Unit) is an interface parameter that limits the
  1426. size  of  the largest IP datagram that it may handle. The MTU is the sum of
  1427. the size of the data inside the IP header (TCP of UDP most likely), and the
  1428. size of the IP header itself.  IP datagrams routed to an interface that are
  1429. larger than its MTU are each split  into  two  or  more IP fragments.
  1430. Each fragment has its own IP header and is handled by the network
  1431. as if it were a distinct IP datagram, but when it arrives at the  destination
  1432. it  is held by the IP layer until all of the other fragments belonging to the
  1433. original datagram have arrived. Then they are reassembled back into the  com-
  1434. plete,  original  IP  datagram.  The  minimum  acceptable interface MTU is 28
  1435. bytes: 20 bytes for the IP (fragment) header, plus 8 bytes of data.
  1436.  
  1437. There is no default MTU in Nos; it must  be  explicitly  specified  for  each
  1438. interface as part of the 'attach' command.
  1439. This is not the case for the netrom interface.  Since ip data is carried
  1440. inside a 'regular' netrom frame, the ip data should never be larger then the
  1441. maximum data size the netrom protocol can handle.  The default mtu here is 236,
  1442. wich is the protocol maximum.
  1443.  
  1444. If you plan on running IP in Datagram mode (the default), you can have an
  1445. MTU that is larger then the paclen for that interface.  However, you should
  1446. still be aware of the constraints of the receiver buffer size! (See INTERFACE
  1447. BUFFERS)
  1448.  
  1449. If you plan on using IP in Virtual Connect, or VC, mode, you should be aware
  1450. of the following.  If you set the IP MTU larger then paclen for the interface,
  1451. you will hand a packet to the ax.25 layer that is larger then what it can
  1452. send in one packet.  Thus you will get AX.25 V2.1 fragmentation.
  1453. If you are exchanging ip data with NOS based stations only, you have no
  1454. problems (other then the fragmentation).
  1455. If you are interfacing with stations other then NOS bases systems, you again
  1456. will have troubles, like with netrom.  They will most likely not be able to
  1457. handle the packets correctly.
  1458. Thus be aware that in this case you should set the mtu to equal the paclen,
  1459. to avoid these problems.
  1460.  
  1461.  
  1462. 2.2.  MSS
  1463.  
  1464. MSS (Maximum Segment Size) is a TCP-level parameter that limits the amount of
  1465. data  that  the  remote  TCP will send in a single TCP packet. MSS values are
  1466. exchanged in the SYN (connection request) packets that open a TCP connection.
  1467. In  the  Nos  implementation  of TCP, the MSS actually used by TCP is further
  1468. reduced in order to avoid fragmentation at the local IP interface.  That  is,
  1469. the local TCP asks IP for the MTU of the interface that will be used to reach
  1470. the destination. It then subtracts 40 from the MTU value to allow for the
  1471. overhead of the TCP (20 bytes) and IP (20 bytes) headers. If the result is
  1472. less than the MSS received from the remote TCP, it is used instead.
  1473.  
  1474.  
  1475. 2.3.  Window
  1476.  
  1477. This is a TCP-level parameter that controls how much data the local TCP  will
  1478. allow the remote TCP to send before it must stop and wait for an acknowledge-
  1479. ment. The actual window value used by TCP when deciding how much more data to
  1480. send  is  referred  to  as  the effective window.  This is the smaller of two
  1481. values: the window advertised by the remote TCP minus the unacknowledged data
  1482. in  flight, and the congestion window, an automatically computed time-varying
  1483. estimate of how much data the network can handle.
  1484.  
  1485.  
  1486. 2.4.  Discussion
  1487.  
  1488. 2.4.1.  IP Fragmentation vs AX.25 Segmentation
  1489.  
  1490. IP-level fragmentation often makes it possible to interconnect two dissimilar
  1491. networks,  but it is best avoided whenever possible.  One reason is that when
  1492. a single IP fragment is lost, all  other  fragments  belonging  to  the  same
  1493. datagram   are  effectively  also  lost  and  the  entire  datagram  must  be
  1494. retransmitted by the source.  Even without loss, fragments require the  allo-
  1495. cation of temporary buffer memory at the destination, and it is never easy to
  1496. decide how long to wait for missing fragments before giving up and discarding
  1497. those  that  have already arrived.  A reassembly timer controls this process.
  1498. In Nos it is  (re)initialized with the 'ip  rtimer'  parameter  (default  30
  1499. seconds)  whenever  progress  is made in reassembling a datagram (i.e., a new
  1500. fragment is received).  It is not necessary that all of the fragments belong-
  1501. ing  to  a  datagram  arrive  within a single timeout interval, only that the
  1502. interval between fragments be less than the timeout.
  1503.  
  1504. Most subnetworks that carry IP have MTUs of 576 bytes or more,  so  intercon-
  1505. necting  them  with subnetworks having smaller values can result in consider-
  1506. able fragmentation. For this reason, IP implementors working  with  links  or
  1507. subnets having unusually small packet size limits are encouraged to use tran-
  1508. sparent fragmentation, that is, to  devise  schemes  to  break  up  large  IP
  1509. datagrams  into  a  sequence  of  link  or subnet frames that are immediately
  1510. reassembled on the other end of the link or subnet into the  original,  whole
  1511. IP  datagram without the use of IP-level fragmentation.
  1512.  
  1513. Such a scheme is provided in AX.25 Version 2.1. It can break a large IP or
  1514. NET/ROM datagram into a series of paclen-sized AX.25 segments (not to be
  1515. confused with TCP segments), one per AX.25 I-frame, for transmission and
  1516. reassemble them into a single datagram at the other end of the link before
  1517. handing it up to the IP or NET/ROM module.
  1518.  
  1519. Unfortunately, the segmentation procedure is a new feature in AX.25 and is not
  1520. yet widely implemented; in fact, Nos and derived software, is so far the only
  1521. known implementation. For regular NOS systems this can create some
  1522. interoperability  problems between Nos and non-Nos nodes. However, JNOS40 and
  1523. JNOS 1.05 (or later) have provisions built in to avoid these problems.
  1524. This problem is discussed further in the  section on setting the MTU.
  1525.  
  1526.  
  1527. 2.4.2.  Setting MTU
  1528.  
  1529. TCP/IP header overhead considerations similar to those  of  the  AX.25  layer
  1530. when  setting paclen apply when choosing an MTU.  However, certain subnetwork
  1531. types supported by Nos have well-established MTUs, and these should always be
  1532. used  unless  you  know  what  you're doing: 1500 bytes for Ethernet, and 508
  1533. bytes for ARCNET.  The MTU for PPP is automatically negotiated, and  defaults
  1534. to  1500.   Other  subnet  types,  including  SLIP and AX.25, are not as well
  1535. standardized.
  1536.  
  1537. SLIP has no official MTU, but the most common implementation (for  BSD  UNIX)
  1538. uses  an MTU of 1006 bytes.  Although Nos has no hard wired limit on the size
  1539. of a received SLIP frame, this is not true for other systems.  Interoperabil-
  1540. ity problems may therefore result if larger MTUs are used in Nos.
  1541.  
  1542. Choosing an MTU for an AX.25 interface is more complex.  When  the  interface
  1543. operates  in  datagram  (UI-frame) mode, the paclen parameter does not apply.
  1544. The MTU effectively becomes the paclen of the link.
  1545.  
  1546. However, when using AX.25 CONNECTIONS to send IP packets, data will be
  1547. automatically segmented into I-frames no larger than paclen bytes.
  1548. Unfortunately, as also  mentioned earlier, Nos is so far the only known
  1549. implementation of the new AX.25 segmentation procedure. Thus, if you are
  1550. exchanging IP over connections (ie. VC mode) with none-NOS based systems,
  1551. it might be needed to avoid AX.25 segmentation. Thus you should make sure
  1552. that packets larger than paclen are never handed to AX.25.  In order to
  1553. assure this, you should not set the MTU greater then the paclen.
  1554.  
  1555. On the other hand, if you do not send IP over connections, but in datagram
  1556. mode, you can use a larger MTU. Here, you are limited by the receive buffer
  1557. size (and the tolerance of other network users for your large packets and
  1558. proportionally greater bandwidth share !).
  1559.  
  1560. For connections carrying IP between NOS systems (ie NOS-NOS VC mode), you can
  1561. let AX.25 segmentation do it's thing. If you choose an MTU on the order of
  1562. 1000-1500 bytes, you can largely avoid IP-level fragmentation and reduce
  1563. TCP/IP-level header  overhead on  file transfers to a very low level. And you
  1564. are still free to pick whatever paclen value is appropriate for the link.
  1565.  
  1566.  
  1567. 2.4.5.  Setting MSS
  1568.  
  1569.  
  1570. The setting of this TCP-level parameter is somewhat less critical than the IP
  1571. and  AX.25 level parameters already discussed, mainly because it is automati-
  1572. cally lowered according to the MTU of the local interface when  a  connection
  1573. is  created.  Although this is, strictly speaking, a protocol layering viola-
  1574. tion (TCP is not supposed to have any knowledge  of  the  workings  of  lower
  1575. layers)  this  technique  does  work  well  in  practice.  However, it can be
  1576. fooled; for example, if a routing change occurs after the connection has been
  1577. opened  and  the new local interface has a smaller MTU than the previous one,
  1578. IP fragmentation may occur in the local system.
  1579.  
  1580. The only drawback to setting a large MSS is that  it  might  cause  avoidable
  1581. fragmentation  at  some  other point within the network path if it includes a
  1582. "bottleneck" subnet with an MTU smaller than that  of  the  local  interface.
  1583. (Unfortunately,  there  is  presently  no  way to know when this is the case.
  1584. There is ongoing work within the Internet Engineering Task Force  on  a  "MTU
  1585. Discovery"  procedure to determine the largest datagram that may be sent over
  1586. a given path without fragmentation, but it is not yet complete.)  Also, since
  1587. the  MSS  you specify is sent to the remote system, and not all other TCPs do
  1588. the MSS-lowering procedure yet, this might cause the remote  system  to  gen-
  1589. erate IP fragments unnecessarily.
  1590.  
  1591. On the other hand, a too-small MSS can result in a  considerable  performance
  1592. loss,  especially  when operating over fast LANs and networks that can handle
  1593. larger packets. So the best value for MSS is probably 40 less than the  larg-
  1594. est  MTU  on your system, with the 40-byte margin allowing for the TCP and IP
  1595. headers. For example, if you have a SLIP interface with a 1006 byte  MTU  and
  1596. an  Ethernet  interface  with  a  1500  byte MTU, set MSS to 1460 bytes. This
  1597. allows you to receive maximum-sized Ethernet packets, assuming  the  path  to
  1598. your system does not have any bottleneck subnets with smaller MTUs.
  1599.  
  1600. 2.4.6.  Setting Window
  1601.  
  1602. A sliding window protocol like TCP cannot transfer  more  than  one  window's
  1603. worth  of data per round trip time interval. So this TCP-level parameter con-
  1604. trols the ability of the remote TCP to keep a long "pipe" full. That is, when
  1605. operating  over  a path with many hops, offering a large TCP window will help
  1606. keep all those hops busy when you're  receiving  data.  On  the  other  hand,
  1607. offering  too  large a window can congest the network if it cannot buffer all
  1608. that data. Fortunately, new algorithms for dynamic controlling the  effective
  1609. TCP  flow  control window have been developed over the past few years and are
  1610. now widely deployed.  Nos includes them, and you can  watch  them  in  action
  1611. with  the  'tcp  status  <tcb>' or 'socket <#>' commands.  Look at the cwind
  1612. (congestion window) value.
  1613.  
  1614. In most cases it is safe to set the TCP window to a small integer multiple of
  1615. the  MSS,  (eg.  4times),  or  larger  if  necessary  to fully utilize a high
  1616. bandwidth*delay product path. One thing to keep in  mind,  however,  is  that
  1617. advertising a certain TCP window value declares that the system has that much
  1618. buffer space available for incoming data.  Nos does not actually  preallocate
  1619. this space; it keeps it in a common pool and may well "overbook" it, exploit-
  1620. ing the fact that many TCP connections are idle for long periods and gambling
  1621. that  most  applications will read incoming data from an active connection as
  1622. soon as it arrives, thereby quickly freeing the buffer memory.   However,  it
  1623. is possible to run Nos out of memory if excessive TCP window sizes are adver-
  1624. tised and either the applications go to  sleep  indefinitely  (eg.  suspended
  1625. Telnet  sessions)  or  a  lot of out-of-sequence data arrives.  It is wise to
  1626. keep an eye on the amount of available memory and to decrease the TCP  window
  1627. size (or limit the number of simultaneous connections) if it gets too low.
  1628.  
  1629. Depending on the channel access method and link level protocol, the use of  a
  1630. window  setting  that exceeds the MSS may cause an increase in channel colli-
  1631. sions. In particular, collisions between  data  packets  and  returning  ack-
  1632. nowledgements  during  a  bulk file transfer may become common. Although this
  1633. is, strictly speaking, not TCP's fault, it is possible  to  work  around  the
  1634. problem  at  the  TCP  level  by  decreasing  the window so that the protocol
  1635. operates in stop-and-wait mode.  This is done  by  making  the  window  value
  1636. equal to the MSS.
  1637.  
  1638.  
  1639. INTERFACE BUFFERS.
  1640. ------------------
  1641.  
  1642.         There are two different types of interface buffers associated with
  1643. attaching interfaces.  The first type is the ring buffer or fifo that is
  1644. used when attaching a serial port.  This buffer is allocated just once, and
  1645. is used throughout the life of the interface.  The asynchrounous (or serial
  1646. port) receiver interrupt code puts characters in this buffer in a circular
  1647. fashion. Ie. when the end of the buffer is reached, the next character will
  1648. be stored at the beginning.
  1649.         The receiver process for that interface will read the characters
  1650. from this fifo-buffer into memory buffers or mbufs,  that are used internally
  1651. to handle and pass around data.  Setting the size of this buffer is a bit
  1652. quess work.  A good place to start is to set it to twice the size of the
  1653. packet length used over the serial port.  Once you have the interface running,
  1654. you can monitor the usage of the fifo buffer with the 'asy' command.
  1655. This will show you the 'buf hi' (for JNOS40 code) or 'sw hi' for PC based NOS.
  1656. This is the high of the maximum number of characters that were waiting in the
  1657. fifo buffer to be read by the receiver process. If this number is close to
  1658. the fifo buffer size, or if the 'asy' command shows buffer overflows ('buf over'
  1659. for JNOS40 code and 'sw over' for NOS.EXE), you should increase the buffer
  1660. size.  If however the number is significantly smaller, you could decrease
  1661. the buffer size.
  1662.  
  1663.         The second type of interface buffers are also receiver buffers.
  1664. However, these are buffers that are allocated time and time around, and
  1665. (almost always) are allocated during interrupts service routines, ie. with
  1666. the interrupts off!  In order to keep the service routine short, the buffer
  1667. is allocated from a special 'interrupt buffer queue'. This is because a
  1668. regular memory allocation would take far too long.
  1669.         In NOS.EXE , things like the SCC, PI and PACKET drivers use these
  1670. buffers.  In JNOS40, the two internal modem drivers use them.
  1671. Since one interrupt buffer pool services all the drivers that need buffers
  1672. during interrupt, the size and number of these buffers are quite critical
  1673. to a system's 'well-being'.  A buffer aquired from the interrupt buffer
  1674. pool needs to be able to store received data from all interfaces that use it.
  1675. In other words, it needs to be large enough to handle the largest packet
  1676. from those interfaces.
  1677.         A good rule to estimate the size of the interrupt buffers needed
  1678. is as follows.
  1679.  
  1680.         You should set 'memory ibufsize' to (the largest + extra) of:
  1681.  
  1682. 1 - the largest ax.25 paclen parameter of the interfaces using ibufs.
  1683.  
  1684. 2 - the largest ip mtu parameter of the interfaces using ibufs.
  1685.  
  1686. The mtu is important because on ax.25 interfaces where the mtu is larger
  1687. then the paclen, there is a possibility of receiving larger ip frames,
  1688. if IP traffic is carried in Datagram mode. This possibility does not
  1689. exist if IP traffic is carried in Virtual Connect mode, since the data will
  1690. be split in several paclen sized ax.25 packets (this is the AX.25 V2.1
  1691. fragmentation at work for you !)  In the last case, you can ignore
  1692. these mtu values in finding the ibuf size.  (However, for NOS.EXE you still
  1693. need to use the mtu for ethernet interfaces !)
  1694.  
  1695. The 'extra' in the above is another interesting number !
  1696. It accounts for the additional protocol info, and internal headers, needed
  1697. in the buffer. The maximum of this will be 72 bytes for a maximum ax.25
  1698. header (10 calls * 7 bytes, plus pid and control bytes), and space for
  1699. the internal phdr structure, currently 8 bytes. Ie. the 'extra' value
  1700. can be as large as 80 bytes !
  1701.  
  1702. Eg. if you have an ax.25 interface with paclen of 256, mtu of 256,
  1703. another with paclen of 256 and mtu of 512,
  1704. you should set the 'memory ibufsize' to at least 512 + 80 !
  1705.  
  1706. JNOS40 ibufs default to 600 bytes, and thus they should suffice for paclen's
  1707. or mtu's up to 512.  NOS.EXE has a default ibufsize of 2k (ie 2048 bytes),
  1708. wich suffices for the standard Ethernet MTU of 1500 bytes.
  1709.  
  1710. Determining the number of buffers needed is another empirical process.
  1711. Start with, say, ten buffers (ie 'memory nibufs 10'), and see if you
  1712. get a lot of memory ibuffails in the 'mem stat' display. If this is the
  1713. case you should increase the number of buffers.
  1714.  
  1715.  
  1716. NOTE: if you are not using any drivers that require interrupt buffers,
  1717. there is no need to keep them around. In that case, simple set the
  1718. 'mem nibuf' to zero.
  1719.  
  1720.  
  1721.  
  1722. PER INTERFACE PARAMETERS
  1723. ------------------------
  1724.  
  1725.         As of V1.05, there are quite a few new parameters that are
  1726.         on a per-interface basis. This means they can be set for interface
  1727.         xyz without effecting the settings for interface abc.
  1728.  
  1729.         As of 1.06, these commands now TOGGLE the flags !!! Ie. you can turn
  1730.         the options ON by issuing the command, off again by issuing the
  1731.         command again !
  1732.  
  1733.         These settings are shown in the 'ifconfig' display, in the 'flags'
  1734.         value shown here.
  1735.         In the code, they are defined as:
  1736.  
  1737. #define DATAGRAM_MODE   0   /* Send datagrams in raw link frames */
  1738. #define CONNECT_MODE    1       /* Send datagrams in connected mode */
  1739. #define IS_NR_IFACE     2   /* Activated for NET/ROM - WG7J */
  1740. #define NR_VERBOSE      4   /* NET/ROM broadcast is verbose - WG7J */
  1741. #define IS_CONV_IFACE   8   /* Activated for conference call access - WG7J */
  1742. #define AX25_BEACON     16  /* Broadcast AX.25 beacons */
  1743. #define MAIL_BEACON     32  /* Send MAIL beacons */
  1744. #define HIDE_PORT       64  /* Don't show port in mbox P command */
  1745. #define AX25_DIGI       128 /* Allow digipeating */
  1746.  
  1747. NEW in 1.06:
  1748. #define ARP_EAVESDROP   256 /* Listen to ARP replies */
  1749. #define ARP_KEEPALIVE   512 /* Keep arp entries alive after timeout */
  1750. #define LOG_AXHEARD    1024 /* Do ax.25 heard logging on this interface */
  1751. #define LOG_IPHEARD    2048 /* Do IP heard logging on this interface */
  1752.  
  1753.         In order to find the options, add the correct set of options to get
  1754.         the number shown in the 'flags' field...
  1755.  
  1756.         These options can be set with the following commands:
  1757.  
  1758.         mode <iface> datagram|vc
  1759.  
  1760.         netrom interface <iface> <qual> [n]
  1761.  
  1762.         convers interface <iface>
  1763.  
  1764.         ax25 bcport <iface>
  1765.  
  1766.         mbox mport <iface>
  1767.  
  1768.         mbox hideport <iface>
  1769.  
  1770.         ax25 digipeat <iface>
  1771.  
  1772.  
  1773.         As of 1.06, there are a few new one:
  1774.  
  1775.         arp eaves <ifave>  - toggle arp eaves dropping; this will build the
  1776.                 arp table will all arps heard on the interface given.
  1777.  
  1778.         arp poll <iface>   - toggle arp keep-alive polling when an arp entry
  1779.                 expires.
  1780.  
  1781.         AX25 heard is now settable per interface !!!
  1782.         ax hport <iface>
  1783.  
  1784.         You can set the maximum size of the ax heard table with
  1785.         ax hsize n
  1786.         It defaults to 0, wich means no limit.
  1787.  
  1788.  
  1789.  
  1790.         ip hport <iface>   - do ip-heard logging on the interface named.
  1791.                              this shows with 'ip heard', or the mailbox IH
  1792.                              command.
  1793.  
  1794.         The size of the ip-heard list can be set with
  1795.         ip hsize n . 0 means no limit. Default is 16
  1796.  
  1797.  
  1798.  
  1799.  
  1800.  
  1801. CONFIGURING NOS.EXE AS A FULLSERVICE BBS.
  1802. -----------------------------------------
  1803.  
  1804.         Given in the appendices are all the configuration files
  1805. as I use them for the Corvallis area bbs wg7j.or.usa.na. I simply
  1806. provide them as an example of a possible configuration. I leave it
  1807. up to the individual user 'to find there own little comfort zone'
  1808. These files are undergoing continuous evolution as new bbs's, new
  1809. bulletin types etc. show up...
  1810. In our area we do not use rspf, nntp, pop or any of the 'exotic'
  1811. stuff like that, so all that is not configured.
  1812.  
  1813. /AUTOEXEC.NOS
  1814. ------------
  1815.         My autoexec.nos is pretty straight forward,
  1816. and I leave it up to you figure most of it out. I'll elaborate on
  1817. a few things.
  1818.  
  1819. I use a SCC card, and the SCC driver. We have a 256 byte mtu/paclen,
  1820. so buffers of 400 bytes is enough (see elsewhere for more)
  1821.         me ibufsize 400
  1822.         me nibufs 20
  1823.  
  1824. I run with Watchdog on, just in case the system locks up. Sometime i like
  1825. to watch memory status for debugging purposes...
  1826.         watchdog yes
  1827.         mem debug on
  1828.  
  1829. Next, i setup some some global things: call, tcp hostname and ip address
  1830.         ax25 mycall wg7j
  1831.         hostname wg7j
  1832.         ip address 44.26.1.20
  1833.  
  1834. The ax.25 setup is pretty straigt forward.
  1835.         ax25 version 2
  1836.         ax25 maxframe 1
  1837.         ax25 retry 5
  1838.         ax25 window 1024
  1839.         ax25 irtt 4500
  1840.         ax25 timer linear
  1841.         ax25 t3 0
  1842. Give the a 10 minute timeout
  1843.         ax25 t4 600
  1844. AX.25 beaconing; read FCC part 97,
  1845. and do as you think is according to the rules...
  1846.         ax25 bci 600
  1847.         ax25 bct "CRVBBS in Corvallis, run by Johan, WG7J. (TCP/IP -> 44.26.0.80)"
  1848.  
  1849. I have 2 interfaces, one scc card with one radio port (2m)
  1850. and a remote pc that talks over a serial port (sysop).
  1851.         #com3 = kiss to home.wg7j
  1852.         attach asy 0x3f8 4 ax25 sysop 1536 1024 9600
  1853.         ifconfig sysop linkaddress bbs
  1854.         ifconfig sysop descr "to remote sysop PC"
  1855.  
  1856.         #attach an SCC card at IRQ 4
  1857.         #init it first
  1858.         attach scc 2 init 150 4 2 0 1 168 7 p4915200
  1859.         attach scc 0 ax25 2m 256 d1200 350
  1860.  
  1861. I configure the 2m interface for a few small things, like our tcpip subnet
  1862.         ifc 2m netm 0xffffff00
  1863.         ifc 2m broad 44.26.1.0
  1864.         ifc 2m descr "SCC port 1 on 144.92 MHz"
  1865.  
  1866. Now i have to activate beacons and mail beacons, and digipeat
  1867.         ax25 bcport 2m
  1868.         mbox mport 2m
  1869.         ax25 digipeat 2m
  1870.  
  1871. If you had a tnc in kiss mode, you could set the txtail, etc... parameters
  1872.         #KISS setup to TNC
  1873.         #tx-delay (300 ms)
  1874.         #param 2m 1 30
  1875.         #persistence
  1876.         #param 2m 2 63
  1877.         #slot-time (10ms)
  1878.         #param 2m 3 16
  1879.         #tx-tail (50 ms)
  1880.         #param 2m 4 5
  1881.         #half duplex channel !
  1882.         #param 2m 5 0
  1883.  
  1884. I forward to some bbs's via an AXIP Internet Wormhole.
  1885. I have some exotic digipeater routes to them:
  1886.         #some routes for wormhole fowarding
  1887.         ax25 route add k9iu-13 2m wg7j-13
  1888.         ax25 route add ke7kd 2m wg7j-14 n8khn-2
  1889.  
  1890. Time to attach the NET/ROM stuff
  1891.         #NET/ROM SETUP
  1892.         #attach pseudo netrom interface
  1893.         attach netrom
  1894.         netrom alias crvbbs
  1895. Activate the interfaces for netrom, both are in 'verbose' mode
  1896.         netrom interface 2m 192
  1897.         netrom interface sysop 224
  1898.  
  1899. Setup some timing and retry maximums
  1900.         netrom retries 5
  1901.         netrom timer linear
  1902.  
  1903. Load the routes files saved at last exit
  1904.         netrom load
  1905.  
  1906. Don't show users '#' nodes !
  1907.         netrom hidden no
  1908.  
  1909. Time for a few IP and TCP related things, see the discussion elsewhere
  1910. for more information
  1911.         ip ttl 25
  1912.         tcp mss 432
  1913.         tcp window 864
  1914.         tcp timer linear
  1915.  
  1916. Now the IP routes. The local subnet is on the 2m port.
  1917.         route add 44.26.1/24 2m
  1918.  
  1919. My remote sysop PC sits on the serial connection
  1920.         route add 44.26.1.19 sysop
  1921.  
  1922. Default everything to the Internet gateway
  1923.         #add the ip routes
  1924.         route add default 2m 44.26.1.16
  1925.  
  1926.  
  1927. IP over netrom is fun to play with. Currently all Portland area
  1928. goes to Hank's system in Portland.
  1929. add a route to a gateway for all 44.116 traffic
  1930.         #add w0lri as gateway over netrom
  1931.         route add 44.116/16 netrom 44.116.0.70
  1932. Next adds the appropriate arp entry for that gateway.
  1933.         arp add 44.116.0.70 netrom w0rli-3
  1934.  
  1935. A few things about domain
  1936.         domain suffix ampr.org.
  1937.         domain translate off
  1938.  
  1939. SMTP needs to be quite, and I use the internet gateway as my default route,
  1940. if my rewrite/alias files don't catch the message
  1941.         smtp quiet yes
  1942.         smtp mode route
  1943.         smtp batch on
  1944.         smtp gateway 44.26.1.16
  1945.  
  1946. Start the log
  1947.         log \spool\net.log
  1948.  
  1949.  
  1950. Now start all servers
  1951.         ##ready to start all servers now start smtp
  1952.         ##turn on the bbs for ax25, netrom and telnet connects
  1953.         start ax25
  1954.         start netrom
  1955.         start telnet
  1956.         start ftp
  1957.         start smtp
  1958.         remote -s your-password-here
  1959.         start remote
  1960.         start finger
  1961.         attend off
  1962.  
  1963.  
  1964. Setup the mailbox stuff
  1965.         #we're not home !
  1966.         mbox attend off
  1967.         #forward every hour
  1968.         mb timer 3600
  1969.         #start forwarding at 10 minutes past the hour
  1970.         at 10 "start forward"
  1971.  
  1972.         #'mail for' beacon every half hour
  1973.         mb mailfor 1800
  1974.  
  1975.         #don't beacon for these private mailboxes.
  1976.         mb mailfor exclude indy nevada w0rli n7dxt wa7shp sysop check north south nts
  1977.  
  1978.         #notify users when new area mail is in
  1979.         mb new on
  1980.  
  1981.         #also ask for the 'okay to send'
  1982.         mb sendquery on
  1983.  
  1984.         #max 150 messages per group
  1985.         mb max 150
  1986.         #the message-of-the-day
  1987.         mb motd "'?' or 'h command` for help; 'd commands.txt' for command cheat sheet...\nSend local messages to 'users' .Questions to sysop or wg7j...\nEnjoy."
  1988.         #no jumpstart for these guys
  1989.         mb jumpstart exclude k7uyx-1 wg7j-3 wg7j-1
  1990.         mb jumpstart on
  1991.         mb haddress or.usa.na
  1992.         mb qth "Corvallis, OR"
  1993.         mb zip 97330
  1994.         #don't forward smtp headers over the bbs circuit
  1995.         mb smtp no
  1996.         #optimize forwarding by checking the R: lines
  1997.         bulletin check yes
  1998.         #use the bulletins origination date
  1999.         bulletin date yes
  2000.         #grab return address from R: lines
  2001.         bulletin return yes
  2002.         #hold forward loop messages after 2 loops
  2003.         bulletin loophold 2
  2004.  
  2005.         #set some timeout values
  2006.         ftptdisc 600
  2007.         mbox tdisc 600
  2008.         netrom tdisc 600
  2009.  
  2010.         #start some cycles at a certain time
  2011.         # expire messages each night at 1pm (i'm using utc time)
  2012.         at 0900 "expire 24"
  2013.         #delete old bid's every night at 2pm, limit is 21 days
  2014.         at 1000 "oldbid 24 21"
  2015.  
  2016.  
  2017. Finally tell the network we;re there, and poll other jnos1.05 or jnos40
  2018. nodes for their netrom routes
  2019.         ##finally tell the netrom network we're there !!
  2020.         netrom bcnodes 2m
  2021.         netrom bcpoll 2m
  2022.  
  2023.  
  2024.  
  2025. /FTPUSERS
  2026. --------
  2027.         Appendix B, ftpusers, contains entries for the bbs's that
  2028. forward to me, as well as those users that have sysop priviledges.
  2029. All other regular users are taken care off with the univperm entry;
  2030. thus no long list of users is needed. Offcourse you can setup entries
  2031. for specific users that have special needs...
  2032. (one note: it is imperative that you have one space, and nothing else,
  2033. between fields on a line!!!)
  2034. The numbers in the file are those found in the MAILBOX USER PERMISSION
  2035. section.
  2036.  
  2037.  
  2038.  
  2039. /ALIAS
  2040. -----
  2041.         Appendix C, alias, is a simple list of alias names the system
  2042. recognized. I like to be known as 'johan' as well as 'wg7j' but always
  2043. read mail as wg7j (line 1). Ron, wa7tas, receives his mail via smtp
  2044. on his 24hrs setup (line 2). Same for k7mkg.
  2045.  
  2046.  
  2047.  
  2048. /SPOOL/AREAS
  2049. ------------
  2050.         Appendix D, /spool/areas, simply list all the public
  2051. mail areas I let my users access. You should recognize such things
  2052. as 'allusa', 'amsat' etc...
  2053.  
  2054.  
  2055.  
  2056. /SPOOL/REWRITE
  2057. --------------
  2058.         Appendix E, /spool/rewrite, is where the fun starts !
  2059. Before i get into my 'philosophy'; if you don't feel comfortable
  2060. with the rewrite mechanism, please refer to or read the 'mailbox.txt'
  2061. destributed with this document. That document, written by NQ0I and
  2062. SM0RGV, explains the bbs well. Credit goes to those gentlemen.
  2063.  
  2064.         Again, the following is by no means the best or only way to configure
  2065. your system's rewrite mechanism. It is simply the way I run it, and is shown
  2066. as an example only. My systems tends to not take a lot of bulletins, to
  2067. keep the load down (most are old anyway), but you might decide to do things
  2068. different.
  2069.  
  2070.         Now to the way I 'run mail'. First thing I want to do is catch
  2071. all Internet style (ie. SMTP targeted) mail, and make sure that those
  2072. messages go as is. Lines 1-4 take care of this by catching most of the
  2073. top-level Internet domain names.
  2074.         *@*.edu $1@$2.edu
  2075.         *@*.com $1@$2.com
  2076.         *@*.gov $1@$2.gov
  2077.         *@*.org $1@$2.org
  2078.  
  2079.         Next is an example of catching some things you don't want; here
  2080. in Oregon some-one pumps in daily astronomical stuff. By the time it gets
  2081. to my system it's way old :-( By rewriting it to 'refuse', the bbs will
  2082. send a 'NO' as if it already has receive it. Same for some other things
  2083. the wormhole bbs's are trying to forward to me.
  2084.         astro@* refuse
  2085.         *@dist9 refuse
  2086.         *@allin refuse
  2087.         *@okipn refuse
  2088.         *@allil* refuse
  2089.         msys@* refuse
  2090.         fbb@* refuse
  2091.         mods@* refuse
  2092.         *@ww refuse
  2093.  
  2094.  
  2095.         I want users to be able to send mail to sysop on my system without
  2096. it being forwarded elsewhere. I take care of this by rewriting
  2097. it to the 'wg7j' area (ie. my private mail area)
  2098.         sysop wg7j
  2099.         sysop@wg7j* wg7j
  2100.  
  2101. Next I send everything else that comes in for sysops to the 'sysop'
  2102. area. That way I can participate in receiving and forwarding stuff like
  2103. 'sb sysop@allor' etc...
  2104.         sysop@* sysop
  2105.  
  2106. Next I place anything addresses to specific mail areas as setup
  2107. with the '/spool/areas' files into those mailboxes
  2108.         tcpip@* tcpip
  2109.         wanted@* wanted
  2110.         want@* wanted
  2111.         need@* wanted
  2112.         sale@* sale
  2113.         4sale@* sale
  2114.         trade@* sale
  2115.         dx@* dx
  2116.         humor@* humor
  2117.         jokes@* humor
  2118.         happy@* humor
  2119.         races@* races
  2120.         fcc@* fcc
  2121.         amsat@* amsat
  2122.         arrl@* arrl
  2123.         ares@* ares
  2124.         swap@* sale
  2125.         nasa@* nasa
  2126.  
  2127. Then the same thing for the @-distribution names:
  2128.         *@nasa nasa
  2129.         *@amsat amsat
  2130.         *@ares* ares
  2131.         *@arrl arrl
  2132.         *@arl arrl
  2133.         *@pnw pnw
  2134.         *@allor* allor
  2135.         *@allusw allusw
  2136.         *@allus* allusa
  2137.  
  2138. NOTE: if you follow this style, it is important that the lines above
  2139. are kept in that order (Ie TO sorting FIRST, then AT sorting !!)
  2140. Otherwize something like 'amsat@allusa' will end up in the 'allusa' area
  2141. instead of the 'amsat' area where I prefer it.
  2142.  
  2143.  
  2144. Next I will catch anything destined for my bbs that hasn't been
  2145. already caught by a previous rule. At this point, this <should>
  2146. only be private mail.
  2147.         *@wg7j* $1
  2148.  
  2149.  
  2150. Then I will catch any mail destined for the bbs's i forward to
  2151. and place it in their mailbox to be forwarded.
  2152.         *@wa7tas* wa7tas
  2153.         *@wa7shp* wa7shp
  2154.         *@w0rli* w0rli
  2155.         *@n7dxt* n7dxt
  2156.  
  2157. I place anything destined for a few in-state (ie OR) bbs's that are
  2158. north of me into the 'north' mailbox. They get forwarded north-ward
  2159. (see forward.bbs)
  2160.         *@n7hae* north
  2161.         *@n7vyn* north
  2162.         *@n7koj* north
  2163.         *@n7pwf* north
  2164.         *@wa6gfp* north
  2165.         *@n7jqk* north
  2166.         *@ka7agh* north
  2167.         *@kb7dbd* north
  2168.  
  2169.  
  2170. Then I take all local NTS traffic and places it in it's own area.
  2171.         *@97321* ntslocal
  2172.         *@9733* ntslocal
  2173.         *@97370* ntslocal
  2174.         *@97389* ntslocal
  2175.  
  2176. Other in-state NTS goes into the right direction.
  2177.         *@98* north
  2178.         *@970* north
  2179.         *@971* north
  2180.         *@972* north
  2181.         *@9730* wa7shp
  2182.  
  2183. All out-of-state NTS traffic gets placed into the 'nts' area
  2184. for forwarding
  2185.         *@ntswa* north
  2186.         *@nts* nts
  2187.  
  2188.  
  2189.     They idea is, that by rewriting every in-state bbs north of me into
  2190. the north area, everything in-state left has to go south !
  2191. (Luckily, N7DXT, who gets my south traffic, is forgiving and
  2192. will send my mistakes north anyway !)
  2193.         *@*.or* south
  2194.  
  2195. A few other states that go south:
  2196.         *@*.ca* south
  2197.         *@*.az* south
  2198.         *@*.tx* south
  2199.  
  2200. These states go to K9IU in Indiana via the wormhole:
  2201.         *@*.in* indy
  2202.         *@*.oh* indy
  2203.         *@*.mi* indy
  2204.         *@*.ky* indy
  2205.         *@*.tn* indy
  2206.  
  2207. And lonesome KE7KD in Reno get the Nevada traffic:
  2208.         *@*.nv* nevada
  2209.  
  2210. Send all remaining North American mail north (to w0rli, who
  2211. has an HF port...)
  2212.         *@*.eu north
  2213.  
  2214.  
  2215. Catch 2 more continents:
  2216.         *@*.oc south
  2217.         *@*.as north
  2218.  
  2219.  
  2220. And finally, I will catch anything that is left at this point.
  2221. It puts it in the 'check' area. The idea here is that I can
  2222. manually check the 'check' area and adjust '/spool/rewrite' accordingly !
  2223. (and append that mail to the right mailbox file so it goes out!)
  2224. 'check' is actually an alias, that sends copy of the message to both the
  2225. 'check' area and my private mailbox, so that i will know right away when some
  2226. thing unknown has shown up...
  2227.         *@* check
  2228.  
  2229.  
  2230. /SPOOL/FORWARD.BBS
  2231. ------------------
  2232.         As of v1.05, forwarding can now hand 'connect scripts' in the
  2233. forward.bbs file. The format of forward.bbs file is expanded:
  2234.  
  2235.   w0rli                 <- still the bbs to forward to
  2236.   ax25 ax0 w0rli        <- still how to forward to
  2237.   [ multiples of:
  2238.   .send this text
  2239.   +continue if this string is received
  2240.   @wait_this_long for a reply  ]
  2241.   w0rli                 <- the areas to forward...
  2242.   pnw
  2243.   north
  2244.   -----------           <- end of this entry
  2245.  
  2246.   Valid connect-script lines are:
  2247.  
  2248.   '.' lines are like before. The text following will be sent over the
  2249.         connection.  This line doesn't need to contain text. In that case,
  2250.         a <cr> only gets send.
  2251.         NOTE: This will also reset the '+'  reply search string to null!
  2252.  
  2253.   '+' lines set a reply string to search for when a line is being received
  2254.         with the @ command.
  2255.  
  2256.   '@' lines set a timeout in seconds in wich to receive a line over the
  2257.         connection. This is the maximum time the system will
  2258.         wait for a reply. At this point, an attempt is made to receive a line
  2259.         from the connection in the time specified.
  2260.         If nothing is received after the timeout time, forwarding for this
  2261.         entry is cancelled.
  2262.         If something is received, and a search string set with the + command,
  2263.         forwarding will be continued only if the search string appears
  2264.         somewhere in the line received.
  2265.         If the search string was not set, forwarding is continued.
  2266.  
  2267.         NOTE: if the value after @ can not be converted to a number, the
  2268.         default is 90 seconds.
  2269.         NOTE: the search string is reset if forwarding continues after the
  2270.         @ command.
  2271.  
  2272.  
  2273.    You can have as many of these lines to establish a connection. They need
  2274.    not be in any particular order.
  2275.  
  2276.    CAVEAT:
  2277.    Replies from the connection need to be full lines; ie they have to be
  2278.    terminated by a proper end-of-line sequence. This means you can not wait
  2279.    for the login prompt from a NOS system, since those are NOT terminated
  2280.    with a end-of-line sequence. (see the examples)
  2281.    You need to know the EXACT reply from systems you connect through.
  2282.    Each @ command reads only one line of data from the connection (if
  2283.    any, offcourse). This means that if a system replies multiple lines
  2284.    after a connection is made, you need multiple @ commands. (see the
  2285.    examples below). This makes it hard to connect via systems that can
  2286.    have varying replies, like NOS systems that do not have your system
  2287.    marked as a BBS, and thus will send welcome messages and varying
  2288.    message-of-the-day etc...
  2289.  
  2290.  
  2291. Some examples:
  2292.  
  2293. 1- a connection via a netrom neigbour:
  2294.         w0rli
  2295.         ax25 ax0 k7uyx-1        <- initial connection to netrom node
  2296.         .c rlimb                <- ask for a netrom connect from this node
  2297.         +Connected              <- if we don't get this, things went wrong
  2298.         @60                     <- maximum one minute wait !
  2299.         w0rli                   <- forward these areas...
  2300.         pnw
  2301.         allor
  2302.         ---------
  2303.  
  2304. 2- a connection via a JNOS system .
  2305.    This assumes that you are marked as a BBS at the JNOS system, so that
  2306.    you only get a '[JNOS...] and '>' prompt...
  2307.  
  2308.         n7dxt
  2309.         ax25 iposu              <- initial connection to the JNOS system
  2310.         +[JNOS                  <- wait for sign-on message from the JNOS box
  2311.         @15                     <- don't wait longer then 15 seconds
  2312.         +>                      <- wait for the prompt
  2313.         @15                     <- wait 15 seconds at the most
  2314.         .c ax0 n7dxt            <- next, request a gateway connect
  2315.         +Trying                 <- NOS replies it's trying...
  2316.         @15                     <- wait 15 secs max.
  2317.         +Connected              <- wait for 'IPOSU:WG7J-3} Connected to N7DXT'
  2318.         @60                     <- wait 60 secs max
  2319.         n7dxt                   <- send these following areas
  2320.         pnw
  2321.         allor
  2322.         ----------
  2323.  
  2324. 3- A connection to a JNOS system, and from there a telnet to a remote bbs
  2325.    (again, assumes your system is marked as a bbs !)
  2326.  
  2327.         wg7j
  2328.         ax25 con iposu          <- initial connection to JNOS
  2329.         +[JNOS                  <- sign-on from JNOS
  2330.         @15                     <- shouldn't take too long
  2331.         +>                      <- next is the prompt
  2332.         @15                     <- not too long either
  2333.         .t wg7j.ampr.org.       <- ask for a telnet connect
  2334.         +Trying                 <- JNOS is trying
  2335.         @15                     <- should come pretty soon
  2336.         +connected              <- wait for '*** connected to xxx'
  2337.         @45                     <- might take a while
  2338.         @30                     <- wait for another (blank) line
  2339.         +NOS                    <- now come the telnet sign-on message
  2340.         @30                     <- wait for this
  2341.         @30                     <- after this is a blank line, wait for it
  2342.         .w0rli                  <- now we get 'login:' and "Password:" prompts,
  2343.         .whomever               <- but they have <cr>'s, so just send them
  2344.         sysop                   <- we're there, forward these areas.
  2345.         allor
  2346.         wg7j
  2347.         pnw
  2348.         nos
  2349.         ------
  2350.  
  2351.  
  2352.  
  2353.         Appendix F, /spool/forward.bbs, details the forwarding my system
  2354. will attempt. I don't care when forwarding occurs, so none of the first
  2355. line entries have time fields (lines 1,10 and 19). Lines 2,11 and 20
  2356. show how I attempt to connect to the remote bbs. All go over netrom
  2357. (my only way out :-( ), but for WA7SHP I need to downlink from a distant
  2358. node (salem) to his bbs (lines 21,22 and 23)
  2359. The areas I forward are mostly regional bulletins, nts traffic,
  2360. and personal mail (as shown earlier, the north and south entries)
  2361. I don't forward any of amsat,allusa,allusw because I don't want to
  2362. clutter an already loaded system; the surrounding area bbs's get these
  2363. things to each other just fine without my 'interference :-)'
  2364.  
  2365.  
  2366. /ONEXIT.NOS
  2367. -----------
  2368.         Appendix G, /onexit.nos, simply is a set of valid NOS.EXE
  2369. commands to be executed before returning to DOS. In line 1,
  2370. I tell the netrom system one last time I am there (to try to keep
  2371. my route alive while I am gone). Next I save the netrom routes
  2372. to disk for later retrieval at startup via the netrom load command.
  2373.  
  2374.  
  2375.  
  2376.  
  2377. GATEWAYING BETWEEN SMTP AND AX.25 BBS STYLE MAIL
  2378. ------------------------------------------------
  2379.         If your system is serving both the 'regular' packet
  2380. community (ie. people with just tnc's) as well as the tcp/ip-ers
  2381. with mail forwarding, here are a few hints on how one could set things
  2382. up.
  2383.         The following assumes that the host 'ka7ehk.ampr.org'
  2384. sends mail to 'w0rli@w0rli.or.usa.na', and uses 'wg7j.ampr.org' as the
  2385. mail gateway that talks to the bbs-network. wg7j's bbs style H-Address
  2386. is WG7J.OR.USA.NA . The rewrite file in appendix E is also used as an
  2387. example of how the gateway system handles mail.
  2388.  
  2389.         NOS.EXE is fully capable of exchanging mail from SMTP world to
  2390. BBS world and vice versa. Thus it can act as the gateway between the two
  2391. different systems. The key to understanding how this works is to realize
  2392. that the smtp-server ALSO READS REWRITE when mail comes in that way !
  2393. (as a matter of fact, even mailbox mail goes through the smtp-server !)
  2394. You should also (again) check the diagram in mailbox.txt...
  2395.  
  2396. MAIL FROM SMTP  -->  AX.25.
  2397. --------------------------
  2398.  
  2399. When sending mail via smtp that eventually should end up in the bbs
  2400. network, the meaning of the previous is as follows:
  2401.         When ka7ehk.ampr.org connects to wg7j.ampr.org and sends the
  2402. address of the mail, the smtp-server will deposit this in the 'w0rli.txt'
  2403. mailbox (rewrite line 24). Next time the forward timer ticks, forwarding
  2404. will be attempted, and you're in business !
  2405.  
  2406. How does one set this up on the user side ?
  2407.         The easiest way to set this up for the user is to tell the user
  2408. to use your system as the mail gateway ! The 'smtp gateway' commands
  2409. sets a hostname that ALL UNKNOWN MAIL will be sent to. Unknown mail is
  2410. mail to addresses that cannot be found in /domain.txt (or from the domain
  2411. name server if configured). Since most bbs style addresses will not be in
  2412. there, this means that those mails will go to the gateway !
  2413. (remember: tcpip hostnames most often end in ampr.org, whereas bbs style
  2414. H-Address are something like WG7J.OR.USA.NA. The latter thus will not be found
  2415. in /domain.txt!)
  2416. Thus a simple
  2417.         'smtp gateway yourhost'
  2418. where yourhost is the gateway's name (as in domain.txt) or ip-address,
  2419. suffices !
  2420.  
  2421. There is another way a user can send the above mail. However this a bit more
  2422. involved and is not as easy for users. It involves a little more of an
  2423. understanding of the ways smtp addressing works. It also requires an
  2424. additional line in rewrite ! It simply given for completeness.
  2425.         User's can manually address mail to a gateway, with the to-address
  2426. format 'user%hostname@gateway'.
  2427. Eg. the above mail could be addressed as 'w0rli%w0rli.or.usa.na@wg7j.ampr.org'
  2428.  
  2429. In order to handle these sorts of mail address,es you should add a line similar
  2430. to '*%*@wg7j* $1@$2 r'  to your rewrite file. Just replace wg7j with the
  2431. your system's name. This line will rewrite all %-addresses into a regular
  2432. address (ie. the above becomes 'w0rli@w0rli.or.usa.na'), and then rescan
  2433. with the new address to find more rewrite rules. Thus the mail ends up in
  2434. the 'w0rli.txt' mailbox again.
  2435.  
  2436. Then ka7ehk.ampr.org would again deliver the mail to wg7j.ampr.org,
  2437. and the process would be identical to described above.
  2438.  
  2439.  
  2440. MAIL FROM AX.25  -->  SMTP
  2441. --------------------------
  2442.  
  2443.         Let's use as an example a reply from w0rli to ka7ehk.
  2444. Since bbs's use the last R: header as the return system, a reply mail
  2445. will be sent to my system as 'S KA7EHK@WG7J.OR.USA.NA < W0RLI' ,
  2446. or as 'S KA7EHK < W0RLI' depending on the pbbs software.
  2447. In order to deal with the first case, rewrite line 22 is needed.
  2448. This rewrites the address into simply 'ka7ehk'
  2449.  
  2450. Next, you as sysop have 3 options for delivery of the message:
  2451.  
  2452. 1 - ka7ehk has to login to your system in order to read his mail.
  2453.     Simply do nothing !
  2454.  
  2455. 2 - you want to forward mail to ka7ehk on his home system using smtp
  2456.     You need to add an alias to handle this. The line
  2457.     'ka7ehk ka7ehk@ka7ehk.ampr.org' will do the job.
  2458.  
  2459.     This might cause lots of attempts for smtp if ka7ehk's system isn't
  2460.     on the air a lots (ie. like most users!)
  2461.     Better then is:
  2462.  
  2463. 3 - Let ka7ehk automatically get his mail with POP each time he turns
  2464.     his system on. The gateway sysop and the user both need to configure
  2465.     this appropriately. See nos_1229.man for more details.
  2466.  
  2467.  
  2468. POP SERVICES IN NOS
  2469. -------------------
  2470.         The following is also contributed by Doug Cromptom, WA3DSP:
  2471.  
  2472.                       How to use POP in NOS
  2473.                       ---------------------
  2474.  
  2475. The HOST should establish a 'POPUSERS.'  file in root with the following
  2476. format:
  2477.  
  2478. username:password:
  2479. username:password:
  2480. etc.
  2481.  
  2482. There should be an entry for each user of your POP system. We generally
  2483. use call letters for both entries.  I.E.   wa3dsp:wa3dsp:
  2484.  
  2485.  
  2486. The following applies to the old NOS POP2 server/client prior to WG7J
  2487. 1.02
  2488.                              -------------
  2489.  
  2490. The HOST must also start the pop server  'start pop' which should go in
  2491. your NOS autoexec.
  2492.  
  2493.  
  2494. Each USER must add the following lines to there autoexec:
  2495.  
  2496. 'pop mailbox CALL'
  2497.  
  2498.                       Where CALL is the name of the mailbox on the host
  2499.                       to retrieve mail from. The /spool/mail/CALL.txt file.
  2500.                       Usually the users call.
  2501.  
  2502. 'pop mailhost hostname'
  2503.  
  2504.                       This specifies what host to pop from.
  2505.                       I.E. 'pop mailhost wa3dsp.ampr.org'
  2506.  
  2507. 'pop userdata user password'
  2508.  
  2509.                       This data should match the data in the
  2510.                       hosts /popuser file.
  2511.                       I.E. 'pop userdata wa3dsp wa3dsp'
  2512.  
  2513. 'pop timer 3600'
  2514.  
  2515.                       For stations that are on for extended periods
  2516.                       and receive there mail via pop from a mailhost
  2517.                       this timer must be set to interrogate the host
  2518.                       on a regular basis. Alternatively they could
  2519.                       do a 'pop kick' to check for mail. Time should
  2520.                       be set to probably no less than 1/2 hour on a
  2521.                       radio circuit.
  2522.  
  2523. 'pop kick'
  2524.  
  2525.                       This should be entered at the end of your
  2526.                       autoexec to check for mail from your mailhost
  2527.                       at startup.
  2528.  
  2529. So the autoexec entries would look like this for USER w3iwi...
  2530.  
  2531. pop mailbox w3iwi
  2532. pop mailhost wa3dsp.ampr.org
  2533. pop userdata w3iwi w3iwi
  2534. pop timer 3600
  2535. pop kick
  2536.  
  2537. and HOST wa3dsp's autoexec...
  2538.  
  2539. start pop
  2540.  
  2541. HOST wa3dsp's popusers. in root....
  2542.  
  2543. w3iwi:w3iwi:
  2544.  
  2545.  
  2546.            For NOS POP2/3 server client WG7J 1.02 and later.
  2547.                             ------------
  2548.  
  2549. The method of entering client pop server information has been changed!!
  2550. All information is added on one line with the 'pop addserver' command.
  2551.  
  2552. It has the following syntax:
  2553.  
  2554. pop add <mailserver> <seconds|time> <protocol> <mailbox> <username> <password>
  2555.  
  2556. Using the above old version example it would be entered like this:
  2557.  
  2558. pop add wa3dsp.ampr.org 3600 pop2 w3iwi w3iwi w3iwi
  2559.  
  2560. This is assuming POP2 protocol. It is advisable to use POP3 and if your
  2561. server supported it the POP2 would be replaced with POP3. NOS can be
  2562. compiled to include any combination of POP2/3 server client. If one
  2563. protocol was not supported in your compile it would not be allowed in
  2564. the command. Refer to the old version above for a definition of the
  2565. fields.
  2566.  
  2567. Since multiple servers can be defined using the 'pop add' command the
  2568. 'pop kick' command now takes the form 'pop kick <server>' or in the
  2569. above example:
  2570.  
  2571. pop kick wa3dsp
  2572.  
  2573. The 'pop add' and 'pop kick commands are the only ones needed in the
  2574. autoexec file to initialize pop. 'pop list' will show the current
  2575. defined servers.
  2576.  
  2577. The server must start pop. Since both pop2 and pop3 servers can now be
  2578. present the appropriate command are:
  2579.  
  2580. start pop2
  2581. start pop3
  2582.  
  2583.                         --------------------
  2584.  
  2585. A few other points...
  2586.  
  2587. If a pop users wants mail to be delivered to the host for them to pick
  2588. up via POP they should enter a 'reply to' field in BM.RC to direct
  2589. mail to the host and not back to them.
  2590.  
  2591. POP is a very good service for Amateur Radio. It is especially good
  2592. when a flood of messages are sent out to all users. This is a condition
  2593. that often causes crashes on memory marginal systems using SMTP. Also
  2594. alot of unnecessary traffic is sent out to stations that are not on the
  2595. air. With POP the user asks for and gets mail. This is naturally a random
  2596. operation. Lowering channel congestion and NOS memory usage.
  2597.  
  2598. Mail that is POP'ed from the host is deleted from the /spool/mail
  2599. directory upon successful transfer. The USER is notified that new
  2600. mail has arrived at the completion of the entire transfer.
  2601.  
  2602. One drawback that I notice with POP is that the messages (many could
  2603. build up) for a user are sent as a group. If the circuit fails with
  2604. a hard error halfway thru a POP xfer of a message group, no messages
  2605. are saved at the user end, even though some got thru. It is an all
  2606. or none with POP. This reminds me of the stupidity of BBS's in this
  2607. regard. Hopefully users will not let messages build up. I have some
  2608. users who let the mail build up to 30 or 40K over a few weeks.
  2609.  
  2610.  
  2611.  
  2612.  
  2613. EPILOGUE.
  2614. --------
  2615.  
  2616.     I hope all this proves helpful for those interested in setting up
  2617. JNOS in a mixed environment...
  2618.  
  2619.         73 and happy packeteering,
  2620.  
  2621.         Johan
  2622.  
  2623.  
  2624.  
  2625. /*************************************************************************/
  2626.  
  2627. APPENDIX A: /autoexec.nos
  2628.  
  2629. me ibufsize 400
  2630. me nibufs 20
  2631. watchdog yes
  2632. mem debug on
  2633.  
  2634. ax25 mycall wg7j
  2635. hostname wg7j
  2636. ip address 44.26.1.20
  2637.  
  2638. #AX.25 SETUP
  2639. #use (UI) frames for ip over ax.25 !!!!!
  2640. ax25 version 2
  2641. ax25 maxframe 1
  2642. ax25 retry 5
  2643. ax25 window 1024
  2644. ax25 irtt 4500
  2645. ax25 timer linear
  2646. ax25 t3 0
  2647. ax25 t4 600
  2648. ax25 bci 600
  2649. ax25 bct "CRVBBS in Corvallis, run by Johan, WG7J. (TCP/IP -> 44.26.0.80)"
  2650.  
  2651. #com3 = kiss to home.wg7j
  2652. attach asy 0x3f8 4 ax25 sysop 1536 1024 9600
  2653. ifconfig sysop linkaddress bbs
  2654. ifconfig sysop descr "to remote sysop PC"
  2655.  
  2656. #attach an SCC card at IRQ 4
  2657. #init it first
  2658. attach scc 2 init 150 4 2 0 1 168 7 p4915200
  2659. attach scc 0 ax25 2m 256 d1200 350
  2660.  
  2661. ifc 2m netm 0xffffff00
  2662. ifc 2m broad 44.26.1.0
  2663. ifc 2m descr "SCC port 1 on 144.92 MHz"
  2664.  
  2665. #active beacons and mail beacons
  2666. ax25 bcport 2m
  2667. mbox mport 2m
  2668. ax25 digipeat 2m
  2669.  
  2670. #KISS setup to TNC
  2671. #tx-delay (300 ms)
  2672. #param 2m 1 30
  2673. #persistence
  2674. #param 2m 2 63
  2675. #slot-time (10ms)
  2676. #param 2m 3 16
  2677. #tx-tail (50 ms)
  2678. #param 2m 4 5
  2679. #half duplex channel !
  2680. #param 2m 5 0
  2681.  
  2682. #some routes for wormhole fowarding
  2683. ax25 route add k9iu-13 2m wg7j-13
  2684. ax25 route add ke7kd 2m wg7j-14 n8khn-2
  2685.  
  2686. #NET/ROM SETUP
  2687. #attach pseudo netrom interface
  2688. attach netrom
  2689. netrom alias crvbbs
  2690. netrom interface 2m 192
  2691. netrom interface sysop 224
  2692. netrom retries 5
  2693. netrom timer linear
  2694. netrom load
  2695. netrom hidden no
  2696.  
  2697. ip ttl 25
  2698. tcp mss 432
  2699. tcp window 864
  2700. tcp timer linear
  2701.  
  2702. #add the ip routes
  2703. route add default 2m 44.26.1.16
  2704. #remote sysop pc
  2705. route add 44.26.1.19 sysop
  2706. #add w0lri over netrom
  2707. route add 44.116/16 netrom w0rli.ampr.org
  2708. arp add 44.116.0.70 netrom w0rli-3
  2709.  
  2710. domain suffix ampr.org.
  2711. domain translate off
  2712.  
  2713. smtp quiet yes
  2714. smtp mode route
  2715. smtp batch on
  2716. smtp gateway 44.26.1.16
  2717.  
  2718. log \spool\net.log
  2719.  
  2720. ##ready to start all servers now start smtp
  2721. ##turn on the bbs for ax25, netrom and telnet connects
  2722. start ax25
  2723. start netrom
  2724. start telnet
  2725. start ftp
  2726. start smtp
  2727. remote -s wg7jjj
  2728. start remote
  2729. start finger
  2730. attend off
  2731.  
  2732. mbox attend off
  2733. #forward every hour
  2734. mb timer 3600
  2735. at 10 "start forward"
  2736. #'mail for' beacon every half hour
  2737. mb mailfor exclude indy nevada w0rli n7dxt wa7shp sysop check north south nts
  2738. mb mailfor 1800
  2739. mb new on
  2740. mb sendquery on
  2741.  
  2742. #max 150 messages per group
  2743. mb max 150
  2744. mb motd "'?' or 'h command` for help; 'd commands.txt' for command cheat sheet...\nSend local messages to 'users' .Questions to sysop or wg7j...\nEnjoy."
  2745. mb jumpstart exclude kf7dq-1 wg7j-3 wg7j-1
  2746. mb jumpstart on
  2747. mb haddress or.usa.na
  2748. mb qth "Corvallis, OR"
  2749. mb zip 97330
  2750. mb smtp no
  2751. bulletin check yes
  2752. bulletin date yes
  2753. bulletin return yes
  2754. bulletin loophold 2
  2755.  
  2756. #set some timeout values
  2757. ftptdisc 600
  2758. mbox tdisc 600
  2759. netrom tdisc 600
  2760.  
  2761. #start some cycles at a certain time
  2762. # expire messages each night at 1pm (i'm using utc time)
  2763. at 0900 "expire 24"
  2764. #delete old bid's every night at 2pm, limit is 21 days
  2765. at 1000 "oldbid 24 21"
  2766.  
  2767. ##finally tell the netrom network we're there !!
  2768. netrom bcnodes 2m
  2769. netrom bcnodes 2m
  2770.  
  2771. #trace 2m 111
  2772.  
  2773. #arp for my home.wg7j system
  2774. arp publish 44.26.1.19 ax25 wg7j 2m
  2775.  
  2776.  
  2777. APPENDIX B: /ftpusers
  2778.  
  2779. 1:  wg7j password / 16511
  2780. 2:  johan password / 16511
  2781. 3:  ka7ehk password / 16511
  2782. 4:  n7dxt password /public 8195
  2783. 5:  w0rli password /public 8195
  2784. 6:  wa7shp password /public 8195
  2785. 7:  w7vtw password /public 8195
  2786. 8:  univperm * /public 16403
  2787. 9:  #sysops: 16511
  2788. 10: #regular users: 16403
  2789. 11: #bbs's: 8195
  2790.  
  2791.  
  2792. APPENDIX C: /alias
  2793.  
  2794. 1:  johan wg7j
  2795. 2:  wa7tas wa7tas@wa7tas.ampr.org
  2796. 3:  k7mkg k7mkg@k7mkg.ampr.org
  2797.  
  2798.  
  2799. APPENDIX D: /spool/areas
  2800.  
  2801. 1:  allor     -        All of Oregon stuff
  2802. 2:  allusa    -        ALLUSA bulletins
  2803. 3:  amsat     -        AMSAT bulletins
  2804. 4:  anonymous -        info for new/anonymous users
  2805. 5:  arrl      -        ARRL bulletins
  2806. 6:  help      -        help about this system
  2807. 7:  ntslocal  -        Corvallis area NTS traffic
  2808. 8:  osuarc    -        Oregon State University ARC stuff
  2809. 9:  pnw       -        Pacific North West stuff
  2810. 10: sale      -        'for sale' bulletins
  2811. 11: tcpip     -        TCP/IP related stuff
  2812.  
  2813.  
  2814. APPENDIX E: /spool/rewrite
  2815.  
  2816. *@*.edu $1@$2.edu
  2817. *@*.com $1@$2.com
  2818. *@*.gov $1@$2.gov
  2819. *@*.org $1@$2.org
  2820. *%*@wg7j* $1@$2 r
  2821. astro@* refuse
  2822. *@dist9 refuse
  2823. *@allin refuse
  2824. *@okipn refuse
  2825. *@allil* refuse
  2826. msys@* refuse
  2827. fbb@* refuse
  2828. mods@* refuse
  2829. *@ww refuse
  2830. n8hkn@* nevada
  2831. ke7kd@* nevada
  2832. sysop wg7j
  2833. sysop@wg7j* wg7j
  2834. sysop@* sysop
  2835. tcpip@* tcpip
  2836. wanted@* wanted
  2837. want@* wanted
  2838. need@* wanted
  2839. sale@* sale
  2840. 4sale@* sale
  2841. trade@* sale
  2842. dx@* dx
  2843. humor@* humor
  2844. jokes@* humor
  2845. happy@* humor
  2846. races@* races
  2847. fcc@* fcc
  2848. amsat@* amsat
  2849. arrl@* arrl
  2850. ares@* ares
  2851. swap@* sale
  2852. nasa@* nasa
  2853. *@nasa nasa
  2854. *@amsat amsat
  2855. *@ares* ares
  2856. *@arrl arrl
  2857. *@arl arrl
  2858. *@pnw pnw
  2859. *@allor* allor
  2860. *@allusw allusw
  2861. *@allus* allusa
  2862. *@wg7j* $1
  2863. *@wa7tas* wa7tas
  2864. *@wa7shp* wa7shp
  2865. *@w0rli* w0rli
  2866. *@n7dxt* n7dxt
  2867. *@n7hae* north
  2868. *@n7vyn* north
  2869. *@n7koj* north
  2870. *@n7pwf* north
  2871. *@wa6gfp* north
  2872. *@n7jqk* north
  2873. *@ka7agh* north
  2874. *@kb7dbd* north
  2875. *@wa7ari* wa7shp
  2876. *@k7myu* wa7shp
  2877. *@97321* ntslocal
  2878. *@9733* ntslocal
  2879. *@97370* ntslocal
  2880. *@97389* ntslocal
  2881. *@98* north
  2882. *@970* north
  2883. *@971* north
  2884. *@972* north
  2885. *@9730* wa7shp
  2886. *@ntswa* north
  2887. *@nts* nts
  2888. *@*.or* south
  2889. *@*.ca* south
  2890. *@*.az* south
  2891. *@*.tx* south
  2892. *@*.nv* nevada
  2893. *@*.in* indy
  2894. *@*.oh* indy
  2895. *@*.mi* indy
  2896. *@*.ky* indy
  2897. *@*.tn* indy
  2898. *@*.eu north
  2899. *@*.oc south
  2900. *@*.as north
  2901. *@* check
  2902. *@*.usa north
  2903. *@*.noam north
  2904. *@*.na north
  2905.  
  2906.  
  2907. APPENDIX F: /spool/forward.bbs
  2908.  
  2909. w0rli
  2910. netrom w0rli-2
  2911. w0rli
  2912. north
  2913. south
  2914. allor
  2915. pnw
  2916. tcpip
  2917. arrl
  2918. amsat
  2919. sysop
  2920. allusa
  2921. --------
  2922. n7dxt
  2923. netrom n7dxt
  2924. n7dxt
  2925. south
  2926. nts
  2927. allor
  2928. pnw
  2929. tcpip
  2930. arrl
  2931. amsat
  2932. sysop
  2933. allusa
  2934. --------
  2935. wa7shp
  2936. netrom af7s-1
  2937. .c 1 wa7shp
  2938. wa7shp
  2939. north
  2940. south
  2941. allor
  2942. pnw
  2943. arrl
  2944. amsat
  2945. sysop
  2946. --------
  2947. k9iu 0517
  2948. ax25 2m k9iu-13
  2949. indy
  2950. --------
  2951. ke7kd 0517
  2952. ax25 2m ke7kd
  2953. nevada
  2954. allor
  2955. allusw
  2956. pnw
  2957. ----------
  2958. wg7j
  2959. ax25 sysop wg7j-2
  2960. test
  2961. ----------
  2962.  
  2963. APPENDIX G: /onexit.nos
  2964.  
  2965. net bcn 2m
  2966. netrom save
  2967.  
  2968.