T-mail

17.Работа T-Mail совместно с программным обеспечением BBS

T-Mail может работать совместно с программным обеспечением, реализующим функции BBS (Bulletin Board System - электронные доски объявлений), такими, как Maximus, Remote Access и т.д. Эта работа организуется следующим образом: T-Mail при получении определенного запроса от пользователя вызывает программное обеспечение BBS и передает ему заданные в строке вызова параметры. После этого работу с пользователем осуществляет программа BBS. После завершения сеанса работы с BBS обычно управление сновавозвращается к T-Mail,который продолжает своюработу и ожидает новых вызовов.

Задать вызываемое программное обеспечение BBS можно несколькими способами. В большинстве случаев это производится переменной Process BBS (t-mail.ctl). Рассмотрим этот случай подробно.

В качестве подсказки для пользователя можно выдавать в линию краткое сообщение о том, как осуществить вход в BBS или о том, что в настоящий момент времени вход в BBS закрыт. Это задается переменными Force_BBS и Force_NoBBS соответственно (t-mail.ctl). Заданный текст будет послан в линию непосредственно после установления соединения. То, какая из этих переменных будет выбрана, зависит от того, попадает или нет текущий момент времени в промежутки, указанные в переменной BBS_Time (она описана ниже).

Например:

Force_BBS═══════════ Press ESC twice for BBS..

Force_NoBBS══ Sorry.. Mail only node.

В том случае, если входящий вызов осуществлен не от FTN-совместимого мэйлера, а из терминальной программы, вручную, T-mail получит запрос на запуск BBS. Обычно это два символа Esc (ASCII 27) подряд или специальная посылка стандарта IEMSI.

Переменная BBS_Time (t-mail.ctl) определяет промежуток (или промежутки) времени, когда разрешено передавать управление BBS в этой ситуации. Если эта переменная не определена, то управление BBS передаваться не будет. Например, если необходимо разрешить работу BBS ночью в будни и круглосуточно в остальные дни, следует задать:

BBS_Time═══ 1.22:00-5.7:00,5.0:00-6.24:00

Если текущее время НЕ попадает в диапазон, заданный переменной BBS_Time, то в линию будет выдан текст из файла, заданного переменной NoBBS_Banner (t-mail.ctl). Это может быть, например, информация о времени работы станции, реклама, и т.п. После этого связь будет прервана.

Если же текущее время попадает в диапазон, заданный переменной BBS_Time, то в линию будет выдан текст из файла, заданного переменной BBS_Banner (t-mail.ctl). Это может быть, например, приветствие, наименование вашей системы и так далее. После этого выполняются действия, заданные переменной Process BBS (t-mail.ctl).

Возможны два варианта запуска программы BBS с помощью этой переменной. Первый вариант заключается в том, что Process BBS задает имя программы (или командного файла), которая будет запущена. При этом могут быть указаны параметры командной строки этой программы (файла) с использованием макросов (они описаны ниже).

Например:

Process BBS══ max.exe -p*P -s*L -b*B -t*H

при этом строка запуска будет иметь приблизительно следующий вид:

max.exe -p2 -s57600 -b28800 -t24

Process BBS══ runbbs.bat -c*P -b*B -g -t*H

при этом строка запуска будет иметь приблизительно следующий вид:

runbbs.bat -c2 -b9600 -g -t45

а содержимое файла runbbs.bat может быть примерно следующим:

rem === start ===

@echo off

cd \ra

ra_rus %1 %2 %3 %4

rem === end ===

Второй вариант заключается в том, что производится выход из T-Mail с кодом завершения (errorlevel), который указан в Process BBS. Дальнейшая обработка этого события должна осуществляться в командном файле, из которого запускался T-Mail. Код завершения - это число в диапазоне 1...255.

Например:

Process BBS══ Exit 25

Process BBS══ Exit 25bbssoft.exe *P *L

Если после кода завершения указана какая-либо строка, то при выходе T-Mail создаст командный файл с именем EXITxx.BAT (EXITxx.CMD для OS/2), где "xx" - номер задачи T-Mail (по умолчанию - EXIT01.BAT или EXIT01.CMD), в который будет перенесено содержимое этой строки, вместо макросов будут подставлены реальные значения.

Пример:

Пусть мы имеем систему с несколькими задачами (OS/2). Допустим, что произошло соединение со скоростью 14400 bps в задаче номер два, которая работает с COM-портом номер 3. Тогда в результате выполнения следующей строки:

Process BBS══ Exit 32 bbs.exe -p*P -b*B -nolock

перед выходомс кодом завершения 32будет создан командный файлс именем

EXIT02.CMD, который будет состоять из такой строки:

bbs.exe -p3 -b14400 -nolock

Для обработки этогособытия командный файл для запускаT-Mail может иметь приблизительно такой вид:

rem ------ файл t.cmd для запуска задачи T-Mail N2 ------------

:start

t-mail -N2

....

if errorlevel 32 goto bbs

....

goto end

....

:bbs

remздесь выполняется вызов BBS

call exit02.cmd

remа затем возврат в T-Mail

goto start

....

:end

rem -------------------- конец файла t.cmd -------------------------

Переменная Process BBS может быть только одна. В ней можно использовать следующие макросы:

*I PID текущей задачи;

*B √ скорость соединения (DCE baudrate);

*L √ скорость фиксации порта (locked port) (или 0);

*P √ номер COM-порта;

*O √ (только для OS/2 и NT версии) - handle открытого COM-порта;

*T √ номер задачи (task ident);

*N √ признак коррекции: 0 - соединение произошло без коррекции ошибок, не 0 - с коррекцией;

*H √ время (в минутах) до окончания периода, когда разрешены выходы в BBS (BBS_Time).

*M √ текущее системное время компьютера (в формате ЧЧ:ММ);

*C √ текущая системная дата компьютера (в формате ДД/ММ/ГГ).

Для вызова программы BBS можно использовать и другие способы, но они менее удобны и более сложны. Так, программа BBS может быть вызвана с помощью переменной Extern_Mail - для этого пользователь после установления соединения должен ввести необходимую строку символов, чтобы управление было передано программе, описанной в Extern_Mail (t-mail.ctl). Программа BBS может быть вызвана по флагу с помощью переменной Process_Flag (t-mail.ctl). Можно вызвать программу BBS даже во время почтового сеанса связи - с помощью переменной Process Online или Process Imm (t-mail.ctl). Естественно, программа BBS может быть и внешним обработчиком соединения, задаваемым переменной Extern (t-mail.ctl), и так далее.