# Doors

Doors are special communication programs, that can be called from an FTN Mailer when a special character sequence is received instead of an FTN handshake packet. If a user calls an Argus-hosted system using a generic terminal program, he/she can enter such door program by typing such sequence. There is no special limitation for number of Doors could be called from Argus; if you want callers to know what Doors can be started, be sure that you have put such information in the Banner of a Mailer Line.

The most common enter sequence for BBS programs is two escape characters. Because escape character is not printable, backslash character should be used instead.

"Door and parameters" field contains path to a door's executable file and handshake switches.

Question Mark character (`?`) before file name instructs to execute the process in hidden mode. Exclamation Mark character (`!`) instructs to execute the process in normal window mode. Detached mode can be used only for launching Win32 console applications. Double Question Mark (`??`) instructs to execute the process in DETACHED mode (without using console window) . An attempt to execute DETACHED Win3.1 or DOS application causes an error.

Processes can be launched with the following priority levels:

    <
| Low (`IDLE_PRIORITY_CLASS`)
    +
| High (`HIGH_PRIORITY_CLASS`)
    *
| Real-time (`REALTIME_PRIORITY_CLASS`)

Processes are executing with normal priority (`NORMAL_PRIORITY_CLASS`) in minimised window by default.

## Handshake Switches

The Door command line may contain special switches that are translated into appropriate string values before the external application is started. Each command switch starts with the percent symbol followed by a command character. All handshake command line switches are case sensitive, for example `%c` may not be used instead of `%C`.

This is an example of "Door and parameters" line translation into appropriate execution string, DTE rate is 57600, DCE rate is 21600, mailer line number is 2 and the port handle is 64:

Door and parameters | `d:\max\maxn.exe -s%b -b%B -n%n -p%h`
Translated execution string | `d:\max\maxn.exe -s57600 -b21600 -n2 -p64`

Even if there no command switches were specified, Argus still creates Environment variables, which could be used by launched application:

| Environment | Description | Dial-up value | TCP/IP value
    %B

    ARGUS_DCE
| Connect speed | DCE (modem to modem) | as assumed in TCP/IP Daemon configuration dialogue box
    %b

    ARGUS_DTE
| Port speed | DTE (computer to modem) | same as `%B`
    %e

    ARGUS_CONNECT
| Connect string (spaces replaced to underlines) | as returned after modem CONNECT word, e.g.: "`16800/ARQ/HST` | as returned after Argus TCP/IP CONNECT word, e.g.: "`To 194.213.233.33 #24554`]
    %E

    ARGUS_CONTROL
| Translated error control code | "`MNP`" if any of MNP, ARQ or REL string is present in the connect string. Otherwise null. | Always "`TCP/IP`"
    %L

    ARGUS_NAME
| Mailer line name (spaces replaced to underlines) | as in dial-up/lines/line name | "TCP/IP" plus number of TCP/IP connections, e.g.: "`TCP/IP 3`"
    %n

    ARGUS_LINE
| Mailer line number | Number of entry in dial-up/lines list, e.g. "`1`" for the first line listed. | Number of active TCP/IP connection, e.g. "`2`" for "TCP/IP 2" line
    %h

    ARGUS_HANDLE
| Communication resource handle | COM port Win32 handle | WinSock2 overlapped socket handle
    %C

    ARGUS_NUMBER
| Port number | COM port number, e.g.: "`1`" for COM1 or "`4`" for COM4 | TCP/IP port number, e.g.: `24554` for BinkD
    %p

    ARGUS_INDEX
| Port index | zero-based COM port number, e.g.: "`0`" for COM1 or "`3`" for COM4 | same as `%C`

If an external application is a true Win32-executable, it can inherit Win32-handle of an open communication port (or of connected Winsock2 overlapped socked) and use it for data transfer.

## Special %Z switch

%Z switch is always translated to an empty string - it is intended to instruct Argus to close the communication port before executing of an external application, and to re-open the port after the application terminates. Z% switch is designed for launching of Windows 3.1 and DOS applications which are unable to operate with Win32-handles, so they must open and initialise the port by themselves.

Parameter %Z must be used with great care, because modem control signals (including DTR) are dropped by Windows communication driver when closing port. Most of modems used DTR dropping and rising as an initialisation sequence, thus your modem must be configured to ignore DTR signal to pass communication port to DOS and Windows 3.1 properly.

Handshake Switches are also designed to be applied in External Fax Receiver string of modem configuration dialogue.

The following steps, provided by Sean Rima, can be an example of setting up Argus with Proboard BBS (the modem is USR Sportster 28800 with Fax). These settings are for Windows NT and Windows 2000 but can be easily converted to Windows 95 and Windows 98.

1. Add the FOSSIL driver to `\winnt\system32\config.nt` eg `device=c:\dos\bnu.sys /p=01`
2. Argus Config --> Dial-up --> Modems, Choose the Modem and in INIT, Add `AT&C1&D0`
3. Argus Config --> Externals --> Doors, Add line Enter = `pp`, Door and Paramenters = `c:\pb\proboard.exe %Z -b%B -p%C`