home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-02-26 | 91.9 KB | 2,377 lines |
-
- WELMAT Reference Manual Version 0.47
-
-
-
-
- ¢1mWelmat
-
- ¢0mThe Session Handler for the Amiga
- Origionally by Michael C. Richardson.
- Current Keeper of Sources: Russell W. McOrmond
- No warrantee expressed or implied.
- See section COPYING for license.
- Free Software Foundation Copyleft applies.
- All rights reserved
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -1-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- ¢1mIntroduction to Welmat
-
-
- ¢0mWelmat's basic job is to be a Fidonet session handler.
- A session handler is the program that transfers files
- between two fidonet sites, the most common exchange being
- between a point and it's bossnode. As well as handling the
- job for a point, Welmat is designed around being used in a
- Multi-line host mode, and has the ability to deal with
- networks other than just fidonet itself.
-
- In order to allow for the most configurability, Welmat
- makes use of external programs rather than built in routines
- to handle a lot of it's advanced features. This allows one
- to decide whether they wish to use the feature (And if they
- don't, no memory is wasted), and also allows third party
- developers to write modules that will just 'Plug Into'
- Welmat. This idea will be expanded upon further in the
- future to allow users to chose which protocals they wish to
- support, and allow third party developers to write protocals
- that will be Welmat compatable without having to deal
- directly with Welmat itself.
-
- Welmat is a Freely Distributable program that is
- licenced under the GNU public licence. This allows people
- to use the program, distribute the program, and even obtain
- and modify the source. Hopefully in the future more
- developers will join the current team in writing software
- that will be freely available to the Amiga Networking
- community.
-
- Welmat will hopefully be made available with a few
- different manuals for different types of users. The three
- main types of users are your average POINT users, a standard
- NODE operator (Who may run a BBS under Welmat) and then
- there are your power users (Who want to get into the nitty
- gritty details of everything).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -2-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- ¢1mWelmat Philosophies
-
- ¢0mThere are quite a few concepts that the authors believe are
- important to the understanding of Welmat, why certain
- features exist, and why certain others might not.
-
- I will first include some comments from Michael Richardson
- from the origional manual.
-
-
- This document represents an attempt to
- provide an overview of how Welmat works, in order
- that the user can better figure out what is
- possible with Welmat, what features and facilities
- have been forseen, and whether something not
- forseen by the author can be made to work. It is
- the author's belief that programs are tools, and
- while the end of screwdriver was not made for
- hammering in a nail, lacking a hammer, it can be
- used to push the nail in.
-
- However, it also the author's belief that no
- one binary can provide all the features and
- functions that every user requires, and Welmat has
- been designed to provide general features rather
- than specific functions. Examples that the author
- feels are key to understanding Welmat include
-
-
- ¢1mflow¢0m.¢1mlibrary ¢0mthe queue manager. Concepts of ¢1mHold ¢0mand
- ¢1mCrash ¢0mhave been replaced with a more general
- ¢3mpriority ¢0mscheme where both the maximum and minimum
- priorities to be sent can be specified. This
- manager, while not active (it has no process
- context) attempts to synchronize access to the
- outbound queue so that files added to the queue
- while other files are in transit will get sent if
- possible.
-
-
- ¢1mWelmat Programs ¢0mare instructions that Welmat
- interprets (they are compiled to a low level code)
- in order to set up the information required for it
- to run. A great number of policy decisions
- can/will be settable via Welmat programs. The
- alternative is to set a great deal of policy in C
- code, something that the author finds
- unacceptable.
-
- Unfortunately, the real power of this
- interpretation lies in the ability to make
- decisions -- and this implies being able to form
- complex expressions. This later facility is still
- being mulled over, awaiting an evaluation of the
- possibilities of using TCL [Tool Command Language]
- for this.
-
-
-
-
- -3-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- In the meantime, an effort has been made so
- that any decisions that need to be made base their
- decisions on data provided by the user. In this
- way the "right" choice depends on the parameters
- given.
-
-
- ¢1mSUB¢0m-¢1mPROCESSES
- ¢0mWelmat is made up of a number of processes. There
- is a single MCP process that attempts to
- coordinate what each of, perhaps, many slave
- processes are doing. The actual protocol code is
- run by the slave process.
-
-
- The Licence that Welmat is distributed under seems to
- have caused a bit of confusion. The current version of
- Welmat is distributed under the GNU General Public License
- version 2. The intent of the use of this licence it to
- ensure that Welmat and all derivatives remain freely
- accessable to the public.
-
- The concept of 'Free' has been confused with some
- indication of the cost rather than an indication of
- freedom. Most software packages that are available have a
- 'Customer' and a 'Producer'. The Customer is the person or
- persons who are paying for the development of the software
- and the Producer is the person who is actually writing the
- software. With the current developement of Welmat I am
- actually acting as both one of the Customers and one of the
- Producers in that I am technically 'Paying Myself' to write
- Welmat. All development, once completed, is made available
- to everyone regardless of who paid.
-
- Some users will then ask why they would want to pay at
- all if they are going to get the same product regardless of
- whether they pay or not. This is not actually the case.
- Users who contribute in one way or another towards the
- development of freely available software will have their
- needs met at a higher priority than users who do not
- contribute. As well, if no contributions are made,
- development resources become low, and development ends up
- slowing. Allowing the contributions to be voluntary also
- allows the people who HAVE the money to help out the people
- who may not be all that well off financially at the moment,
- or who are contributing in other non-financial ways.
-
- As should be understood from above, time is just as
- much a contribution to the development of software as money
- is. A user that spends time helping others set up, provides
- usefull bug reports and helps convince other authors to get
- involved in development is as much (And in some ways more) a
- contributor than someone who sends in money. While I very
- much thank the people who do spend the time to help support
- freely available software, the simple fact is that it is
- often easier for a user to send in money.
-
-
-
-
- -4-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- Why send in money? The people who actually do the
- writing of the software have day jobs in order to keep food
- on the table. Often the time that they spend on development
- of one thing takes them away from the development of
- something that is actually making them money. For myself, I
- ended up putting in quite a few hours last summer in order
- to try to pay for this term in University.
-
- Who benifits from donations? Obviously, everyone.
- When you send in the 'registration' for a ShareWare or
- Commercial package you often do not directly receive the
- benifits that that money can give you. If there is a
- certain feature that you wish to have added, it makes sence
- to pay someone for the time required to add that new
- feature.
-
- As an example, I have found it almost frustrating to
- watch the number of users sending in money for one of the
- other Network session handlers for the Amiga. One of the
- main reasons I was told that people were not using Welmat
- was because of the fact that ZedZap had not yet been
- implemented in Welmat. ZedZap is a feature that does take a
- bit of time to write, and unfortunately I did not have that
- time last summer because I needed to be working full time.
- Unfortunately nobody made the connection between the missing
- feature and time, and rather than getting a group together
- to pay for the development of a freely available ZedZap,
- they sent their money to pay for a program where the only
- person really benefiting is the Author of the program. It
- is even more frustrating to watch developers who are capable
- of adding a feature to a freely available program to instead
- pay money towards a package that they then cannot modify to
- suit their own needs, or to develop freely available
- software that only supports the 'Share'ware or Commercial
- packages.
-
-
-
- If you wish to get involved in the development of truly
- freely available software, please get ahold of myself.
- There is always work to be done, and never enough resources
- to actually get everything done. Lets work together towards
- building software tools that will benifit EVERYONE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -5-
-
-
- WELMAT Reference Manual Version 0.47
-
-
-
-
- ¢1mTHE CONFIG FILE
-
- ¢0mThe text configuration file is made of a series of
- keywords, one per line, most followed by zero or one
- arguments, each argument seperated by a space or tab
- character.
-
- Characters preceeded by a backslash loose any special
- meaning given below, and in addition, the sequence '\n' is
- turned into a newline, '\r' is a carriage return and '\XYZ'
- is the character represented by the octal number XYZ.
-
- Any characters enclosed in double quotes are
- interpreted, except that backslash interpretation is still
- done. Arguments that have spaces in them should be quoted.
-
- All keywords are case-insensitive.
-
- The configuration file is processed by ¢1mwcompile ¢0mto
- produce a data file. ¢1mwcompile ¢0mtakes one option: -¢1mConfig
- ¢0m<¢1mfile¢0m> which tells it to compile the given file into
- ¢1mwelmat¢0m.¢1mdata ¢0min the current directory.
-
- If given two other arguments, it takes the first to be
- the name of configuration file, and the second to be the
- name of data file to produce.
-
- If the datafile is ommited, then the file ¢1mwelmat¢0m.¢1mdata
- ¢0mis used. If not given any argument, it looks for a
- ¢1mwelmat¢0m.¢1mcfg ¢0min the current directory.
-
- If the argument '?' is given, then a listing of all the
- commands that are currently supported are listed. This is
- very usefull for updates to keep up-to-date on all the new
- command options.
-
-
- There are four different types of verb types:
-
- ¢1mNUMBER¢0m_¢1mARG ¢0mThe argument is a number and should be in base
- 10, suitable for 32 bit signed interpretation. Some
- structures, however, use 8 or 16 bit representation.
- The configuration compiler uses 32 bits everywhere.
-
- ¢1mSTRING¢0m_¢1mARG ¢0mThe argument is a string. This may be a file
- name, or a dial string or other relevant string. Some
- strings are limited in their size, such system name or
- sysop name, due to constraints of the FidoNet
- protocols. The configuration compiler can produce
- strings of an arbitrary size, but currently a line may
- not exceed 256 bytes.
-
- ¢1mDIR¢0m_¢1mARG ¢0mA special case of a string argument, but a
- trailing slash will be added if the directory name does
- not end in a colon (:) or a slash (/).
-
-
-
- -6-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- ¢1mNO¢0m_¢1mARG ¢0mThe keyword is a binary or other enumerated type
- option. It takes no option. No sanity checking is
- currently done in the case of exclusive options. The
- last option processed is the one that will take effect
- (see WELMAT PROGRAMS)
-
- GLOBAL CONFIGURATION PARAMETERS
-
- The configuration file consists of a number of global
- definitions and some number of modem definitions. Each
- modem definition in theory defines a seperate modem/serial
- port/slave combination referred to as a ¢1mline ¢0mHowever, not
- all lines need be active all the time. Several ¢1mlines ¢0mmay be
- defined for a single device, each with differing parameters
- (perhaps for different modems). This is not the only way to
- change parameters (see WELMAT PROGRAMS).
-
-
- Stack <Number>
-
-
-
- ¢1mCodeList ¢0m(STRING_ARG) Points to a file of product names,
- used to decode product codes found in the WaZOO
- header. This file is an ordered list of product
- numbers names pairs one per line. Each line should
- contain the product number (in hex, two digits,
- possibly followed by the letter 'h'), a space or tab,
- and the product name. Note that the product number is
- actually ignored and the relative position in the file
- is used to find the product name. The whole file is
- loaded in to an appropriately sized buffer during
- initialisation, after which the file is not referenced
- again. Any unknown product codes found will be
- displayed in as two hex digits.
-
- ¢1mComment ¢0m(STRING_ARG) Displays a comment to the launch CLI
- when this part of the Welmat program is reached.
-
- ¢1mDisplayLogLevel ¢0m(NUMBER_ARG) Sets the highest message
- level that should be posted to the log window. This
- value affects messages from the MCP and from
- un-occupied slaves.
-
- ¢1mExitEveryCall ¢0m(NUMBER_ARG) Causes Welmat to exit after
- placing a single successfull call or one that results
- in a diagnositic code greater than the specified
- number. The default is that this is disabled, which
- corresponds to the value, 127.
-
- ¢1mFidoListI ¢0m(STRING_ARG) Tells Welmat to use a version 6
- nodelist that has the words in intel order (as produced
- by parselst -i or an IBM parselst). Just the path and
- basename should be specified, ".DAT" and ".IDX" will be
- appended. Note that version 6 nodelist is a 3
- dimension (zone, net, node) only nodelist. Point
- numbers different from zero will fail to be found.
-
-
-
- -7-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- ¢1mFidoListM ¢0m(STRING_ARG) Tells Welmat to use a version 6
- nodelist with the words in native 68000 order as
- produced by Amiga Parselst. Otherwise identical to
- ¢1mFidoListI¢0m.
-
- ¢1mHost ¢0m(special) The argument is the Fully Qualified 5
- dimension address of this system. The form is
- Domain#Zone:Net/Node.Point.
-
- ¢1mInbound ¢0m(DIR_ARG) Specify the default inbound directory
- for all slaves and sessions.
-
- ¢1mLogFile ¢0m(STRING_ARG) Specifies the filename of the MCP
- logfile and default logfile for slaves and sessions.
-
- ¢1mLogFileLevel ¢0m(NUMBER_ARG) Specifies the maximum log level
- that should be written to the MCP log file.
-
- ¢1mLogLevel ¢0mSynonym for ¢1mLogFileLevel¢0m.
-
- ¢1mLogWindow ¢0m(STRING_ARG) Defines a filehandle that is where
- Log entries are written directly to, and is similar to
- the use of StatusWindow described elsewhere.
-
- ¢1mMaxRetryCode ¢0m(NUMBER_ARG) Specifies the largest return
- result that will cause Welmat to requeue an outbound
- request if it fails. The default is EXIT_BADCONF (35),
- which is returned when Welmat believes that the
- configuration is faulty.
-
- ¢1mNoList ¢0mSynonym for ¢1mNoNodeList¢0m.
-
- ¢1mNoNodeList ¢0m(NO_ARG) Specifies that no nodelist exists. To
- answer a call, Welmat needs to have a nodelist.
-
- ¢1mNoCode ¢0mSynonym for ¢1mNoCodeList
-
- NoCodeList ¢0m(NO_ARG) Specified that no product list exists,
- do not search for one and display all product codes in
- hex format.
-
- ¢1mNoProduct ¢0mAnother synonym for ¢1mNoCodeList¢0m.
-
- ¢1mNodeList ¢0m(STRING_ARG) Tells Welmat to use Nodelist.library
- for nodelist accessing. An example of a
- Nodelist.Library compatable nodelist processor is IGEN
- by Todd Kover.
-
- ¢1mOutbound ¢0m(DIR_ARG) Specify the default outbound directory
- for all slaves and sessions. Any scanning of the
- outbound queue will be done with this outbound
- directory.
-
- ¢1mProductList ¢0mSynonym for ¢1mCodeList¢0m.
-
- ¢1mQuantum ¢0m(NUMBER_ARG) Specifies the time between outbound
- scheduler events in seconds. This is used for 'Poll'
- (Call NoWait) events as well as scheduling between
-
-
- -8-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- multiple events submitted to welmat all at the same
- time.
-
- ¢1mQueueDir ¢0m(DIR_ARG) Specify the directory where
- Flow.Library will keep all it's #?.FLOW files
-
- ¢1mSysop ¢0m(STRING_ARG) Specifies the name of the operator that
- will be placed into incoming and outgoing YooHoo
- packets. This field is limited to 19 characters in the
- YooHoo packet.
-
- ¢1mSystem ¢0m(STRING_ARG) Specifies the name of the system that
- will be placed into incoming and outgoing YooHoo
- packets. This field is limited to 59 characters in the
- YooHoo packet.
-
- ¢1mStatusLevel ¢0m(NUMBER_ARG) Specifies the default status
- level that will be used for un-occupied slaves in their
- status windows (files.)
-
- ¢1mWelcome ¢0m(STRING_ARG) Specifies the default welcome message
- for all slaves.
-
- LINE CONFIGURATION
-
- The line configuration sections are bracketed by the
- keywords ¢1mModem ¢0mand ¢1mEndModem ¢0mkeywords. The ¢1mModem ¢0mkeyword
- takes a single argument: a number representing the line
- number. The modem configuration section continues until the
- ¢1mEndModem ¢0mkeyword is reached. The keywords between these two
- define the parameters for a particular modem connected to a
- particular communications device. Furthermore, this section
- describes if and how a seperate process will be spawned to
- deal with that communication device (there is no reason why
- a slave to recieve mail via a TCP or DNet channel, or a
- bridgeboard exchange could not written). This addition
- process is known as a ¢1mSlave¢0m. Welmat Slaves currently share
- the same loaded binary with the MCP, may change in the
- future. In particular an external program, and a slave
- tailored to do a specific subset of protocols might
- eventually exist.
-
- Several of the parameters which welmat wants to know
- about to send to the modem interpret certain characters
- specially in order to allow carriage returns and DTR control
- to be done inline. Any of these characters may have its
- special meaning removed by preceeding it with a backslash.
- (Note that the configuration file compiler also puts special
- meaning on the backslash, so the the backslash will itself
- need to be escaped.) Parameters to which this applies will
- be noted with an asterisk (*) The following characters are
- interpreted:
-
- ^ raise DTR
- v drop DTR (see notes under UseDTR)
- ~ 1/4 second pause
- ` 1/16 second pause
- | carriage return
-
-
- -9-
-
-
- WELMAT Reference Manual Version 0.47
-
-
-
-
- MODEM KEYWORDS
-
- ¢1mAnswer ¢0m(STRING_ARG)* The string to send to the modem to
- cause it to answer when the slave detects a ring
- string. (Usually "ATA|")
-
- ¢1mAtten ¢0m(STRING_ARG)* The string to send to the modem to
- make sure that it is there. This should cause a string
- recognised as a ¢1mPrompt ¢0mto be returned. Default is
- "AT|"
-
- ¢1mBaud ¢0mSynonym for ¢1mBaudRate¢0m.
-
- ¢1mBaudRate ¢0m(NUMBER_ARG) Specifies a baud rate which this
- slave will use to talk to the modem. Specifies the
- baud rate at which this slave will remain at if the
- baud rate is "locked."
-
- ¢1mBBSBanner ¢0m(STRING_ARG) This is a string that is sent to
- the user after they hit escape twice in order to enter
- the BBS. This is to let them know that they hit escape
- in case the BBS loading takes a while.
-
- ¢1mBBSTimeout ¢0m(NUMBER_ARG) This is the number of seconds to
- wait before 'assuming' that the caller is a BBS caller,
- and to drop to the BBS. The default is '0' which means
- that it will never make such an assumption.
-
- ¢1mBBSExecute ¢0m(STRING_ARG) Specifies a program that this
- slave will Execute() to spawn a BBS program. As with
- Login, many '%s' style substitutions are possible.
- Please see the section in the manual for 'SmartRun'.
-
- ¢1mBufferSize ¢0m(NUMBER_ARG) Size of the recieve buffer to
- use. Default is 1k.
-
- ¢1mConnectPause ¢0m(NUMBER_ARG) Specifies the number of seconds
- the slave will wait after receiving the connect message
- before it will proceed. This setting is usefull if
- your modem does not assert DCD immediately after
- connecting. (e.g. the 1680)
-
- ¢1mConnectWait ¢0m(NUMBER_ARG) The number of seconds to wait for
- the connect message. This value should be greater than
- the timeout of the modem (value of S7 on hayes
- compatible) so that the modem will return a "NO
- CARRIER"-like message before the slave times out.
- Failure to configure this properly previously resulted
- in the message "Strange Problem". The error message is
- now more meaningfull.
-
- ¢1mDevice ¢0m(STRING_ARG) The name of the exec device to use.
- (default "serial.device")
-
- ¢1mDeviceUnit ¢0m(NUMBER_ARG) The unit of the device to use.
-
-
-
- -10-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- ¢1mDial ¢0m(STRING_ARG)* The string which should be prefixed to
- a number to dial it.
-
- ¢1mEndSessionInit ¢0m(Special Case) Not really a modem verb.
- See ¢1mSessionInit¢0m" below.
-
- ¢1mHangup ¢0m(STRING_ARG)* The string which the slave will send
- to the modem to get it to hangup.
-
- ¢1mInit ¢0m(STRING_ARG)* The string which the slave will send to
- the modem to initialise it and before every outgoing
- call. The string recognized as the prompt (Usually
- "OK") should result. modem from this command.
-
- ¢1mInitLoop ¢0m(NUMBER_ARG) This is the number of times the init
- string will be attempted. This keyword in conjunction
- with InitWait will allow the initialization to be more
- robust.
-
- ¢1mInitWait ¢0m(NUMBER_ARG) This is the number of seconds to
- wait before trying to send the init string again.
-
- ¢1mLaunch ¢0m(NO_ARG) Specifies that this slave should be active
- and able to dial out.
-
- ¢1mLockBaud ¢0m(NO_ARG) Specifies that the slave should not
- physically change the baud rate when it receives the
- connect message. The computer - modem interface speed
- is "locked" at the default baud rate.
-
- ¢1mLogin ¢0m(STRING_ARG) Specifies a program that the slave
- should run the to authenticate the login and preform
- appropriate action. Special '%' style substitutions
- are available within the string that are documented
- later in the manual under "SmartRun".
-
- ¢1mLogWindow ¢0mSame as for the global configuration section,
- only this specifies the window for any slave started
- for this modem. Sessions started on this modem may or
- may not inherit this value from their slave --- if it
- is wished that they do, it must be set explicitely with
- a ¢1mSessionInit¢0m" script.
-
- ¢1mModemName ¢0m(STRING_ARG) Just a comment that is printed
- whenever this welmat program is run.
-
- ¢1mNo7Wire ¢0m(NO_ARG) Specifies that 7 wire (hard ware flow
- control mode) should not be set. (default)
-
- ¢1mNoBBS ¢0m(NO_ARG) Specifies that callers may not drop to a
- BBS. (default)
-
- ¢1mNoCalls ¢0m(NO_ARG) Specifies that the telephone will not be
- answered.
-
- ¢1mNoDTR ¢0m(NO_ARG) Specifies that no attempt to change the DTR
- line should be done. This option is required for
- devices such as the Commodore 7-Port board, and the
-
-
- -11-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- Supra serial device which do not support any method of
- controlling the DTR line. Usage of the translation
- character that control the DTR line will cause error
- message.
-
- ¢1mNoLaunch ¢0m(NO_ARG) Specifies that this slave is NOT to be
- active.
-
- ¢1mNoLockBaud ¢0m(NO_ARG) Specifies that the baud rate should
- change to reflect the actual connect speed (default).
- The manner in which it changes is determined by the
- 'Response' keywords.
-
- ¢1mNoLogin ¢0m(NO_ARG) Specifies that this slave will not
- collect characters from the caller to pass to a login
- program.
-
- ¢1mNoSlow ¢0mSynonym for ¢1mNoSlowModem
-
- NoSlowModem ¢0m(NO_ARG) Specifies that a 1/6 second pause
- between command characters should not be done.
-
- ¢1mNoWaZoo ¢0m(NO_ARG) Specifies that this slave should not
- attempt, nor respond to the WaZoo identification
- protocol.
-
- ¢1mOffHook ¢0m(STRING_ARG)* The string to send to cause the
- telephone to go off hook. Welmat currently never wants
- to do this.
-
- ¢1mPostDial ¢0m(STRING_ARG)* The string that should be appended
- to the number to dial it. Default is just "|" (a
- carriage return)
-
- ¢1mPrompt ¢0m(STRING_ARG) The string to expect from the modem to
- indicate that the previous command execute properly.
- Default is "OK".
-
- ¢1mReceiveCalls ¢0m(NO_ARG) Allows this slave to answer the
- telephone. This will also launch the slave.
-
- ¢1mResponseWait ¢0m(NUMBER_ARG) The number of seconds to wait
- for non-connect type responses.
-
- ¢1mSessionInit ¢0m(Special case) This introduces a section of
- modem specific session initialization commands.
- Commands between this statement and the following
- ¢1mEndSessionInit ¢0mcommand will be run for any session
- structure initialised for this modem. Most commands
- that are valid in the global configuration section are
- valid here, only they apply to only this session
- structure being initialised. As well, any
- configuration option available within call events are
- enabled. Please also see the description for 'WCTL'.
- All commands are the same as for WCTL only they do not
- have a '-' character in front of the arguments. For
- sample, one would use the option ¢1mYesFREQ¢0m" to turn the
- request bit on to tell the remote that you support
-
-
- -12-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- inbound file requests. Setting up a seperate log
- window for the slave and associated sessions is easily
- done here, as is changing the inbound directory.
-
- ¢1mSlow ¢0mSynonym for ¢1mSlowModem¢0m.
-
- ¢1mSlowModem ¢0m(NO_ARG) Specifies that the modem can't deal
- with commands at the specified baud rate. The slave
- will insert a 1/16 second pause between each command
- character sent.
-
- ¢1mStatusWindow ¢0m(STRING_ARG) A file name to which this slave
- should send its verbose output. This is usually a CON:
- window. The default is "CON:20/150/600/40/Welmat
- Status" A ConMan CND: device that doesn't block when
- the user types into the window might also be a good
- idea.
-
- ¢1mUnit ¢0mSynonym for ¢1mDeviceUnit¢0m.
-
- ¢1mUse7Wire ¢0m(NO_ARG) Set the SERF_7WIRE bit on in the
- OpenDevice call to cause RTS/CTS hardware flow control
- to be enabled.
-
- ¢1mUseDSB ¢0m(NO_ARG) The device is an ASDG Dual Serial Board
- driver (or compatible). An SIOCMD_SETCTRLLINES (hex
- 0x10) command will be used to chnage the state of the
- DTR wire. This method is supported by the PDIO serial
- device, the cmiser.device for the CMI MultiPort Board
- (the company is now defunct, but there are still quite
- a few boards out there), and the csaser.device for the
- CSA 40/4 Magnum.
-
- ¢1mUseDTR ¢0m(NO_ARG) The slave will diddle with the hardware
- directly to change the state of the DTR line on the
- internal serial port. Sending characters to the modem
- while the DTR line is down has been known to crash the
- serial.device. Hopefully, Commodore will update their
- serial.device in the future to use the SETCTRLLINES
- method as used by the ASDG board, and many other serial
- devices.
-
- ¢1mWaZoo ¢0m(NO_ARG) This slave will attempt and respond to the
- WaZoo identification protocol. Default.
-
- ¢1mWelcomeMessage ¢0m(STRING_ARG) Overides the default (global)
- welcome message for this line only.
-
- ¢1mYesBBS ¢0m(NO_ARG) Allows this slave to spawn the BBS.
-
- ¢1mYesLogin ¢0m(NO_ARG) This slave will collect characters and
- invoke a login program.
-
- RESPONSE KEYWORDS
-
- The response keywords control how Welmat interprets the
- results coming back to from the modem. There are currently
- six response types:
-
-
- -13-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- #### A number, a response that matches the string is
- considered to be a connect message and the baud rate is
- assumed to be given by the number. i.e. ¢1mResponse
- 19200 ¢0m"¢1mCONNECT FAST¢0m" would set the baud rate to 19.2k
- in response to a Telebit modem connecting in PEP mode.
-
- ¢1mfind ¢0mThis response is the second form of connect message
- -- rather than having to specify the baud rate for each
- possible connect message, if the connect message itself
- contains the baud, this allows one to collect the baud
- rate from the response string itself. The baud rate is
- extracted with a C library function, sscanf(3), and
- most formats that it understands are possible in all
- response strings. i.e. ¢1mResponse find ¢0m"¢1mCONNECT ¢0m%¢1md¢0m"
-
- ¢1mbusy ¢0mWhile dialing, if Welmat receives this response, then
- it assumes that the number was busy, and it will retry
- later.
-
- ¢1mring ¢0mIf this string is received while in answer mode,
- Welmat will send the answer string (defined above), and
- wait for another response (hopefully a connect type
- response)
-
- ¢1mline ¢0mThe detection of this response from the modem
- indicates that something is probably wrong with the
- telephone line and/or modem. Further dialing is not
- likely to be terribly productive.
-
- ¢1mmaid ¢0mThis response verb is named due to a former NC of
- fidonet 1:163/ -- he had his maid trained to reset his
- PC for him if it went awry. Other sysops may not have
- such talented help, and one would might expect a nearby
- maid to pickup a ringing data line if the computer
- doesn't respond.
-
- The short of this, is that receipt of this type of
- response means that while everything is probably okay
- here, the other end may not be quite alive. This fact
- is usually related back to the (external) scheduler so
- that it can mark a node as un-dialable after a certain
- number of tries.
-
-
- The format of the Reponse strings is one of the above
- keywords followed by a single argument string to be matched
- with sscanf(3). sscanf() is used on all the responses, so
- it is possible to do various kinds of wildcard and the
- like. Welmat provides the sscanf() call with three pointers
- to integers, the first of which becomes the baud rate in the
- case of ¢1mfind¢0m." Assignment suppression (e.g. "%*s" ) should
- be used in most cases. The author has not yet found a case
- where this type of thing was needed.
-
-
- SMARTRUN % SUBSTITUTIONS
-
-
-
-
- -14-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- In all of the places where an external command is ran,
- there are special % style substitutions that are available.
- These will be expaned as the need for them come up.
-
-
- %¢1ma ¢0mThis returns the address of the remote system.
-
-
- %¢1mb ¢0mThis is replaced by the Modem to Modem speed (As
- returned by the Response keywords in your
- configuration). If you are running a locked serial
- port it is very usefull to pass this to a BBS so that
- it can use it to calculate download times and other
- things based on the real baud rate rather than the baud
- rate your serial port is locked at.
-
-
- %¢1mB ¢0mThis returns the Modem to Computer baud rate, and is
- the rate that a BBS would actually change it's serial
- options to.
-
-
- %¢1md ¢0mThis is replaced by the active serial device name
- (Example 'Serial.device').
-
-
- %¢1mf ¢0mThis is replaced by the serial flags of the active
- device.
-
-
- %¢1ml ¢0mThis is the Welmat Line Number of the slave that ran
- the command. This is usefull if you wish to send
- commands to Welmat that would affect a certain line as
- Welmat commands are always on a 'per line' basis.
-
-
- %¢1mr ¢0mThis is replaced by the filename (As indicated by the
- remote end) when used by the WFNotify keyword for
- inbound file notification.
-
-
- %¢1mR ¢0mThis is replaced by the full pathname of a received
- file when used by the WFNotify keyword for inbound file
- notification. Note that because of possible duplicate
- names on inbound, that the 'FilePart' of this pathname
- may *NOT* be the same as is indicated by %r.
-
-
- %¢1ms ¢0mThis is replaced by the line of text that was typed in
- from the user in the LOGIN command.
-
-
- %¢1mu ¢0mThis is replaced by the unit number of the active
- serial device.
-
-
- %% This is replaced by a single percent character.
-
-
-
- -15-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- ¢1mWelmat Tools
-
-
- ¢0mThere are many different external tools that are
- available for Welmat now, and more will be made
- available in the futre. These tools all have something
- in common, and that is that they send messages to an
- already running Welmat program, and interact with it in
- some way.
-
- If you are a simple point user, you will not
- likely have a use for any of these programs. They are
- not required for the use of Welmat, but instead enhance
- the control that you have over the program if you wish
- to take advantage of this control.
-
- These tools, for the most part, make an assumption
- that you already have a copy of Welmat running. The
- exception to this is Wcompile which is used to set up
- the data file that Welmat will use when invoked.
-
-
- ¢1mWABORT
-
- ¢0mThis command has the function of requesting that
- an already running Welmat to abort. In some ways this
- has a similar function to typing a ^c (Control-C) in
- the consol window (The window you started Welmat
- from). The command takes two basic forms. The first
- form is to just run Wabort with no command line
- options.
- 9.Work:welmat> wabort
- This command will signal for Welmat to abort, and then
- it will exit with an errorlevel of 0. It does not
- actually wait for Welmat to fishish aborting before it
- continues.
- Waiting for reply
- Result 0
-
- Welmat, after receiving the command to abort, will
- exit with an error code of 40 (Abort Requested).
-
- The second form of the Wabort command is to give
- it a single command line argument. This argument is
- taken to be the Error level that you wish Welmat to
- exit with.
- 9.Work:welmat> wabort 5
- Wabort will then wait for Welmat to signal that it is
- going to Exit. This time, though, rather than just
- exiting with an error code of 0, Wabort will exit with
- the error code that Welmat would have exited with.
-
- Requesting exit code (5) 5
- Waiting for reply
- Result 40
-
- As you would expect, if Welmat was just awaiting a
- command, the error code will be 40 (Abort Requested).
-
-
- -16-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- If, however, you sent an abort command juring a
- session, the result of that session will be returned.
- This information could prove usefull to an Abort
- command that was requested within a Scheduler.
-
- Welmat, again being given a request to Abort, will
- now abort with the given error code. In my example,
- Welmat would exit with an error code of 5.
-
- This exchanging of Error levels can become quite
- usefull within scripts. If one treats the error codes
- as Events, rather than errors, one could easily write a
- script that can easily use this information. Here is
- an example (I myself use REXX, but any scripting
- language that lets you branch on error returns will do
- the same job)
-
- /* Welmat V0.43+ Consol Script */
-
- options results
-
- DO FOREVER
- address command 'welmat'
- welerr = RC
- say "Welmat returned with Error Code " welerr
- if welerr = 15 then leave
-
- if welerr = 55 then do
- address command 'azcomm'
- end
-
- if welerr = 69 then do
- address command 'uucico -r1'
- end end
-
- Say "That's all for now folks "
-
- /* End of REXX Example */
-
- In my example, I check for 3 different error
- returns, and do three different things depending on
- that error code.
-
- Error code 15 is the error code that Welmat will
- return with if you hit a Control-C (^c) in the consol
- window. If I eithor do a 'Wabort 15', or hit a
- control-C, I want to exit the script (leave in REXX
- will cause the script to exit outside of the main
- loop).
-
- Error Code 55 is the return that I use if I want
- to run my Terminal package. So, if I want to log onto
- a Local BBS, I just type 'Wabort 55' in a CLI window,
- and my terminal package comes up.
-
- Error Code 69 is used in order to do a UUCP call.
- In a CRON script, someone could run 'Wabort 69', and
- this would cause Welmat to exit, Run UUCICO to send any
-
-
- -17-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- out-standing UUCP mail, and then automatically bring
- Welmat back up.
-
-
-
- ¢1mWCOMPILE
-
- ¢0mWcompile takes four different forms:
-
- 1) wcompile ?
- 2) wcompile
- 3) wcompile <config file> <data File>
- 4) wcompile -C <config file>
-
- Wcompile will basically take a text config file,
- and transform it into a data file that Welmat will use
- directly. By default, wcompile will use the filename
- 'Welmat.cfg' as it's config file, and Welmat.data as
- it's Data file. If the config file is not given
- directly, the file 'Welmat.cfg' will first be looked
- for in the current directory. If it is not there, it
- will tell you it could not find the file. The data
- file is put in the current directory, or into whatever
- filename is pointed to by <data file> if you give the
- command both arguments.
-
- The '?' option will list out all the commands that
- may be placed within a configuration file.
-
- A config file is basically a TEXT file that can be
- created with any text editor. The Keywords contained
- within this config file are explained in another part
- of the manual. One thing to make sure is that the last
- line of the file actually has a 'LineFeed' on it. Some
- text editors don't properly terminate the file, and you
- must leave a Blank or Comment line at the end of the
- file.
-
- The Data file is a binary representation of the
- config file, and is actually a 'Welmat Program'. Making
- this file a program, rather than just a simple
- structure, allows for quite a bit more configurability
- than what would traditionally be able to be found in a
- configuration file. An example would be for a point to
- put a 'Call' event into the Config file so that one
- would be able to just type 'Welmat' and it would
- automatically call the Bossnode, and pick up the mail.
- The Current Wcompile program does not generate code for
- such an event , but this type of thing could easily be
- done eithor in the future, or by a third party author.
-
-
-
- ¢1mWCTL
-
-
- ¢0mWhile previous (And versions after) will allow for
- line parameters and global parameters to be changed,
-
-
- -18-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- there are problems with this and this version of WCTL
- does not allow for this.
-
-
-
- -¢1mcall 1¢0m:¢1m1¢0m/¢1m1¢0m.¢1m1 ¢0mA call statement will cause welmat to
- dial the node given. Welmat will first attempt to
- look up the node in the nodelist (If provided),
- and will then use any additional information given
- in the call statement. Any of the call parameters
- can be used in association with a CALL statement.
- Here is a simple example:
-
- 1> Wctl -call 1:163/115 -inbound
- work:andrew/inbound -number 867-5309
- -password babe
-
-
- This statement would set up CALL where the
- inbound directory, the phone number, and the
- session password are defined. Welmat would dial
- the number 867-5309, and if a session occured,
- would use the password 'babe', and send all the
- files destined for noed 1:163/115. If any inbound
- files were received, these would be placed into
- 'Work:andrew/inbound'. Please note: These
- parameters are call specific. You can have
- several calls, and have a different Phone number,
- password, inbound directory, etc for EACH separate
- call.
-
-
- -¢1mnoWait ¢0mThis keyword sets up a flag to say that WCTL
- will not wait for the result of the command, and
- will instead return a 'Welmat Program ID'.
-
-
- -¢1mpoll 1¢0m:¢1m1¢0m/¢1m1¢0m.¢1m1 ¢0mA POLL is essentially the same as CALL,
- but unlike with a call, wctl will not wait for the
- result of the command it sent to Welmat. This is
- very usefull if you want to set Welmat to do a
- task, but don't care about the outcome. When you
- send a POLL to welmat, it will continue to execute
- the POLL until it has completed without errors
- (Result 0 from the session). Here is an example"
-
- 1> Wctl -poll 1:163/109 -poll 1:163/138 -poll
- 1:163/99
-
- This would send three individual call
- commands to Welmat. It would then one by one
- attempt to call these three sites. If it dialed
- 1:163/109 and it was BUSY, the call command would
- not be complete, and it would try again later. If
- it called 1:163/138 and did a complete session, it
- would no longer call that node, but would continue
- with the remaining 2 nodes until each of them had
- completed a successfull session.
-
-
- -19-
-
-
- WELMAT Reference Manual Version 0.47
-
-
-
-
- -¢1mthere ¢0mThis keyword tests if Welmat is there, and
- returns 0 if Welmat is already running, or a non-0
- value if it is not running.
-
-
- -¢1museline ¢0mThis keyword sets up the default line for
- call events. The default of line -1 means to try
- the first available line.
-
-
- -¢1mWait ¢0mSynonym for -YesWait
-
-
- -¢1myesWait ¢0mThis keyword sets up a flag to say that WCTL
- will wait for the result of the command, and
- return this as the result code for WCTL.
-
-
-
-
- Call Parameters
-
-
- -¢1mComment ¢0m<¢1mstring¢0m> A comment which is displayed on the
- CLI window that welmat was ran from when this
- welmat program is ran.
-
-
- -¢1mWFNotify ¢0m<¢1mstring¢0m> Sets the program to run after the
- receipt of an inbound file. As well as the
- standard '%' style substitutions, '%r' is the
- filename as it was identified from the remote end,
- and '%R' is the actual full pathname to the file
- on the disk.
-
-
- -¢1mSysop ¢0m<¢1mstring¢0m> Sets the 'Sysop' name to be used in
- the YooHoo handshake.
-
-
- -¢1mSystem ¢0m<¢1mstring¢0m> Sets the name the system identifies
- itself as in the YooHoo handshake.
-
-
- -¢1mMaxSendPri ¢0mSynonym for MaxPri.
-
-
- -¢1mMinSendPri ¢0m<¢1mNumber¢0m> Synonym for MinPri.
-
-
- -¢1mLogWindow ¢0m<¢1mstring¢0m> Sets the filehandle for a log
- window.
-
-
- -¢1mPreRun ¢0m<¢1mstring¢0m> This is the program to run after
- getting connected but before the optional Fidonet
-
-
- -20-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- session. All the standard SmartRun '%' style
- substitutions apply.
-
-
- -¢1mPostRun ¢0m<¢1mstring¢0m> ¢1mThis ¢0msession. All the standard
- SmartRun '%' substitutions apply.
-
-
- -¢1mMaxPri ¢0m<¢1mNumber¢0m> ¢1msets ¢0ma priority higher than this
- number will not actually be sent. This is usually
- set to +128 to allow all files to be sent.
-
-
- -¢1mMinPri ¢0m<¢1mNumber¢0m> Minimum priority to send a file.
- Files below this number will not be sent. Valid
- values are -128 to +127. One would usually set
- this to -127 as the default in the config, and
- then set it to some higher value (I personally use
- 0) when dialing out. If 0 is used, positive
- numbers become similar to the concept of 'Crash'
- and negative numbers are similar to the concept of
- HOLD.
-
-
- -¢1mNoFreq¢0m|-¢1mYesFreq ¢0mSets up whether the bit in the
- YooHoo header will show that we allow File
- requests or not.
-
-
- -¢1mNoFido¢0m|-¢1mYesFido ¢0mSets whether a fidonet session will
- actually occur. This is usefull when you wish to
- just use the PreRun or PostRun keywords and have
- welmat dial on behalf of another program (Such as
- is done with UUCP outbound calls currently).
-
-
- -¢1mNozedzap¢0m|-¢1mYeszedzap ¢0mSets whether we wish to allow
- ZedZap transfers under the YooHoo header (doesn't
- currently do anything).
-
-
- -¢1mNoFTS7¢0m|-¢1mYesFTS7 ¢0msets whether we wish to use FTS-0007
- (SeaLink) style transfers.
-
-
- -¢1mnumber ¢0m<¢1mnumber¢0m> Sets the phone number for this
- call.
-
-
- -¢1mpasswd ¢0m<¢1mPASSWD¢0m> Synonym for -password
-
-
- -¢1mpassword ¢0m<¢1mPASSWD¢0m> Sets the password for this call.
-
-
- -¢1mnopickup¢0m|-¢1myespickup ¢0mSets whether we want to pickup
- files, or whether we just want to send and then
- hang up.
-
-
- -21-
-
-
- WELMAT Reference Manual Version 0.47
-
-
-
-
- -¢1mnoreq¢0m|-¢1myesreq ¢0mSets whether we will attempt to send
- any file requests we have pending for the site we
- are calling.
-
-
- -¢1mnoWaZoo¢0m|-¢1myesWaZoo ¢0mSets whether we should try to use
- the WaZoo handshake (YooHoo) when calling.
-
-
- -¢1mhost 1¢0m:¢1m1¢0m/¢1m1¢0m.¢1m1 ¢0mChanges the address we identify
- ourselves as.
-
-
- -¢1minbound ¢0m<¢1mdir¢0m> Changes the inbound directory.
-
-
- -¢1moutbound ¢0m<¢1mdir¢0m> Changes the Outbound directory (Use
- this one with Caution. It is often best to always
- use the same outbound directory for all
- sessions).
-
-
- -¢1mDisplayLogLevel ¢0m<¢1mlevel¢0m> Synonym for displaylevel.
-
-
- -¢1mLogFileLevel ¢0m<¢1mlevel¢0m> Synonym for -loglevel
-
-
- -¢1mloglevel ¢0m<¢1mlevel¢0m> Change the output file log level.
-
-
- -¢1mdisplaylevel ¢0m<¢1mlevel¢0m> Change the level of output on
- our screen.
-
-
- -¢1mstatuslevel ¢0m<¢1mlevel¢0m> Change the level of output for
- the slave window.
-
-
- -¢1mlogfile ¢0m<¢1mfile¢0m> Change the LogFile name.
-
-
- -¢1mlogfile ¢0m<¢1mlevel¢0m> Change the level of output for the
- log window.
-
- ERROR CODES
-
- The various tools return error codes to indicate
- their relative success. These will be
- standardized more in the future, but a preliminary
- list is as follows:
-
- 0 - OK
- 1 - No Call
- 2 - Human
- 3 - Login
-
-
- -22-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- 5 - Busy Signal Detected on Call.
- 10 - Bad Session
- 15 - Bad Line.
- 20 - Not There
- 35 - Bad Configuration.
- 40 - Aborted
-
-
- ¢1mWNotify
-
- ¢0mWNotify <Config> <Filename> <FullPath> <NodeName>
- <Line>
-
-
- As well as the above, WNotify will output a bit of
- logging to the standard output that is best to redirect
- to a logfile. As an example of how to set it up for
- use within Welmat, the following command is used inside
- of a 'SessionInit/EndSessionInit' block in the config
- file:
-
- ¢1mWFNotify ¢0m"¢1mrun welmat¢0m:¢1mbin¢0m/¢1mwnotify ¢0m>>¢1mwelmat¢0m:¢1mreq¢0m.¢1mlog
- welmat¢0m:¢1mwnotify¢0m.¢1mcfg ¢0m%¢1mr ¢0m%¢1mR ¢0m\"%¢1ma¢0m\" %¢1ml¢0m"
-
-
- WNotify is a very simple program that will take
- the filename given to it on the command line and will
- run other programs depending on a series of patterns
- given to if in the config file. Here is an example
- config file:
-
- #?.¢1mreq ¢0m#¢1mwelmat¢0m:¢1mlist¢0m/¢1mokfile¢0m.¢1mls welmat¢0m:¢1mlist¢0m/¢1mFailREQ¢0m.¢1mTxt
- ¢0m#? ¢1mfilenote ¢0m%¢1mR ¢0m"¢1mFile¢0m:%¢1mr From¢0m:%¢1ma Line¢0m:%¢1ml¢0m"
- ;#?.¢1mpkt run sys¢0m:¢1mrexxc¢0m/¢1mrx ¢0m"¢1maddress ¢0m'¢1mConfMail¢0m' '¢1mTOSSPKT
- ¢0m%¢1mR¢0m'"
- ;#?.(¢1mMO¢0m?|¢1mTU¢0m?|¢1mWE¢0m?|¢1mTH¢0m?| ¢1mrun sys¢0m:¢1mrexxc¢0m/¢1mrx
- ¢0m"¢1maddress ¢0m'¢1mConfMail¢0m' '¢1mTOSSARC ¢0m%¢1mR¢0m'"
- ; ¢1mThis is a comment
-
-
- ¢0mThe patterns are any that are allowable in
- AmigaDos 2.04 (1.3 users cannot use patterns and must
- use hard-coded names). The second argument on the line
- is the command to run.
-
- If the command starts with a '#' symbol, this
- instead of running the command does the internal file
- request handling. In this mode the first argument
- given is the name of a text file that will have lines
- of the form "<Filename> <Pathname>", and the second
- argument is the name of the file to send if the
- requested file could not be found.
-
- Special '%' style substitutions are available on
- the command line for commands to be ran:
-
- %r - Filename
- %R - Pathname
-
-
- -23-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- %a - Address
- %l - Line Number
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -24-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- ¢1mFlow Tools
-
- ¢0mFlow.library will soon be replaced by a more easily
- used library called XferQ.library. The next release of
- Welmat will likely include replacements for all the
- Flow tools that access the new XferQ.libary. As has
- been mentioned elsewhere, though, XferQ.library
- requires the AmigaDos System software version 2.04 or
- greater, so the old FlowToys version 2.3 will likely
- still need to be used by AmigaDos 1.3 users.
-
-
- ¢1mFLOADD ¢0m- Usage: [-absolute] [-Ooutbound] [file ...]
-
-
- ¢1mFLOEDIT ¢0m- Usage: floedit [-Ooutbound] [-Zzone] node
-
-
- ¢1mFLOLIST ¢0m- Usage: flolist [-verbose] [-terse] [-Ooutbound]
-
-
- ¢1mOUTADD ¢0m- Usage: outadd [-Ooutbound] [-Z1] [-Dscandir]
- [-Pnet=node] [file ...]
-
-
- The previous versions of Welmat included version 4.2 of
- Flow.library which included the ability to use two programs
- called UnFlow and ReFlow which were specific to that version
- of the library. The version of Flow.Library distributed
- with this release of Welmat is version 4.3 and contains some
- significant changes:
-
- a) Unlike the old version, Version 4.3 does not allow
- the use of UnFlow and ReFlow, and does not attempt to read
- the old 2 dimensional '.FLO' files itself. Instead, a
- library called RexxFlow.library, and many example scripts
- have been made available that will do this type of
- conversion. If you need this type of conversion to be done
- inside of the library, please keep your OLD version of
- Flow.Library as was distributed with Welmat version 0.44.
-
- b) Within the old Flow.library there was a confusion
- between the concept of 'cost' (Where the lowest cost file
- would be sent first) and the concept of priority (where the
- highest priority file would be sent first). This has been
- cleaned up in that the entire library makes use of the
- concept of priority. Priority are numbers between -127 and
- +128 where the higher the number, the more likely a file is
- to be sent. I have set up my own system so that files that
- positive priorities are similar to the concept of 'Crash'
- within fidonet, and the negative priorities are similar to
- the concept of 'HOLD'. Examples are given elsewhere in the
- manual, and in the sample config files.
-
-
-
-
-
-
-
- -25-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- ¢1mWelmat Scripts
-
-
- ¢0mWith the advent of the newest version of AmigaDos,
- version 2.0, REXX will become the standard scripting
- language on the Amiga. One of the basic functions of REXX is
- to provide a command line to a running program, and allow
- you to interact with this program.
-
- This just happens to be one of the basic design ideas
- of Welmat as well. With Welmat, though, it's author did not
- want to Require REXX in order to send commands to the main
- program. Also, since there is no real way to know what
- every user will wish to send to Welmat, a complete command
- line interface was not implemented within Welmat. Instead,
- the ability to send a ¢1mWelmat Program ¢0mto Welmat was adopted.
- In this way you could very easily interact with Welmat no
- matter what scripting language you choose to use.
-
- Most of the basic functions that one would want to have
- Welmat do are still accessable through a command line with
- the use of some of the external programs supplied with
- welmat. With the basic two programs, Wabort and Wctl you
- can construct scripts that do exactly the same functions as
- scripts generated for any other mailer.Basically, set your
- host to 'COMMAND' (EG: ¢1mAddress ¢0m'¢1mCOMMAND¢0m' ) and then make use
- of the various Welmat tools. The result of these programs
- are then returned to you in the special REXX variable 'RC'.
- Various examples have been given throughout this manual
- showing different ways to access Welmat through REXX.
-
-
- One does not have to know REXX in order to write
- scripts that would be able to control Welmat. All the
- current Welmat tools all take a normal command line, and
- return an error code using the normal AmigaDos methods. One
- could very easily write their scripts using AmigaShell,
- ArpShell, or if they need more complicated scripts, they can
- use CShell (Such as Robert Williamson has done with the
- series of scripts that he calles 'ROOF' - You might want to
- file request these as an example of some shell scripts).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -26-
-
-
- WELMAT Reference Manual Version 0.47
-
-
-
-
- ¢1mBBS and other Logins
-
-
-
- ¢0mWelmat currently uses two different ways to allow a
- Bulletin Board to be ran when Welmat answers the phone. In
- this mode, Welmat would be considered a Front End mailer,
- and acts as a negotiater to determin whether the caller
- wishes to use Fidonet, or whether it is a caller that wishes
- to use the BBS. Each method requires two keywords: One to
- turn the function on, and another to set up it's
- parameters. These keywords are all part of the modem
- configuration section (IE: They are placed between the
- Modem/ModemEnd keywords) and are specific to a specific
- line. Please also note that one could very easily use both
- methods at the same time, ulthough if you have the LOGIN set
- up, it would be easiest to just have the BBS set up as one
- of the accounts for the LOGIN.
-
-
- The first method is the most familiar method. When a
- user calls, he can be instructed to hit his <ESCAPE> key
- twice to enter the BBS. If this is the method that you wish
- to use, you would enter the following keywords:
-
- YesBBS
- BBSExecute <Command to run>
-
-
- YesBBS is a flag that lets welmat know that you wish
- to use the BBSExecute command, and wish welmat to check
- for the ¢3mescape ¢0mkey to be pressed. The escape key must be
- hit twice consecutively (IE: No other keys in between) for
- this action to be taken. This avoids possible problems
- with line noise. The BBSExecute keyword sets up the
- command that will be run when the user types in the escape
- key. Many different '%' style substitutions are possible,
- and these are all outlines in the section 'SmartRun' as
- they are common to the entire of Welmat. With the
- BBSExecute, Welmat will automatically hang up on the
- caller and wait for the next call. Here is an example:
-
- YesBBS
- BBSExecute "bbs -B%B -b%b -d%d -u%u"
- This would execute "BBS -B<Modem-Modem Baud>
- -b<computer-Modem baud> -d<device> -u<unit>" when the user
- hits the escape key. This is the method used by quite a
- few BBS's.
-
- Remember that this is line specific. If you are
- running your BBS on more than one phone line, you will
- want to specify eithor the line number, or the device and
- unit for the particular line. If you run a multi-line
- Welmat system, but run a single-line BBS it is your own
- responsibility to make sure that things only run on a
- single line.
-
-
- -27-
-
-
- WELMAT Reference Manual Version 0.47
-
-
-
-
- The second way to deal with callers would be to use
- the Unix-Like GETTY function of Welmat. Under unix, there
- is a command called 'Getty' (Get TTY) which will basically
- answer an incoming call, send them a simple banner, and
- collect a single line of input. This line of text would
- then be sent to a program called 'Login'. The login
- command would then ask for a password (If required) and
- eithor allow the user access to the system, or return back
- to the GETTY to have the user type in their user name
- again. Since the Login program can return more than once,
- the existance of a carrier, or a return result code of 0
- is used to determin whether Welmat should wait for another
- call, or should present the caller with the banner. It is
- then partly the responsibility of the Login program to
- hang up after a successful call.
-
- Welmat has a function that does exactly the same
- thing, and I myself have implemented a login program that
- is a derivative of the 'GETTY' program that was supplied
- with Matt Dillon's UUCP package. After answering the
- call, Welmat will be listening for characters to be
- received from the Modem. If a YoHoo (Fidonet) or TSYNCH
- (FTS-0001 session) is received, it will do a session with
- the mailer. If an Escape is received, and YesBBS is
- active, the BBS will be ran. All other printable
- characters are accepted, and put into a Line buffer. When
- the user then hits return, Welmat will then run the Login
- command, and one of the arguments will be this line of
- input that the user had typed in. Here would be an
- example of the commands required:
-
- WelcomeMessage "\r\nAmigaTronix Line 1\r\nTHERE IS NO
- BBS HERE!\r\nDo not Login:"
- Login "uucp:c/login -asdg -D%d -U%u \"%s\""
- YesLogin
-
- As you can see, the WelcomeMessage includes the text 'ogin:'
- which is the standard text that any UUCP site would be
- looking for (Please read the documentation on Send-Expect
- scripts in the UUCP documentation). After the line has been
- accepted (The user hit return) the Login command would be
- run. The login command currently takes 1 required argument
- (The user name) and also has a few optional keywords.
-
-
- -¢1mA¢0m[¢1msdg¢0m] is used if you are using an ASDG duel serial
- board. This keyword is required as the Login program must
- be able to hang up after a caller is finished. If this
- keyword is not included, it is assumes that the system is
- using the serial.device and will handle the internal DTR
- directly.
-
- -¢1mb¢0m[¢1maud¢0m] is used if you wish to pass the Modem<-->Modem
- baud rate to login. This is used for the '%B' substitution
- within command lines in the password file.
-
-
-
- -28-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- -¢1mL¢0m[¢1mower¢0m] is used to force all the login names typed to
- lower case. This is required if you wish to have the login
- names case-insensitive. One would then have all the login
- names in lower case in the password file. Please note that
- the passwords themselves are still case sensitive.
-
- -¢1mD¢0m<¢1mdevice¢0m> is used to specify the device. The default
- is "serial.device".
-
- -¢1mU¢0m<¢1munit¢0m> is used to specify the unit number. The
- default is unit 0.
-
- -¢1mO¢0m<¢1mlog path¢0m> is used to specify the output LogFile
- name. Under AmigaUUCP this would normally be
- UUSPOOL:LOGFILE. The default is unit login.log in the
- current directory.
-
- -¢1mP¢0m<¢1mpasswd path¢0m> is used to specify the pathname of the
- password file. Under AmigaUUCP this would normally be
- UULIB:PASSWD. The default is PASSWD in the current
- directory.
-
-
-
- The only required parameter is the single line of text
- that the user typed in as it was accepted by Welmat. In my
- example, I use quotation marks since the user might have
- typed a space in his user name. As you will also notice,
- the quotation marks have to be preceeded by a Slash '\'
- character. This is because a quotation within the config
- file would normally end the string. Since we want ¢1mWcompile
- ¢0mto actually include the quotation mark, we must escape the
- special meaning of those quotes.
-
- As mentioned, the Login program is a direct derivative
- of the Getty program supplied with the Amiga UUCP. There are
- some very small differences in the ¢1muulib¢0m:¢1mpasswd ¢0mfile from
- the released information. The file has the following form:
-
- User ,Password ,Uid ,GroupId ,(Finger-Info) ,Home-Dir
- ,Command-To-Run
-
-
- ¢1mUser ¢0muser name, up to 8 characters. With the current
- version of Login, if you are running AmigaDos 2.0, the
- User field may contain an AmigaDos pattern (Just like
- with Filenames).
-
- ¢1mPassword ¢0mpassword, up to 8 characters (uncrypted for
- now). A password of '*' means that no password will be
- prompted for. A password of '**' would cause the
- password to be asked for, but not actually checked (For
- use for things like Anonymous Logins/etc).
-
- ¢1mUid ¢0munique numerical id (don't use 0 please), this WILL be
- used by some programs to find password entries. Give
- each entry a different UID.
-
-
-
- -29-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- ¢1mGroupId ¢0mnot currently used, set to 2 (don't use 0).
-
- ¢1mFinger ¢0mFinger information (your name). Future sub fields
- within the finger information will be separated by
- colons (:).
-
- ¢1mHome¢0m-¢1mDir ¢0mDirectory from which to run the command
-
- ¢1mCommand ¢0mCommand to run. Command is run with arguments you
- specify plus:
-
- -GETTY -DEVICE devicename -UNIT unitname
-
- Where the devicename and unitname together make up a
- serial port which the command should use for further
- communications. stdin and stdout are set to NULL:, as
- is the console handler.
-
- If you place a few special characters in front of
- the Command-To-Run, special things will happen.
-
- If command-to-run is prefaced with a '*' Login
- will open the UUSER: device for stdin and stdout and a
- read-timeout of 1 second. The UUSER: handler is
- supplied with Amiga UUCP.
-
- If you preface the command with a '$' , the Login
- will not hang up on the caller after the command
- returns.
-
- If a '<' is used, the command is taken to be the
- filename of a text file to display to the user.
-
- If you preface the command with a '#' , Login
- will NOT do any re-direction, and will just send the
- command line exactly as it is given in the Password
- file. This mode is included to allow BBS users to
- create their own command line that might be
- in-compatable with ones automatically created.
-
- Please note that any combination of the above
- special characters can be used.
-
-
- ¢1mSpecial Command¢0m-¢1mLine Substitutions¢0m.
-
- Login supports substituting various information
- anywhere in the command string to allow one to create
- their own command lines. All the substitutions are
- specified by using a '%' followed by a character. The
- following subsitutions are currently supported:
-
- %b - Baudrate of connection (Modem<-->Computer).
- %B - Baudrate of caller (Modem<-->Modem).
- %l - Login Name (What the user typed).
- %f - Serial Flags.
- %p - Password typed in by user.
- %s - Serial Device (EG: serial.device).
-
-
- -30-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- %u - Unit number.
-
-
- Here are a few example entries:
- # Put any comment here
- #
- # User,Password,Uid,GroupId,Finger-Info,Home-Dir,
- ommand-To-Run
- info,*,100,3,Display Info File,ram:,<uulib:Info-Text
- ; This will display a text file to the user.
- user,*,105,3,USER Login,uucp:pub/,$*uucp:c/rshell Unknown
- 0
- ; this would allow the user to log into the Restricted
- Shell.
- bye,*,106,3,exit,ram:,*uucp:empty
- ; This would just hang up on the caller (uucp:empty is an
- empty script)
- bbs,*,1,3,BBS,bbs:,#bbs:c/MyFancyBBS %b -DEVICE %d -UNIT
- %u
- TransAmiga,*,69,69,(TransAmiga BBS),SYS:,#TA:TransAmiga
- Trans.Config %b
- TransFast,*,69,69,(TransAmiga w/ LOCK),SYS:,#TA:TransAmiga
- Trans.Config %B %b
- ;
- ; TA:TransAmiga Trans.Config 38400 2400
- ; ^^^^^ ^^^^
- ; serial real
- uujulie,mikepass,204,3,UUCP-JULIE,ram:,uucp:c/u cico
- ; this would allow Julie to log in to do a uucp session.
- #? #?,*,2,3,Firstname Lastname,uulib:,<SpaceInName
- ; *AmigaDos 2.0 Only* this would display the text file
- "uulib:spaceinname" if a username with at least one space
- character was typed.
- test,*,100,100,(test),c:,#echo >t:a "baud=%b %B ser=%s
- unit=%u flag=%f Name=%l Pas=%p"
- test1,**,100,100,(test),c:,#echo >t:a "baud=%b %B ser=%s
- unit=%u flag=%f Name=%l Pas=%p"
-
-
-
- Again, for full documentation on the Amiga UUCP
- package, please consult the documentation supplied with
- these packages. The use of the Login command is not
- limited to just UUCP itself. One could very easily set
- up an 'account' called BBS that would run the BBS. It
- could also very easily set up more than one BBS package
- at the same time, and allow the users to choose which
- BBS they wish to log into.
-
- Notes: Login uses a few handlers that should be
- mentioned. A handler called 'NULL:' (Different from
- NIL:) must be mounted (This handler is available from
- 1:163/109 as 'NULL.ZOO'), and if you wish to use the
- '*' special character for the command, you must have
- the 'UUSER:' handler mounted.(In the future this will
- make use of the FIFO: and fifo.library instead.)
-
-
-
-
- -31-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- ¢1mFuture
-
-
- ¢0mWhile Welmat started out as a simple solution to a
- simple problem (The port of BinkleyTerm for the Amiga), it
- has grown to be one of the best mailers available for any
- computer. Welmat has also become an example of a program
- that takes advantage of the operating system that it is used
- within.
-
- Since networks are an ever expanding area of study, as
- well as the Amiga operating system itself being expanded,
- Welmat will be a program that will follow the trends of
- these two expanding fields. The future will hold some very
- interesting enhancements.
-
- Most of the shared libraries used by the various
- network software will have REXX support added to them. As
- an example, a simple RexxFlow.library was written by David
- Jones to facilitate the use of REXX to work with the
- outbound queue. The future library, XferQ.library, has
- direct REXX support within it and will make this even
- easier.
-
- There are many other ideas that are being shuffled
- around, and things will be very drastically changing in the
- near future (Which is why this release has been made). If
- you wish to have input on these changes, or just want to
- watch what is going on, please read the message echo
- 'WELMAT'.
-
-
- ¢1mOther Related Files
-
-
- ¢0mSince Welmat is a program that allows other authors to
- write tools for it, there will always be software and
- information available for use with Welmat that is not sent
- out with the distribution itself. Also, as software is
- always being updated, even some of the tools that are
- supplied with welmat may have been updated since you
- received the welmat binary itself.
-
- Also, as Welmat is licensed under the GNU public
- licence, Source code is available. The source to Welmat is
- quite large, so it will not likely ever be made file
- requestable from any site. Instead, the author wishes any
- interested parties to send off a SASE with a Disk, and it
- will be returned with the current source code.
-
-
- Here is a current list of files that are directly
- related to welmat. All are file requestable from
- 1:1/109(V.32Bis) and 163/109(2400bps) as well as quite a few
- other sites.
-
- WELMAT List of Welmat related files available for request.
- WELMAT.REL Latest release of WelMat. WELMAT.TEST Latest
-
-
- -32-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- test version of Welmat.
-
- Documentation:
-
- FTS-0001.A15 Basic FidoNet Technical Standard (v014), R Bush
- FTS-0006.A02 YooHoo session negotiation Protocol, V
- Perriello
- FSC-0011.ZOO Experiences/corrections to FSC-0001, B Hartman
- GNULIC2.LZH GNU Public License V2.0
- Programs:
-
- PLST160.ZOO Amiga Parselist V 1.60
- LOGIN Magic filename that returns the latest version of the
- LOGIN program
- for use with Welmat.
- FLOTOY23.LZH Release 2.3 of flow library toys
- FLOSRC23.ZOO Source release 2.3 of flow library
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -33-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- ¢1mAcknowledgements
-
- ¢0mAmiga and AmigaDOS are trademarks of Commodore-Amiga, Inc.
- Amiga Parselist ported by Jon Radof - Updates by Todd
- Kover.
- Amiga UUCP 0.40 by William Loftas.
- ARexx by William S. Hawes.
- BinkleyTerm by Alan Applegate, Bob Hartman and Vince
- Perriello.
- BinkleyTerm Amiga ported by Juergen Herman.
- Confmail origionally ported by Juergen Herman. Updates by
- Steve Palm, Greg Block and Russell McOrmond.
- Fido and FidoNet are trademarks of Tom Jennings.
- Igen is a Nodelist processor by Todd Kover.
- JBund.REXX is a script by James McOrmond.
- Juliet is a Point package by Gregory Kritsch
- Login by Russell McOrmond, adapted from sources within UUCP
- 1.03D
- SoundTrack by RUSH, the Greatest band ever.
- SEAlink and SEAdog are trademarks of System Enhancement
- Associates.
- Spiritual support by James Sutton.
- TransAmiga is a BBS package by Tim Aston á1:247/117.5
- TrapDoor is by Maximilian Hantsch and Martin Laubach.
- UUCP 1.03D,1.06D by Matthew Dillon.
- XferQ (xferq.library) is a shared library by David Jones
- á1:163/109.8
- WaZoo handshake by Wynn Wagner.
- 4-D BBS is a Bulletin Board by Dale E. Reed Jr. á1:346/24.0
-
-
- Alpha Test Team
-
- While versions of Welmat have always been made
- available to anyone that wanted to get ahold of them, there
- has always been a group of people that have been involved
- with testing new releases of Welmat that are sent into the
- WELMAT file echo. This group of people are :
-
- Robert Williamson @ 1:167/104
- James Atwill @ 1:163/109.36
- James McOrmond @ 1:224/140.0
-
-
- ¢1mAUTHOR
-
- ¢0mMichael Richardson is the original Author of Welmat, and
- continuing work on this CopyLeft project done by Russell
- McOrmond. This documentation has been put together by
- Russell McOrmond.
-
-
- ¢1mAmigaTronix Authors
-
- ¢0mThere is a group of Authors that are involved in writing
- Networking software for the Amiga comminity. Various group
- efforts, as well as personal developments have been
- accomplished. I wish to thank all these authors for their
-
-
- -34-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- continuing efforts:
-
- David Jones
- 6730 Tooney Drive
- Orleans, Ont.
- K1C 6R4
-
- FIDO: David Jones@ 1:163/109.8
- NET: dej@qpoint.Amiga.OCUnix.On.Ca
-
- ++++++++++++++++++++++++++
- Todd Kover
-
- Fido: Todd Kover @ 1:261/5016.0
- Net: kovertwam.umd.edu
-
- ++++++++++++++++++++++++++
- Gregory Kritsch
-
- NET: ggk@tirith.OCUnix.On.Ca
-
- ++++++++++++++++++++++++++
-
- Russell McOrmond
- 646 O'connor St
- Ottawa ON
- K1S 3R8
- (613) 235-3287
-
- FIDO: Russell McOrmond@ 1:163/109
- NET: rwm@atronx.OCUnix.On.Ca
-
- ++++++++++++++++++++++++++
- Rick Morrow
-
- FIDO: Rick Morrow@ 1:163/109.31
- NET: rsm@delfax.Amiga.OCUnix.On.Ca
-
- ++++++++++++++++++++++++++
- Michael Richardson
- 303 Bell Street South
- Ottawa, ON
- K1S 2J9
- data: (613) 237-0792
-
- or
-
- 148 Fourth Avenue
- Ottawa ON
- K1S 2L4
- (This is his Mothers Residence, and is less likely to
- change than Michael's own address)
-
- NET: mcr@sandelman.OCUnix.on.ca
-
-
-
-
-
-
- -35-
-
-
- WELMAT Reference Manual Version 0.47
-
-
- The reason for all these addresses: If you get this we
- would really like you to let us know that you are using
- Welmat. There is no official 'Registration Fee' for Welmat,
- but any donations that would go towards paying for the time
- to write improvements are always greatly appreciated. None
- of this would be possible without the help of all these
- authors so please support them in any way you can so that
- development will always continue. Whether you are able to
- donate or not, please let us know you are using the software
- so that we can work towards meeting the needs of the users
- of the software.
-
-
- ¢1mWelmat Support
-
- ¢0mA support echo `WELMAT' is available on the Fidonet
- backbone, and a file echo exists for the distribution of
- pre-release documentation or binaries that is sent currently
- via 1:232/301 and will likely be made available on other ADS
- sites as well. Announcement of new versions will be made in
- WELMAT and AMY_POINT, and will be made available via the
- ADS. (ADSFIDO). The official support site for WELMAT, and
- where any pre-release versions, or special versions will be
- made available is Fidonet node 1:1/109(V.32Bis) (AKA:
- 1:163/109 (2400bps currently)). If you have any specific
- questions, please address mail to myself, as I have become
- the primary support person for Welmat.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -36-
-
-