FNOS Frequently Asked Questions Marc Blakely Fidonet: 1:138/146 Internet: lookglas@adrift.harbornet.com http://www.harbornet.com/folks/lookglas GENERAL OVERVIEW FNOS is a MS-DOS based program providing TCP/IP (Transport Control Protocol/Internet Protocol) access to the Internet. It is designed to imitate a UNIX-type TCP/IP NOS (Network Operating System), hence, the xNOS name. xNOS is based on Phil Karn's original code, often refered to as KA9Q. A lot of enhancements of the original KA9Q code have come from the Amateur Radio community, with an off-shoot coming from Demon Internet Services (DIS) in the U.K. Earlier versions (prior to 1.6) of FNOS were based on the DIS code, while version 1.6+ is based on the JNOS version code. FNOS has been adapted to provide scripted, automated Fidonet mail and file transfers via FTP, using a PPP (Point to Point Protocol) dialup modem connection to a local Internet host or ISP (Internet Service Provider). While the source code allows for numerous Internet and amateur radio specific modules to be compiled in, FNOS is compiled with the options primarily needed for Fidonet mail operations. This is done to keep the compiled program size within a limit allowing it to be used as an external program called by a typical Fidonet mailer program. FNOS is a multitasking software, meaning that it can support more than one session at a time, such as a Telnet (similar to a BBS user's comm program) session in one window and an FTP (File Transfer Protocol) session in another window, all using the same built-in TCP/IP stack. While FNOS is primarily designed to be run straight from the DOS prompt, it has been successfully used in a DOS window under various multitaskers: DesqView, Windows 3.x, Win95, and OS/2. In these instances, it means that a multitasker (FNOS) is running under another multitasker! The actual connection to the TCP/IP network is done via 'attaching an interface'. This interface can be a comm port or other network interface, such as an ethernet card with appropriate driver. There can also be more than one interface, with each interface assigned specific routing. FNOS is primarily used with only one asy-type (comm port) interface with all IP routing defaulting to that interface. 1. My ISP uses PAP (Password Authentication Protocol) for login verification instead of prompting for a user name and password as in the sample dialer script. Add/uncomment/edit the 'ppp pp0 pap user ' line in the autoexec.scr file prior to the dialer line. This activates the PAP function and allows Fnos to supply them when your host requests them. It should be automatic. Fnos will open up another session window and send the username and password automatically. You should see a message like 'login successful' before the window closes. Here's a sample .dil script for PAP-type login: control down wait 2000 control up wait 2000 send "atz\r" wait 5000 "OK" wait 4000 send "atdtXXXXXXX\r" wait 65000 "CONNECT" exit Note that it exits the dialer right after getting the connect response from the modem. (My ISP sends out a phony login: prompt, but it's to be ignored). Sample autoexec.scr script file: ppp pp0 pap dialer pp0 pap.dil ... (additional commands here) ... 2. How can I tell if the login with my ISP is successful? Comment out anything in the autoexec.scr file after the dialer line. After the dialer ends (and the PAP session screen if PAP is used) and the FNOS> prompt appears, enter 'ip address'. This will display the local IP address as negotiated with the host. This should read something other than 0.0.0.0, if the PPP negotiation is successful. Note: Versions prior to 1.7 - If the ppp negotiation is unsuccessful, then subsequent sessions, ie. an FTP session, will hang, as there is no connection to route traffic through. This can also happen if the ftp session starts before the negotiation is complete. Versions 1.7+ - The FTP, SMTP, POP3, & NNTP clients have added code which prevents them from continuing until the PPP negotiation completes and the local ip address is assigned. 3. How do I switch between sessions? The command session (which is always session 0) is reached by using the F10 key. Other sessions windows are toggled by using the same numbered F-key, ie. session 1 = F1, session 2 = F2, etc. To list all active sessions, switch to the command session window and enter 'session' without any parameters. 4. How can I access the help files from within FNOS? Set up a subdirectory under the \FNOS parent directory called HELP. Extract the help.zip archive into the \FNOS\HELP subdirectory. From the command session prompt enter 'help [topic]'. This will display the help file for that topic one screen at a time. The space bar will advance a full screen down, while any other key will advance one line at a time until the end of the help file is reached. 5. In FTNALIAS.LST, what's apparently listed is the uplink. If so, does that mean that the uplink *has* to be a Fidonet node number? No. The alias name can be literally, anything. It's there for convienience only, as the alias name is what gets used in the log file and on the FTP status line. 6. Whose address comes after "domain addserver"? The address your ISP has configured for DNS (Domain Name Service) requests. This is where FNOS sends it's requests for unknown address resolution. It keeps a local copy of the address in domain.txt, once determined. NOTE: An ending period is required for proper operation, ie., if the DNS name is 'somewhere.someplace.com' then there should be a period after the '.com' : 'somewhere.someplace.com.' 7. Whose address comes after "route add default pp0"? None. It means to route all outbound traffic to the interface named 'pp0', the dialup PPP connection. Since most of us only use a single part time PPP connection, this means all outbound traffic gets routed to the pp0 interface for additional routing by the local ISP. 8. FNOS doesn't exit after the ftp session ends. Use 'exit' as the last command in the ftp script instead of 'quit'. Note: 'exit' used here is the same 'exit' as used in the command session, meaning it will shut everything down (finished or not) and exit back to DOS. It WILL KILL any other session which may be active at the time. Do NOT run other sessions, such as POP3, SMTP, or NNTP, at the same time with the 'exit' command as part of the FTP script. 9. What does "too many sessions" mean? It means there's either not enough memory available to create a new session, ie. the dialer session or ftp session, or that there are too many sessions already active. The Lite version has a limit of 5 concurrent sessions, while the regular version has a limit of 10. If low on memory, (the right hand number on the top status line) is less than 16K, then try to increase the DOS memory available prior to starting Fnos. If too many sessions, close one or more. (It's doubtful that anyone would need more than the built in limits, but then, I'm not you . . . ;-) 10. Where to use cwait vs. wait.. For the most part, the two are similar, except that the 'cwait' command allows for failure strings to indicate a failed attempt, rather than waiting for the timeout to take effect, ie., if you dial a number and get a "BUSY" response right away, why wait until the timer expires to determine that there was no "CONNECT" received? It means that multiple input responses can be used to determine the success or failure of an action, rather than waiting for just a success response. The greatest value lies when dialing out, as there are multiple modem responses (BUSY, NO CARRIER, etc.) that would suggest that any further wait time is futile. ;-) 11. What options are compiled into FNOS? Type 'info' at the command session prompt. This will list the available modules compiled into any particular version: fnos> info FNOS 1.6b9 (8088), compiled Apr 9 1997 19:24:09 by BC 0452 containing: TCP Servers: None ! TCP Clients: SMTP FINGER FTP TELNET TTYLINK NNTP POP3 TIME with LZW compression for TCP sockets Internet Services: IP Encapsulation Hopcheck IP path tracing 5 interrupt buffers of 2048 bytes Generic async (8250/16450/16550) interface driver Async IP drivers: Point-to-Point (PPP) Serial Line (SLIP) with modem dialer for SLIP/PPP with Van Jacobson compression for PPP/SLIP FTP Software's PACKET driver interface Generic ethernet driver Hardware interface packet tracing code 12. How does one setup an alternate set of files to get FNOS to function separate from my calls to ... Start Fnos using a different startup config file. (If none is specified on the command line, Fnos defaults to using autoexec.nos as the startup configuration file name.) This can be overridden on the command line by supplying a different startup file name. Example: fnos -dc:\fnos alt1.nos The above tells Fnos to use "c:\fnos" as it's 'home' directory and to use "alt1.nos" as the startup config file, overriding the default of "autoexec.nos". 13. What are the command line options to FNOS? Here's a cut and paste from the JNOS documentation: === Cut === COMMAND LINE OPTIONS: JNOS can be started with a number of command line options. All but one start with a '-'. Options should be separated by tabs or spaces. The option and the option argument (if any) should be contiguous (ie NO spaces). -b : Use BIOS for the console i/o (instead of direct writes to VRAM) -c# : set the number of columns on the screen to #. -drootdir : set the root dir for configuration file path. This is overwritten by the files included in the -f config file. -e : pause after each error line in autoexec.nos. -fnos.cfg : set JNOS config file names as indicated in the file 'nos.cfg'. This overrides the -d option. -gn : set trace colors, when tracing to console (ANSI.SYS needed): n=0 => none (default). n=1 => tailor to grey-scale monitor n=2 => tailor to color monitor -l : do not remove *.lck files in the mail and news subdirectories (default is to remove those *.lck files!) -mn : set the default screen swap mode. n = 0 : Use EMS (if compiled in and EMS is available). (Default if ems is available) n = 1 : Use XMS(if compiled in and XMS is available). (Default if xms is available and ems is not available) n = 2 : Use memory. (default if no ems/xms available) n = 3 : Use a temporary disk file. -n : no trace session. -r# : set the number of rows on the screen to #. -t : trace the autoexec.nos file. You will be asked before each if you want to execute it. 'y' accepts, anything else skips the line. -u# : set the number of status lines, valid values are 0-3 -v : verbose. Print line from autoexec.bat before parsing. -wf+b : set the foreground and background color for the system status -xf+b : set the foreground and background color for the session status -yf+b : set the foreground and background color for the 'main' window -zf+b : set the foreground and background color for the 'split' window autoexec.new: Name of the startup file. If not given, \autoexec.nos (or as indicated with the -fnos.cfg option) is used. === Cut === Some of the above aren't available in Fnos as the options require modules that are not compiled in due to program size. The screen swapping to EMS or XMS, for instance. 14. The carrier remains high after the session completes. FNOS exits ok but will not drop carrier. This seems to be dependent upon how the individual modem is set to respond to dropping the dtr signal from the system to the modem. It should be set to have the modem reset itself (ie, drop carrier and reinit) when the dtr signal from the system goes bye-bye, as in the case when FNOS exits. 1) Take a look at the &D setting for your modem. Most Hayes compatible modems need this to be set at 2, ie. &D2. Either set and store this in the modem's nvram or set it in the init string. It works here on both an extrnal USR V.everything and an internal ZOOM v.34. 2) Use the 'onexit.nos' file to execute modem commands prior to Fnos exitting. See the sample file in the release archive, Fnos.His, and the help file 'onexit'. 3) Another option is to use the XU utility found in the X00 fossil driver package from Ray Gwinn in the batch file running FNOS: xu dtr:0:off Thu 02-12-1998 20:39:35 MB