PE1CHL.901215: When the AX.25 forwarder receives a NO reply when sending a message, it is returned to the sender and the forwarder skips past the 'b' command. This allows bulletin forwarding to boxes that allow abbreviated forwarding. The SID string has to be sent explicitly. The new command 'f' in the forwarder script allows reverse forwarding. A string to request reverse forwarding can follow the 'f', the default is "F>". Example of a script to forward to MBL/RLI boxes using abbreviated forwarding: c 430 pi8utr connect the mailbox w> await the > prompt s[NET-H$] send SID r> next line must be > prompt l loopback point mS%s %s@%s < %.6s $%.12s send a mail or bulletin rOK response must be OK u%s send subject b send body w> await the > prompt n send next mail (if any) from loopback point f request reverse forward 871225.33.PE1CHL.900807: Fixed a problem in the AX.25 forwarder: when no "r" or "w" line was present in the script after "m" "u" or "b", the forwarder did not proceed. Therefore it was impossible to forward to mailboxes that do not prompt for the subject and/or the message, or don't send a CR after such prompts. This is now fixed, and the following script works: # forward test to personal mailbox c 430 pe1chl-15 w> # now we are connected, send each mail l mS%.0s %s u%s b rOK w> n This sends the S command, the subject, and the entire message in one go, and then checks for a response containing "OK". For more detail about forwarding scripts see the explanation further down this file. The forwarder now concatenates multiple lines from the message into a single packet, whenever the total length of these lines is below paclen, except when the effective window (maxframe) is less than 2. 871225.33.PE1CHL.900519: "watchdog" command now also installed in PC version. It can only drive an external watchdog timer. The syntax of the watchdog command is: watchdog [ ] When specified, the and select the output port to be used for the watchdog. The value is OR-ed to the value read (input) from the port, and this value is output to the port. Some time later the value is complemented and AND-ed to the port value. The result should be that one or more output bits toggle at each pass through the main loop. The watchdog triggering can be stopped by specification of a zero . 871225.33.PE1CHL.900211: Added forwarding from NET to RLI/MBL-style mailboxes and personal maildrops. This is kind of a hack, as several conversions have to be made on SMTP mail addresses and headers. The feature operates as follows: When mail must be sent to a host, a check is made if the hostname is of the form .bbs, and if a file exists in the MQUEUE directory with this name. If both of these conditions are met, the mail is forwarded using a script in the MQUEUE\.bbs file. The script contains lines, of which the first character is an opcode: # this line is a comment c only as the first line: specifies the initial connect to be made. this can be a connect to the bbs, or to a NET/ROM node that is used to reach the bbs. syntax is like the net> connect command. s send string to remote BBS or node. can be used to send strings containing connect commands to NET/ROM nodes. w wait for specified string to be received. lines not containing this string are ignored. useful during connect and disconnect phase, to eat banners sent by the BBS. r checks for a specified string to be received. when a line not containing this string is received in the message transfer phase, it is mailed back to the message sender (it probably is an error) while in the connect phase, the box is simply disconnected. l marks the point in the script where the connect ends, and the messages are transferred. ("loop") m defines the line to be sent to send a message. line is used as an argument to sprintf, with the following string args: 1. message type ("P") 2. destination call 3. destination bbs 4. source call 5. message id u send subject of message. line is an argument to sprintf, with the message subject as an argument. b send the body of the message. any text after the "b" is sent as the end-of-message marker. the default is ^Z. n defines the end of the message transfer lines and the start of the disconnect phase. control will branch back to "l" when more messages are to be sent ("next") Examples: to directly connect to a BBS (AA4RE-type): # forward to PA3APN c 650 pa3apn w==> # now we are connected, send each mail l mS%s %s@%s < %.6s $%.12s rBetreft u%s rBericht b ropgeslagen w==> n # all done, send "bye" command sB w73 To connect to a BBS via NET/ROM: # forward to PI8EAE via PI8RNI-7 NET/ROM c 430 pi8rni-7 sc pi8eae rConnected to w} # now we are connected, send each mail l mS%s %s @ %s < %.6s $%.12s rSubject u%s rmessage b r} n Another NET/ROM example: # forward to PI8ABT via PI8RNI-7/PI8ABT-7 NET/ROM c 430 pi8rni-7 sc zbl70 rConnected to sc pi8abt rConnected to w> # now we are connected, send each mail l mS%s %s@%s < %.6s $%.12s rOmschrijving u%s rBericht b ropgeslagen w> n As can be seen, the scripts must be tuned to match the exact responses sent by the local BBS, such as the "subject" and "message" prompts, and the final character of the BBS prompt (">" or "}"). It is possible to write scripts that ignore the prompts (just omit the "r" lines and put only a "w>" or "w}" after the body) but this will kill the error checking capabilities of the forwarder. Remember that NET/ROM will cancel a connection when you send something without waiting. Always include an "rConnected" line after a NET/ROM connect command.