FX UUCICO Version 1.0 FX UUCICO is Copyright (c) 1993, 1994 by Jorge Cwik. All rights reserved. Version 1.0 TABLE OF CONTENTS I. INTRODUCTION II. INSTALLATION Updating from previous FX releases Installing from scratch Replacing Waffle's Uucico III. WAFFLE ISSUES IV. RUNNING FX UUCICO Dial in mode Answer mode Aborting the connection V. FEATURES Internal 'COMM' driver FOSSIL interface File restart Execution requests Grades File size negotiation Status bar Logging VI. PROTOCOLS Protocol 'f' Protocol 'y' Protocol 'g' Protocol 'G' Protocol 'v' VII. CONFIGURATION Command line parameters STATIC configuration file 'systems' file 'dialers' file 'scripts' file scripts syntax 'permits' file Time field format (see also the file FXCONFIG.REF) VIII. ASSISTANCE IX. LEGAL In the technical guide: I. NETWORKING II. MULTITASKING III. 16550A FIFO UARTS IV. TELEBIT modems V. EXIT LEVELS VI. STATUS files VII. SECURITY VIII. LIMITS AND MEMORY USAGE IX. CUSTOM INTERFACES WITH FX UUCICO I. INTRODUCTION FX UUCICO is a drop-in replacement for Waffle's UUCICO. It's fully compatible with Waffle 1.65, but adds a lot of new features: o Up to 115200 bps, support for 16550A and custom serial ports. o Eliminates most needs for FOSSIL, but it is still supported. o File restart (crash recovery). o Fully networkable, share multiple concurrent instances. o File size negotiation and free space management. o Execution requests. o Status bar, shows progression of file transmissions. o A very robust and efficient protocol 'g' implementation. o Smart protocol 'g', with variable packets up to 4096 bytes. o A new, extremely fast protocol 'y' for high-speed modems. o Protocol 'f' for X.25 or other 7-bits lines. o Protocol 'G' for SVR4 systems, and protocol 'v' o Full support for incoming and outgoing grades. o Support for comprehensive statistics. o Improved security. o Many new configurations options, and permits variables. o Simpler configuration o Interface to Intelligent Digiboards and non-standard Fossil drivers. In all UUCP packages UUCICO is the program who manages the external communications and file transfers. It's similar to Terminal Programs (like Telix), except that it performs completely automatically. Because modems (even the newest) are very slow in computers terms, and because long distance connections are very expensive, UUCICO performance is critical. II. INSTALLATION. --- Updating from previous FX releases --- If you are updating from FX 0.4 you have very little to do but replace the executable with the new one (backup the old one, first). Read the WHATSNEW files and browse the configuration reference for the new options. Notes: See the configuration chapter. FX supports a new configuration model, much simple than previous versions. --- Installing from scratch --- If you are installing Uucico for the first time you need to create the necessary configuration files. Those that interface FX with a third party package may have special instructions provided with that package. The minimal installation requires placing FXUUCP.CFG along with the executable in a single directory, the easiest way is to copy the samples and make the appropriate modifications. --- Replacing Waffle's Uucico --- 1) Copy your current UUCICO.EXE to UUCICO.OLD. This is to make sure that you don't overwrite your original copy. We strongly urge you to take the time to make a copy! 2) Copy the FX UUCICO.EXE into your waffle\bin directory. Because it's designed as a replacement, FX UUCICO will perform perfectly well without any changes to your WAFFLE environment. You may want to make the first tests without changing any parameters. FX UUCICO should work right out of the box. Deferring the fine-tuning settings, will help you in finding any particular problem. The only recommended changes (not mandatory) are these: o Add "fx.gpktsize: 1024" to your configuration file, keep windows setting at seven. (NOTE: _only_ if the system you are connecting supports this size) o Don't use a FOSSIL driver, unless you really need it. o If you have a high-speed modem (over 2400), configure it to use hardware flow control (CTS/RTS). o If you have an error-correction modem you may want to use the new 'y' protocol (change your 'systems' entries in the UUCP directory). Currently the 'y' protocol is supported by FX only, but is in the process of being added to other UUCP software. o If you are sharing multiple copies, use "fx.share: true". Examples: In your STATIC file... driver: fossil uu.driver: native uu.windows: 7 fx.gpktsize: 1024 Keep your previous configuration. If the changes are not working restore your old setting and enable each option in turn. Particularly, large packet size may not work when connecting to old uucp implementations. III. WAFFLE ISSUES FX UUCICO is fully compatible with WAFFLE 1.65, we tried very hard to make it as transparent as possible. Most messages and logs are exactly the same, although 'debugging' messages may differ. There is a potential incompatibility in the waffle/admin/net file. This file logs all connections and reports transmitted packets. Unfortunately there is no indication of the amount in bytes or the packet size. This presents a problem when different packet sizes are used and with protocols that do not use pkts at all. We changed the line format of this file to make it more descriptive. Utility programs that depend on the old/waffle format will probably not work. One of them is NETSUM, there are replacement programs available from our server. A second incompatibility may arise in direct uucp transfers (with the uucp.exe program). The enhanced security features of FX, may deny transfers that Waffle's Uucico considered valid. They represented a serious security hole and we are confident that you agree with our decision. See the permits chapter and 'fx.trusted' for more info. We are very grateful to Tom Dell, author of Waffle, for the open architecture and the vast documentation of Waffle, without which would be impossible to achieve the compatibility provided by FX UUCICO. Mr. Dell can be contacted at dell@vox.darkside.com All references to WAFFLE are for version 1.65. WAFFLE is the Copyrighted property of Darkside Int'l. IV. RUNNING FX UUCICO Uucico is usually run from inside a batch file or directly from the command prompt. There are two different modes of operation, dial-out or master mode, and dial-in or slave mode. The dial-out mode is for placing a call, usually known as polling. This is the default mode and only requires you to specify the sites you want to call with the -s parameter. The -s parameter has three different usage conditions: -s all polls all known hosts -s any polls hosts with queued jobs -s host[,hostlist] polls specified host[s] For every outgoing call, Uucico will run two scripts, the dialer and the login scripts as specified in the 'systems' file. The dialer script usually performs modem initialization and dialing. The login one, will automatically do the necessary procedure for accessing your remote host uucp services. The syntax of the scripts are documented in its own chapter. Dial-in mode receives incoming calls. The -r0 parameter signals Uucico to enter slave mode. Obviously the -r0 and -s parameters are mutually exclusive. The slave mode requires the connection to be previously established, FX will not currently pick up the phone or prompt for login by itself. This task must be performed by waffle.exe or any other frontdoor. In both modes optional parameters may be used. See the configuration chapter. --- Aborting the Connection --- You can interrupt program execution at any time by pressing control^break. Uucico will then close the connection in a clean and orderly fashion. It may take a couple of seconds until the exit procedure is performed. If you press control^break several times, the interrupt module assumes that the software might be locked and aborts immediately. Use this only when you suspect a "hang-up" situation, because the only task performed is to put the modem on-hook. Logs are not updated and internal buffers are not flushed. V. FEATURES. --- Internal 'COMM' driver --- The RS-232 driver has been enhanced to avoid the need of FOSSIL in most cases. It's supports up to 115200 bps, hardware flow control, custom I/O ports addr- esses and IRQs, and automatic detection of 16550A 'fifo' chips. FX fully supports V.FC and V.34 modems at 28,8 Kbps. FIFO operation is controlled by the parameter -z, use -z0 to disable auto detection and FIFO mode. For maximum reliability in multitasking systems use low trigger values. To change the default settings of your serial port, append the new I/O address and IRQ level to the port number. You may specify one or both parameters, the missing one will keep the default value. The syntax is port,address,irq. The address must be in hex. Examples: 1,2F0,5 3,,7 COM2,2E0 4 You may use this syntax in any place that FX reads port devices. Currently they are: 1) 'device' in static 2) The port field in the dialer 3) the -d runtime parameter. Note that when both are set, the port number is actually disregarded. The PC has a de facto standard on the hardware settings of COM1-COM4. Most internal modems and serial cards come configured for those default values. Use ONLY if you know what you are doing, unexpected behavior may result trying to access the wrong hardware. High IRQs (8-15) are supported for 16-bit (or 32-bit) cards. --- FOSSIL interface --- When using a FOSSIL driver you MUST set the receiving buffer size larger than the packet size (/R parameter in the BNU version) or enable 'fx.dblBuffer'. The default of 1024 bytes is not enough for the 'y' protocol. Note that using a FOSSIL driver may usually slow your performance. Most FOSSILs *does not* support bps over 38400. For those that they do, you must lock the speed from the FOSSIL command line. You can still use it (and we recommend you do) for WAFFLE incoming calls (Awaiting Call). It's possible that some systems may experiment an erratic behavior with the internal driver. Some old RS-232 boards, and some internal modems do not have a full compatible UART. In those cases a FOSSIL driver (which may have been tested with these boards) may give better results. Some non-standard FOSSILs don't perform correct buffering. This is usually the case, in drivers for ISDN and smart multiport boards. If you receive a message reporting that the drivers buffers are too small, enable the 'fx.dblBuffer' option. --- DIGIboard interface --- FX Uucico can directly interface with the Digiboard Universal Driver. The digiboard driver is selected with the options 'driver' or 'uu.driver': driver : DIGI or uu.driver : DIGI The port number is specified as with the other drivers. With the 'device' option or the '-d' run time parameter. Note that the port number corresponds to the DOS names, not the digi channels (DOS names start with one, but digi channels start with zero). device: 5 The above line select digi channel _four_, which would normally be COM5. If this sounds confusing, remember that this the same number you probably use with other communication software. The digi universal driver must be loaded. No other software is needed. You cannot set the I/O port or the IRQ number from inside FX, the DIGI setup software should be used for this purpose. FX doesn't need any special para- meters to be set by the DIGI driver. Specifically, DOS/EBIOS support doesn't need to be present (however note, other applications may need it). The line parameters are internally set by FX (bps, mode, flow control, etc). You can't currently specify different drivers for different ports (mixing digiboards with standard serial ports). You would need to use two different configuration files in such cases, the 'include' feature could be helpful for multiple configs. --- File restart --- FX UUCICO supports file transfer restart, compatible with Unix SVR4 and TAYLOR UUCP implementations. This is similar to the crash recovery feature in ZMODEM. You can disable file restart with the new parameter -a. You may need to temporarily disable the crash recovery option when sending a file whose name matches an existing file. If UUCP is used to transfer a file, and the same filename is found in the destination directory, UUCICO will interpret this as a 'recovery' situation, and APPEND to the existing file. --- 'E'xecution request --- FX supports Taylor Uucp 'E'xecution requests. These commands don't need the transmission of 'X.*' files, resulting in a single file transfer per transaction instead of two. Note that some sites running Taylor Uucp will not send 'E' commands. FX UUCICO will _receive_ 'E' requests automatically without any changes, FX UUCP is needed for _sending_ them. The operation is completely transparent to the user, we included this paragraph for informational purposes only. --- Grades --- Grades in UUCP links means 'priorities'. By using different grades you can control which (uucp) jobs are more 'urgent'. Many sites implement this so they can make better use of the system resources. For instance, mail always gets assigned Grade 'A' so that it will be sent/received at all hours. But news may be assigned a Grade of 'B' (or something lower than 'A') so that newsfeeds only happen during sessions which permit 'B' traffic. Regular file sends/receives may be Grade 'C' or lower. All of this allows a site to arrange their traffic so that mail always comes and goes, but newsfeeds only happen at certain times, and file transfers only happen in the wee hours of the morning when system usage is lowest. FX UUCICO has full support for grades, and it's compatible with the standard used in most UNIX UUCP hosts. Grades consist of a _single_ letter attached to the (uucp) job file name when it is created. They are classified in reverse ASCII collateral order: 'A' is the highest grade and 'z' is the lowest. Grades are case sensitive in Unix systems, but they aren't in DOS because DOS doesn't distinguish cases in filenames. Calls made by UUCICO use the static file parameter 'uu.grade' and/or the -g command line parameter for establishing call grade. Calls received by UUCICO uses the grade requested by the caller. The 'caller' (who's probably paying for the connection) ALWAYS governs the grade. UUCICO will not send jobs that have low grades than specified, and the remote host is supposed to do the same. When no grade is specified, all jobs are transferred. FX UUCICO may also order the jobs by grade priority. See 'fx.sortJobs' If you do not use grades, WAFFLE will create all jobs with decimal digits which have an even higher priority. You can still request the remote host for grade limits. A request for a determined 'grade' will enable transmission of any job with the same *or higher* grade. This is not fully compatible with Waffle's UUCICO usage, but it is with virtually all other UUCP packages. Grades are not very useful if the 'caller' doesn't know the remote host conv- ention. If you implement grades you should tell your users what grades you use for mail and news. UUCICO doesn't generate grades, because it doesn't create jobs. Rmail, rnews, uux and 'uucp' create jobs as specified in the 'mailgrade' and 'newsgrade' configuration. Note that even though it's not documented, most WAFFLE util- ities accept a -g parameter to override the grade generation. --- File size negotiation --- This is an extension to the UUCP protocol introduced by Unix SVR4 and enhanced by TAYLOR UUCP. Each side tell the others the maximum file size it can accept, and the exact size in bytes of files before they are transmitted. File sizes are limited by the Operating System, by the available space on disk and by con- figuration. FX UUCICO can be configured for a maximum file size transmission and to leave a minimum free space on the spool disk. A cooperative party (a remote UUCICO that uses file sizes) is needed for full implementation. There are two parameters in the 'static' file for size usage: 'fx.maxfile' and 'fx.freespace' FX UUCICO will not send files larger that 'maxfile'. It will request the other side to not send files larger than 'maxfile' or that will leave less than 'freespace' on disk. If the remote host doesn't understand file size negotiation, FX UUCICO will still check space on the local site, and reject any files which will leave less than 'freespace' bytes the local system. Caveat: Currently FX UUCICO will not do additional checking, once the trans- mission of a particular file has begun. Future releases will probably check for disk usage 'on the fly.' Note that the remote side who is sending a file may react to the 'denying for size reasons' in different ways. If it's not aware of the 'file size' extensions it may NEVER send that file again (you may have enough space on disk later). This is not a failure of FX UUCICO, but simply a feature missing from the host you communicate with. If 'fx.freespace' is not present in the configuration file, FX UUCICO will not check for free space on disk at all (which might improve performance on some systems). If 'fx.maxfile' is not present the default is 32 Megabytes. --- STATUS BAR --- The switch (-V) enables a status bar at the top of the screen. This bar shows file transfer progress at real time. The exact format of the line changes if Uucico doesn't know the length of the current file. When talking to another FX or Taylor Uucp, FX always knows the length beforehand. To support this status bar, the -V switch changes completely the way it writes to the screen. Normally all screen output goes through DOS, but when the -V switch is on, FX writes directly on the video memory. This has a considerable impact on performance and compatibility. --- Logging --- Logging is essential for large sites administration. FX has several log files and allows you to configure the amount of information written to them. The location of all log files may be specified with 'fx.logdir' FX UUCICO creates two different main log files: 'uucico' has the normal logging, and 'debug' has all the testing messages and info. This has the advantage of _not_ clobbering the normal log with tons of debugging messages. All logged messages are displayed on the screen as well. Each message has a level number assigned, only those with a lower or same level than the current debug level are logged. The debug level may be independently configured for the screen and for the log files. 'uu.debug' and the -x switch, 'uu.visual' and -v, configures the disk and screen debuglevel respectively. Using high settings may substantially AFFECT PERFORMANCE. Because using high debug levels may create a huge log, there is a parm in the 'static' file that overrides the location where the 'debug' file is written. You may want to put your 'debug' file in a ramdisk, because otherwise the speed may slow down considerably when using higher debug levels (8 an up). In addition to those, UUCICO also writes to the 'net' and 'uulog' files. The 'net' log has a single line for each connection reporting total time, bytes and errors. Files transmitted are logged in 'uulog', the 'fx.uulogLevel' option is similar to the debug level one. VI. PROTOCOLS --- Protocol 'f' --- The protocol 'f' is on the original Unix UUCPs. It's designed for 'flow con- trolled, error correction' 7-bits lines. This protocol is very inefficient for binary (8-bits) files. It has _no_ internal flow control or error correction. The only recommended use (and the one it was designed for), is X.25 or other non 8-bit transparent lines. Any error during downloads will result in truncating the file to zero length, this is to avoid invalid data, if file restart is afterwards used. (Note: aborted downloads with ctrl-c/ctrl-break are not truncated). --- Protocol 'y' --- This protocol is new. It's extremely fast and efficient. As the 'f' protocol it was designed for 'error correction' (MNP-V42) modems, but it uses 8-bit bytes. It's probably the fastest protocol, but you need a 'clean' connection between both ends. Most new modems, have hardware error correction. The modems will take care of flow control and error correction. Note that FX UUCICO has no reliable way to ensure that an 'error correction' connection has been established. We recom- mend you 'force' MNP or V42, (see your modem docs). Because its a streaming protocol (no windows), 'y' it's very efficient on HALF duplex connections (USR HST and Telebit's PEP/TurboPEP). --- Protocol 'g' --- FX UUCICO supports the full 'g' implementations with variable sized packets up to 4096 bytes. The error management is very robust and efficient, which should result in a much better throughput in noisy lines. Using a large window size (packet size * max windows), makes a big difference in 'long delay' lines (as in long distance calls), especially in high speed modems. We do recommend you to use a large packet size, and keep windows at 7. Because UUCP protocols are used to transfer everything, not just the files, large packets are inefficient for very small files. This is why variable size packets are used, only the minimum packet size needed will be used for each packet. Unfortunately many old UUCP implementations don't support anything but 3 win- dows, 64 bytes fixed packets. Some ones are so badly designed that they even accept other configurations but crash. The -k parameter governs the max packet size allowed. If the remote host request packet sizes larger than 64, variable size packets will be used too. Only powers of 2 (from 32 to 4096) are valid: 32, 64, 128, 256, 512, 1024, 2048 & 4096. Waffle UUCICO supports 128, 256 and 512, but not variable sizes. We note that many UNIX systems accept 128 (HDB based) and some of them 256. Taylor UUCP supports the whole range. FX UUCICO is fully compatible with it, and will work with any configuration. For better results you should your remote hosts which use Taylor to implement large packet size and enable short packets. You _must_ use the -S switch to connect with Waffle Uucico at any packet size larger than 64 bytes. If you can't connect to a Unix host, reduce the packet size to 64. Many old implementations will behave in very strangely ways, when _trying_ to use large sizes. The default packet timeout was increased to 20 seconds. If you use large pack- ets and receive calls at low speed, check that the parameter 'uu.delay' is not too short. --- Protocol 'G' --- This is a variation of the 'g' protocol used in SVR4 that is known to implement the full range of packet sizes. It _doesn't_ use variable sizes, so it's not recommended for systems which support large packets on the 'g' protocol. --- Protocol 'v' --- Also a variation of the 'g' protocol. Contrary to the 'G' one, short variable packets are always on. VII. CONFIGURATION This section describes all the configuration aspects of FX Uucico. For advanced users the software is highly configurable. Most settings default to reasonable values. At the minimum you must supply the appropriate 'systems' entries, your computer name, device and port speed, everything else is optional. The configuration can be kept as simple as you wish. Don't be overwhelmed by the large amount of options. They are there for customizing the system. You may start with the basic example provided. It is much more easier to browse the examples than reading all the following chapters. There are two models. A basic configuration model appropriate for leaf nodes (which poll a single remote host), and an advanced one for servers and custom installations. BASIC MODE: The basic model requires only one configuration file. It is limited to a single remote system, and currently, with a single phone access number. ADVANCED MODE: Configuration is performed by a master file, and the accessory ones: 'systems', 'dialers', 'scripts' and 'permits'. systems describes the systems you connect with dialers modem initialization and dialing scripts commands for login into the remote host permits permission and other misc settings The advanced model always requires the 'systems' file. In addition, the 'scripts' and 'dialers' files are required for dial-out, and the 'permits' one for dial-in usage. The 'permits' file is only mandatory for dial-in mode, but is optional and will be used in dial-out mode, even with the basic configuration model. The location of the configuration files are not fixed. The main config file, FXUUCP.CFG (also called STATIC), may be pointed by the environment. The location of the other ones is overridden with the 'fx.confdir' option. --- Command line parameters --- Command line parameters cover runtime options that override settings in the configuration file. A few of them, are available only as runtime parameters and cannot be set in the config file. With the exception of -r0 or -s that specify dialin-dialout mode, none of the options are strictly required. The switches follow the syntax of the traditional Unix 'getopt' parsing, with the following rules: o Options _are_ case sensitive o You cannot use '/' as the switch character, only '-' o Multiple options may be folded in a single parameter (-aoV) o Options that require arguments may have, but do not require spaces before the argument: -r 3 o List arguments cannot have spaces in the middle of the list: "-s host1, host2" is incorrect, use "-s host1,host2" Following is a complete list of valid parameters for the current version of FX Uucico. Overrides 'xxx' means that the option takes precedence of the 'xxx' configuration variable. -a Disable file restart (crash recovery) -b bps Baud rate. Sets the DTE speed between the computer and the modem. Overrides 'speed'. Disregarded if locked with 'uu.locked' -d device Device name or port number. May optionally include an I/O address and/or IRQ. See internal driver for the full syntax. Overrides 'device' -g grade Single letter that sets the minimum grade for trans- ferring jobs. Used only in dialout mode. Overrides 'uu.grade' -i Do not check carrier detect. Needed for some direct connections with null-modem cables -k pkt_size Packet size for the 'g' and 'G' protocols. Overrides 'fx.gPktSize'. The packet size have a dramatic influence on the throughput, but values unsupported by your remote host might break the connection. See the 'g' protocol -n hostname Changes the machine name as communicated to the remote host. Overrides 'uucpname' -o Disable enforcement of time restrictions specified in 'systems' and 'permits' -p permit Use the name permit entry. See 'permits' for the full searching algorithm used by FX -r retries Amount of retries before giving up calling each one of the current entries in 'systems'. Overrides 'uu.retries'. -r0 have special meaning and engages dial-in mode. -t seconds Timeout on scripts execution. Overrides 'uu.time' -u login Login or account name verified by the login sequence in dialin mode. This allows FX to verify that the remote host name corresponds to the login name as specified in 'permits' -v debug Debug level for screen output. Overrides 'uu.visual' -w windows Window size for the 'g' and 'G' protocols. Overrides 'uu.windows'. -x debug Debug level for file output. Overrides 'uu.debug' -z trigger Sets trigger levels for 16550A uarts. -z0 disables fifo usage and autodetection. -S Disable variable packets ('g' protocol only). -V Enable status bar and direct video access. --- STATIC configuration file --- The main configuration file was traditionally called 'STATIC', but its _default_ name has been changed to FXUUCP.CFG. Both the name and the location may be altered from the environment. This method allows you to select among different configurations at run time. o FX first search the environment for the variable 'FXUUCP'. o If FXUUCP is not in the environment, the keyword 'WAFFLE' is searched. o If none is found, FX tries to read the file "FXUUCP.CFG" in the same directory where the executable is located. This means that no environment variables are strictly needed. The master configuration file is required in all cases. If all the three steps mentioned above fail, the program will refuse to run. When using the environment, the content must specify a full path _and_ filename. Examples: SET FXUUCP=c:\fxuucp\fxuucp.cfg SET WAFFLE=c:\waffle\system\static There are lot of options that may be set, but again, most have reasonable defaults. We show only the most useful configuration options. Advanced user will find a full reference in the samples provided with this package. o The syntax is: "option : setting". o Case is not sensitive. o Free white space may be added or omitted at both sides of the ':' separator. o The option name must start on the first column. o Unknown keywords are skipped without warning. o A '#' or ';' in the first column is conventionally used as a comment. o Empty lines may be inserted for better readability. o When duplicated keywords are found, the last one takes precedence. o Multiple files may be included. The syntax is the same as with any other option: "include: c:\mydir\config3". There is no limit in the number of files included, they may be nested four levels deep. Some option are booleans, they may be enabled or disabled: yes, true, 1 = enabled no, false, 0 = disabled Mandatory entries that _must_ be present in the configuration file: device Default port number of your serial/modem device. speed Default speed setting of the serial port spool Directory path for queuing outgoing and receiving incoming jobs. One subdirectory will be created for each connecting host. uucpname Your machine name as known by your neighbors. It must match the 'system' entry in your remote host. Important keywords that its only presence affect many other options: waffle The presence of this option, alerts FX that you are running under Waffle and use its directory tree. It specifies the root directory for the whole tree. Non explicitly configured subdirs, will be created under this one. When this keyword is absent, _all_ directories default to the one where the executable is located. Or in other words, a _single_ directory is used by default. The exception is the spool, that must be explicitly configured (but can be configured to be the same one). fx.rSystem This option selects between the basic and the advanced configuration model. The entry specifies all the data needed to access your remote host. The syntax is almost the same as the 'systems' file and is describe in that chapter. If missing, FX will enter the advanced model and will search for the accessory configuration files. Other useful options: uu.debug Debug level, controls the amount of info written to the 'uucico' and 'debug' logs. uu.driver Selects between 'NATIVE' or 'FOSSIL' driver. Overrides 'driver'. uu.locked Locked port speed. Uucico will use always this setting and disregard any other speed options. uu.time Timeout in seconds for scripts executions. uu.visual Debug level, controls the amount of message displayed on the screen. fx.gPktSize Default packet size for the 'g' protocols family fx.share Enables the networking features of FX Uucico. Again, there are more options available, a full reference is provided in the samples. Some parameters, typically the packet size, may be configured in a per systems basis using the 'permits' facility. --- 'systems' file --- The 'systems' file describe the remote hosts you are connecting, usually called neighbors. At least one line must be present for each one. Multi- ple entries for the same host are allowed specifying different dialing numbers or changing other parameters. Multiple entries will result in Uucico using them in sequence when retrying a failed connection. #The format of the 'systems' entry is: # #host time protocol dialer script phone-number login password # laser Any g Hayes.2400 toUnix 123-45678 uulaser secret host Equivalent to your uucpname. Your neighbors must list your name in their 'systems' or equivalent file. time Allowed times for placing outgoing calls. See below for a description of this field. protocol Single letter. Selects the protocol on outgoing calls. dialer Dialer script. This is not a literal script, but the name of a matching entry in the 'dialers' file. script Login script. Same as above. phone Telephone number of your remote host. Will replace \T escapes in scripts. login Your login name that will grant you access on the remote machine. Replaces \L in scripts. password Password for to the login. Replaces \P in scripts. Only the first field (host) is used in incoming calls. The last three entries are optional and normally not needed in direct serial links. The fx.rSystem option, when present in the master config file, replaces 'systems' completely. The syntax is the same, but instead of having fields 'pointing' to entries in the 'dialers' and 'scripts' files, the actual script is embedded: #fx.rSystem: host time protocol script fx.rSystem: laser Any g "" ATD111 CONNECT \m\c in: user word: secret Note that the escapes \T, \L and \P are not usable because they are not defined. Also note that line continuation is currently not supported in the master file, but the line may be quite long. --- 'dialers' file --- # #Dialer-name device speed dialer-script # Hayes.2400 Any default "" AT OK ATD\T CONNECT \m\c dialer Name of the entry. Uucico will search for a matching entry as specified in the 'systems' dialer field. device Overrides default device port in the config file. speed Overrides default speed in the configuration file. script The rest of the line is the actual dialer script. Scrip syntax is described below --- 'scripts' file --- # #script-name login-script # toUnix in:--in: \L ord: \P script-name Name of the entry. login-script The rest of the line is the actual login script. --- scripts syntax --- Scripts are a very powerful tool. Note that because of the script design, uucico is less smart that normal communication programs. It doesn't have a specific command for dialing, nor a fixed sequence of initialization commands. It's all up to you to make it as complex or simple as you wish or need. The dialer script is performed first, and then the login script. The scripts are formed by pairs of send/expect sequences. Send tokens are transmitted to the serial port and then it waits for the expect one. If the expect token doesn't arrive in time, the alternate token if present is sent, otherwise the script fails. The syntax define special escape sequences that are replaced at run time. Tokens that are not alternate are separated by free white space. Empty tokens may be set with a pair of double quotes. "" ATZ OK ATD123-45678 CONNECT Long scripts may be continued in the next line placing free whitespace (one or more spaces and/or tabs) in the continuation line. Using this method there is no formal limit to the script length. gin: \L word: \P service: uucp gateway: direct age: 20 hobbies: soccer others: ENOUGH! A pair of dashes signal an alternate sequence, the token between the dashes is sent, and the script expects a new token after the last dash. in:-BREAK-in: \L In this example, if the in: token is not found, a BREAK is sent and then another in: is expected. Escapes allowed in send tokens only: \ooo Send any byte represented in octal notation. \c Suppress ending carriage return. By default all send tokens have a carriage return appended. \d Delay of two seconds. \E Turn echo check on. Valid for this token _only_. It is very useful for some modems that are slow receiving commands, and tend to loose some characters. \e Turn echo check off. \K Send break signal. This is basically an antique for old Unix dialers. \L Replaced by the login name field in the 'systems' entry. \m Turn carrier checking on. By default carrier detect is not sampled during scripts execution. \M Turn off carrier checking during the rest of the script. \p Delay of approximately half a second. \P Replaced by the current password. \S Replaced by the remote host uucp name. \T Replaced by the phone number field in the 'systems' entry. BREAK Send a break signal P_NONE Sets the comm line to 8 bits no parity. P_EVEN Set the line to 7 bits even parity. Normally valid for the login sequence only. As most protocols will revert back to 8 bits no parity. P_ODD Set the line to 7 bits odd parity. Same note as above. Escapes allowed in both send and expect tokens: \b Backspace \m Carriage return \n Line feed \r Carriage return \s Space \t Tab \\ Backslash A ~ddd sequence at the end of any expect string overrides the default timeout (uu.time and -t): uu.time : 10 "" AT OK ATDP\P CONNECT~60 The OK must arrives ten seconds after the AT command, but the CONNECT message may take up to 60 seconds. --- 'permits' file --- The 'permits' file controls security issues. FX also uses the 'permits' file to change some common parameters between different systems. It doesn't have a fixed field format as the other configuration files. Each entry is started with a name that identifies this permit. Other parameters may be added in any order. The selection of the current permit uses the following algorithm: If -p was received from the command line looks for the named permit, otherwise fails. else (no -p parameter) search for a permit name matching the remote system name. if not found search for the permit named 'default' Note that the -p parameter, forces a specific permit and prevents using the 'default' one. Without a matching permit the connection will not be performed. The 'fx.joinDefPermit' configuration modifies the exact behavior of the 'default' permit and the default values assumed for options not present in the current permit. When 'fx.joinDefPermit' is off (default), the permit named 'default' doesn't affect parameters on other permits. Parameters not specified in the current permit, are considered not present and assume internal defaults. When 'fx.joinDefPermit' is on, the permit named 'default' is always parsed. Parameters not specified in the current permit, inherit settings from the 'default' permit. This is very useful to set global parameters without restricting to a single permit. Each parameter starts with a slash, the '=' character separates the keyword from the value. Spaces or tabs must be present between para- meters. Line continuation is fully supported, and is customary to put each parameter in a single line. Many are relevant for dial-in calls only. /account login name allowed for this permit. This option in conjunction with he -u parameter is the key for a secure system. Dial-in only /speed Minimum connect speed. Dial-in only. /time Allowed dial-in calls. Same syntax as the time field on 'systems'. 'never' disables dial-in for this permit. /system Use 'any' to allow for anonymous uucp. /download Download directory for sending non-job files. It is enforced on remote requests only. Specify a single name only, multiple directories are not supported. It may be an absolute path, or a relative subdir from the 'spool' directory. See 'fx.trusted' All download requests are denied if not present. /upload Upload directory for receiving non-job files. Same notes as 'download'. /fx.trusted Boolean option. Normally FX expands non-job requests under the 'download' or 'upload' settings. The remote user cannot specify an absolute path. It must use the ~/ uucp convention or a simple file name without path. Enabling this option grants full access to the whole file systems. _Every_ request is accepted as long as it is not denied by the operating system. Note, this produces a SERIOUS SECURITY HOLE. Use only for yourself, or really 'trusted' users. /fx.maxtime Maximum time in seconds allowed for the connection. The timer starts counting from the end of the uucp handshake. FX checks for time exceeded between job transactions, it will not abort the current file. The limit is per session only, no daily total is maintained. /fx.maxbytes Maximum total bytes allowed for transmission. The value represent the sum of bytes sent plus received. Same notes as 'fx.maxtime' /fx.gpktsize Overrides the 'g' and 'G' protocols packet size. If you have increased the global packet size, put a 64 value for systems that do not support large packets. Or, leave the global packet size at 64 bytes, and set larger values for specific systems. /uu.windows Overrides the 'g' and 'G' protocols windows size. /fx.shortpkts Overrides the -S flag for enabling/disabling variable packets on the 'g' protocol. Boolean option. Example: laser /account=uulaser /commands=rnews,rmail (not used by Uucico) /download=d:\home\mydir /upload="uploads" /time=any /fx.gpktsize=1024 /fx.maxtime=3600 --- Time field format --- Time fields are present in the 'systems' and 'permits' files. The 'systems' enforces dialout calls and the 'permits' dialin ones. A time description starts with a special abbreviated keyword and may be optionally followed by a numeric range. Multiple entries separated by commas ',' are supported. The time will be validated if it matches anyone of the entries. Keywords: Any Matches any day. Never No match. Disables diaout calls in 'systems' and dialins in 'permits' Evening Matches any time on Saturday and Sunday dd Matches the specific day(s), one or more of: Su, Mo, Tu, We, Th, Fr, Sa, Wk 'Wk' matches any day expect Sunday and Saturday A 'military' time range may be added after the keyword to further restrict the entry. Military times are four decimal digits in the format 'hhmm' SaSu2000-2300 Matches Saturday and Sunday from 20:00 to 23:00 Any1000-1600,Mo Matches any day from 10 Am to 4 Pm, and Monday at any time. VII. ASSISTANCE The author can be contacted at: Jorge Cwik jorge@satlink.net We welcome comments, suggestions and bug reports. I am not directly on the net. I may take some time from the moment you send me a mail, until I receive it (and vice versa). I do answer to every single query, but you may get a faster response reaching our mailing-list. When reporting a bug, please include pertinent clips from your logfiles, or any other documentation which may assist us in resolving the problem. FX maintains a set of servers to support its products. They include a mailing list, mail and ftp servers, etc. See SUPPORT.DOC or write to fx-info@uufx.net to receive the latest update. Thanks to all the testers for their help, and especially to Bob Kirkpatrick and his servers at Dog Ear'd Systems of Spokane, WA. IX. LEGAL FX software is not in the public domain. FX UUCICO is (c) copyright 1993, 1994 by Jorge Cwik. This release (1.0) may be freely distributed by normal shareware channels, as long as they do not charge for it beyond a nominal fee for diskette or transmission, and the original zip file is not modified in any way. Commer- cial packages willing to distribute our software, contact us for licenses and custom releases. FX UUCICO is shareware. You may freely test the software for a period of up to 30 days without paying any registration fee. After that period have elapsed, commercial, corporate, government and non personal users in general, are required to register the software. Registration is optional for personal use in a private environment, and are allowed to keep using the software without payment. The author of FX UUCICO offers this release AS IS, and assumes no liability for any problems incurred through its use. The author reserves all Rights to the software. CONFIGURATION BASIC CONFIGURATION ------------------- # # Sample configuration file for FX Uucico 1.0 (basic mode) # # This is the bare minimum requiered. All the entries are samples and # _must_ be replaced with your real values. # # Copy to FXUUCP.CFG and complete each one of the entries. # Your machine name in the uucp world. uucpname: foo # Where your modem is located. device: com2 # At what speed to talk to your modem speed: 19200 # Where to hold both incoming and outgoing messages spool: c:\spool # Name of your remote uucp host, how to reach it, and how to log in. # # At the minimum, you must replace the 'user' and 'secret' words with your # login name and password. 'rhost' with the uucpname of your remote host, # and the digits after 'ATD' with your access number. fx.rSystem: rhost Any g "" ATD999-0000 CONNECT \m\c in:--in: user word: secret ADVANCED CONFIGURATION ---------------------- # # Sample configuration file for FX Uucico 1.0 (advanced mode) # # This is the bare minimum requiered. All the entries are samples and # _must_ be replaced with your real values. # # Copy to FXUUCP.CFG and complete each one of the entries. # # Because this is a sample of an 'advanced' configuration mode, you would # need to setup the extra config files. See the corresponding examples. # Your machine name in the uucp world. uucpname: foo # Where your modem is located. device: com2 # At what speed to talk to your modem speed: 19200 # Where to hold both incoming and outgoing messages spool: c:\spool FX CONFIGURTION --------------- # # Configuration file reference for FX Uucico 1.0 # # All available options are included in this sample, they show # default values, or typicial setting. Entries are sorted by # alphabetical order. Some of them are used by other Waffle # programs. Options not recognized by FX Uucico are not listed. # # Note : this is a full reference, not a typical example. # The actual content is not relevant to FX Uucico. It only changes the # default sharing behaviour. See sharing and networking. channel : 6 # Comm port number, this entry is mandatory device : 2 # Specify the comm driver, FOSSIL, NATIVE or DIGI. If not present, # Uucico will use FOSSIL if autodetected, NATIVE otherwise. driver : FOSSIL # Baud rate or bps speed. Mandatory entry speed : 2400 # Base directory of the spool tree. Mandatory entry. spool : D:\spool # Directory for placing temporary files. Only used by the sharing module. # You may put it in a Ramdisk if you have enough space. temporary : c:\temp # Your machine name, this is how your host is identified by your neighbours # It must match their 'systems' (or equivalent) entries. Mandatory entry. uucpname : laser # Root directory. Sets the default parent for the log and uucp subdirs. # If not present, FX assumes a single directory (no tree) by default. waffle : c:\waffle # Fatal timeout in seconds in the 'g' family of protocols. Uucico will close # the connection when the remote host is idle for a longer time. uu.alive : 90 # Pause time in seconds between calls to two different hosts. uu.between : 10 # Debuglevel for the 'uucico' and 'debug' logs. uu.debug : 3 # Packet retry timeout in the 'g' and 'G' protocols. This is not a fatal # timeout as uu.alive. Uucico retries sending packets after uu.delay # seconds without remote acknowledge. This is a critical setting for # noisy lines. Too low will result in too much retries, too high will # leave the connection idle for long periods and the remote host may # abort. uu.delay : 20 # Overrides 'driver' entry. Usefull for using different drivers for Waffle # and uucico. uu.driver : NATIVE # Getting one of those strings will abort script execution. Note that # underscores must be used instead of spaces. Setting the wQuirks option # off, disable watching for those string in the login script, they are then # only effective in the dialer script. uu.drops : NO_CARRIER NO_DIALTONE BUSY ERROR # Maximum number of errors allowed in the 'g' family of protocols. # See also fx.errorRatio. uu.errors : 200 # Grade level in dialout mode. Jobs with lower priorities will be skipped. # The default is to transmit all jobs. uu.grade : C # Timeout in seconds waiting for the initial uucp messages. uu.handshake : 30 # Locked DTE speed. Normally used on high speed 'buffering' modems with # a constant DTE speed, independent on the actual carrier speed. When # this option is specified, the normal speed configuration is not used. uu.locked : 57600 # Number of retries for dialout calls. uu.retries : 1 # Delay pause in seconds between two different entries for the same host uu.retrytime : 10 # Timeout in seconds for scripts execution. uu.time : 30 # Debuglevel for messages outputed to the screen. uu.visual : 3 # Window size for the 'g' familiy of protocols. uu.windows : 7 # Save backups of old jobs in the directory 'spool\lost'. Boolean. # Note, backups are never made when file restart is active! fx.backup : yes # Directory location for all uucp config files besides STATIC. fx.confDir : c:\waffle\uucp # When enabled, FX will perform its own double buffering of the external # comm drivers. This is requiered for some non-standard Fossils (for ISDN, # intelligent boards, etc). May be also used to overcome the driver's # buffer limit. Will add some overhead. fx.dblBuffer : no # Directory location to write the 'debug' log. Overrides 'fx.logdir' fx.debugDir : h:\temp # Maximum errors to packets ratio. Similar to 'uu.errors' but instead # of being an absolute limit, is proportional to the traffic. # A value of 10, means that the session will be aborted if there are more # than 10% errors (in relation to correct packets). FX starts checking the # ratio, only after the errors are more than twice the absolute value # of this setting (20, if fx.errorRatio is 10). # Defaults to zero, not used. fx.errorRatio : 0 # Selects new munging method. Boolean option, default false. # Warning, can't be used if uuxqt (or your tosser) doesn't support it. fx.nmunge : false # Minimum free space in bytes required on the spool drive. # Default, do not check for free space. fx.freeSpace : 500000 # Packet size for the 'g' and 'G' protocols. fx.gPktSize : 64 # Number of seconds to wait for the modem to drop the carrier detect signal # when hanging up. Default is 0, drop DTR signal and exits immediately. fx.hangupTime : 0 # See PERMITS. Boolean option, default is off. fx.joinDefPermit : no # Directory location for writing the log files. fx.logDir : c:\waffle\admin # Maximum file size in bytes allowed in transmission. Default is 32 MegaBytes. fx.maxFile : 1000000 # Unless disabled, FX will release time-slice by default when running # under DesqView, Windows or other environments with a compatible release # time-slice interface (os/2, WinNT, etc). See the multitask chapter for # more info. Boolean option, defaults to true. fx.multitask : yes # Maximum age of the file in days for resuming file transfer. If the file # is older, it will be overwritten. This applies for incoming files only. # Default 0, don't check age. fx.resumeAge : 0 # The presence of this option enagages basic configuration mode (that's why # it's commented out here). See the configuration chapter for full details. #fx.rSystem : host time protocol script # Delay (in 100ths of a second) between each byte sent to the port when # executing scripts. The default is 0 (no delay). This will speed script # execution as most systems do not need any delay. Some old modems (1200 bps) # may need a very short one, a value of 10 (1/10th second) is usually enough. # See also "echo check". fx.scriptPace : 10 # Enables FX networking features. Default depends on the presence of # the 'channel' variable. On if present, off otherwise. fx.share : no # Number of jobs to scan and sort before selecting the next transaction. # The sort is done in ASCII order, low values first, this allows for jobs # to be sent by grade and chronological order. Normally not needed for non # multitasking and non-graded systems, because the jobs would be already # ordered. High values may affect performance. # Default is 0, use the first job returned by the operating system. fx.sortJobs : 0 # Fatal timeout in seconds for the streaming protocols, ('f' and 'y'). fx.streamTime : 30 # Some uucp implementations expect a redudant hang-up command, before # closing the connection. Turn on this switch if the remote host complains # that all the session are logged as failed. Leaving this option disabled # for those cases, will not produce any harm other than the error message # in the remote host's logs. Boolean option, default false. fx.strictClose : no # Controls the amount of information written to the 'uulog' file. # 0 - uulog is never written to # 1 - Only denied transfers are logged # 2 - Same as above plus non uucp-jobs transfers # 3 - Same as above plus normal jobs # Default is 2, compatible with Waffle. fx.uulogLevel : 2 # Catch-all for global Waffle compatibility. When 'fx.wQuirks' is # off, same aspects of the software differ from Waffle's behaviour. # They cover everything that we believe would be better to change, # but doing so may introduce small incompatibilities, and yet don't # have a specific configuration option. Currently it applies to the # exit level (see the tech guide), the usage of uu.drops in login scripts. # and the matching search method for dialers and scripts. # Default is on, maximum Waffle compatibility. fx.wQuirks : yes APPENDIX: dialers file ------------ #Dialer-name device speed dialer-script # Hayes.1200 Default 2400 "" ATV1 OK \EATDT\T CONNECT \m\c High.speed Any default "" ATZ OK AT&C1&D2 OK ATDP\T CONNECT~60 \m\c Null.38400 1 38400 "" \dRING "" CONNECT\s38400 "" \m\c permits file ------------ # Simple configuration for leaf nodes default /system=known /commands=rnews,rmail # # Advanced configuration # ; laser /system=laser ; /account=uulaser ; /commands=rnews,rmail ; /download=c:\home\jorge ; /upload=c:\home\jorge ; /time=any ; /fx.gpktsize=1024 ; default /system=known ; /fx.maxbytes=100000 ; /fx.maxtime=30 scripts file ------------ #script-name login-script # toUnix ogin:--ogin: \L ssword: \P toWaffle NEW:-\c-NEW: \L word: \P systems file ------------ #host time protocol dialer script phone-number login password # laser Any g Hayes.1200 toUnix 123-45678 uulaser secret satlink Wk y High.Speed toUnix 999-99999 jorge ssshh Support Information ------------------- FX UUCICO and FX UUCP are Copyright (c) 1993, 1994 by Jorge Cwik. All rights reserved. FX maintains a set of servers to support its products. The following is a list of those servers, their functions, and instructions on how to use them. - Email based file-server (fx-dist@uufx.net) - Anonymous ftp-server (ftp.uufx.net /pub/fx) - Information email auto-replier (fx-info@uufx.net) - Public mailing list. (fx-list@uufx.net) - WWW and gopher home page 1) File distribution. The two main servers are FX's mail and ftp services. a) To get a copy of FX UUCICO via electronic mail, send a message to: fx-dist@uufx.net. In the body of the message, issue one or more of the following commands: help ...sends a copy of the server instructions index ...sends a list of the files available get {} ...sends a requested file: The proper syntax for file retrieval is "get filename.ext" The example's 'filename.ext' should be replaced with the exact name of the file you wish to receive, and the command should NOT contain the quotemarks in the actual mailing. eg: get fxuucico.zip is the proper syntax to receive the current ver- sion of FX UUCICO. To retrieve other files, request a copy of the index from the server (see 'index' above) to get a list of available files. b) You may use File Transfer Protocol (ftp) to retrieve copies of FX and support files. Use the ftp command to access ftp.uufx.net. The system will respond with a login prompt. Respond with anonymous _or_ with ftp to this login prompt. The system will then ask you for a password. Respond to this with your personal email address. At the ftp> prompt, change directory to the fx area: cd pub/fx. The ls command will show you a list of the files available. Issue the 'bin' command BEFORE you request a transfer. After doing so, give the command: get fxuucico.zip to have the file sent to you. Use the same general command to retrieve any other files you're interested in, substituting the name of the file you want for fxuucico.zip. c) Via WWW (Mosaic, Lynx, Gopher, Cello, etc.) Set your URL in Mosaic to: http://www.uufx.net/~bobk, and follow the prompts. For gopher or lynx, append www.uufx.net/~bobk to your invocation command for either of the utilities. Cello works the same way Mosaic does. d) FX may be obtained through fidonet via the Circuit Board BBS, 1:346/15 The command FILES may be used to retrieve a list of available FX files, INFO may be used to retrieve an information sheet, and FX-FAQ will get a compilation of snippets from commonly asked questions. 2) FX maintains three public servers for supporting clients or potential FX users. Two of these are auto-responders and one is an interactive mailing list. a) To get the FX FAQ, send an email message to: fx-faq@uufx.net. A copy of the current FAQ will be sent to you in return email. b) To get a description of FX UUCICO and its capabilities, send an email message to: fx-info@uufx.net. A copy of the information will be sent to you in return email. NOTE: These are auto-responders, no Subject: line or message body will be seen by a human being. Please don't use these addresses to communicate with the author or the server administrator, they will not get your mail! c) FX operates a public mailing list for the discussion of FX topics. You are invited to participate with your questions, observations, reports or suggestions. This forum operates similarly to a newsgroup, except that it uses mail instead of usenet news as a medium. To subscribe to the public list, you MUST communicate with the command server. (The same is true if you wish to UNsubscribe.) To join, send email to: fx-cmd@uufx.net _or_ fx-list-request@uufx.net In the body of the message, you MUST issue the following lines: subscribe fx-list listname fxuser@your.site In the 'listname' line, place the email address where you wish to have the fx mails sent. The address 'fxuser@your.site' is only an example, and should be replaced with your preferred email address. If your join command succeeds, you will receive a confirmation note. Once you have subscribed, any articles you wish to submit must be sent to: fx-list@uufx.net. If you wish to reply to an article you receive, using the normal Reply method of your mailer will send your response to the correct address. To UNsubscribe from the list, you must send your request to the same command server described in the 'subscribe' section above. Mail to: fx-cmd@uufx.net _or_ fx-list-request@uufx.net and issue the command you used to subscribe --except replacing the word 'subscribe' with the word 'unsubscribe.' eg: unsubscribe fx-list listname fxuser@your.site If you used an "alias" when you subscribed, be sure to supply the same address you did when you joined the list. Server command messages accidentally sent to fx-list@uufx.net will be delivered to all subscribed members and is likely to generate 'flame mail.' It is strongly suggested that you keep a set of these instruc- tions for future reference to prevent embarrassment. You may contact the author, Jorge Cwik, directly at either jorge@satlink.net or jorge@uufx.net. The servers are operated by Bob Kirkpatrick. All comments, questions or sug- gestions regarding their operation should be directed to either bobk@uufx.net or bobk@dogear.com.