Process Control
В этой секции определены так называемые Process (процессы). Это
внешние программы, которые будут запускаться в результате
какого-нибудь определенного события.
Синтаксис:
Process [Online|Imm] <macro>|<filemask> <action1>
[# <action2>]
[# <action2>]
где <macro> : ArcMail - обработка при приходе ArcMail (эхопочты)
Tic - обработка при приходе .?IC файлов
NetMail - если принято хотя бы одно письмо
Files - если принят любой файл
Session - после завершения любого сеанса связи (*)
Fax - после принятия любого факса (*)
Voice - после принятия голосового сообщения (*)
Nodelist - при изменении нодлиста (нодлистов) (*)
Empty_Queue - если очередь пуста (*)
Empty_Fax_Queue - если очередь факсов пуста (*)
FREQ - внешний обработчик файловых запросов (*)
Примечание: (*) - такой процесс может
быть задан только один.
<filemask> - маска файлов (в соответствии с правилами
операционной системы).
Online - необязательный префикс, он обозначает,
что процесс должен быть выполнен после
завершения приема файлов (без обрыва
соединения). Может быть использован с
макрос ArcMail, Tic, NetMail, Files и с
<filemask>.
Imm - необязательный префикс, он обозначает,
что процесс должен быть выполнен
немедленно после завершения приема
одного из файлов, указанных в этом
Process (без обрыва соединения). Может
быть использован с макрос ArcMail, Tic,
NetMail, Files и с <filemask>.
<action*> - одно из следующих действий, которое
будет выполнено:
<KeyWord>
<[!] command>
<dvpname>
Далее эти действия описаны подробно.
<KeyWord> - одно из ключевых слов, определяющих
действие:
Exit <EL> [<line>] - выход из T-Mail с заданным кодом
завершения (errorlevel) <EL>, EL -
число в интервале 1-255. Если задан
параметр <line>, то при выходе будет
сформирован командный файл с именем
EXITxx.BAT (EXITxx.CMD), где "xx" -
номер задачи T-Mail (по умолчанию
01). Этот файл будет содержать одну
строку, содержимое которой будет
взято из <line>. <line> может
содержать макросы, описанные ниже; в
командный файл же будут подставлены
соответствующие реальные значения.
Если <line> отсутствует, то
командный файл создан не будет.
Set <var>=<value> - задать новое значение переменной в
t-mail.ctl
Poll <addr group> - сформировать Poll по заданному
адресу или группе адресов <addr
group>.
Control - принудительно перечитать
все конфигурационные файлы T-Mail.
Этот
процесс будет выполнен последним,
т.к. информация о процессах, которые
должны были быть выполнены после
него, будет утрачена при его
выполнении.
Repack <addr group>- пересканировать заново нетмэйл, а
также, если используются, то
файловые ящики, персональные
почтовые ящики и Bink-Style Outbound
и сформировать очередь заново. Если
задана группа адресов <addr group>,
то производится перепаковка только
для адресов, входящих в эту группу.
При выполнении этого действия в
Slave-задаче происходит только сброс
счетчиков (попыток дозвона и т.п.).
KeyMacro <macro> - имитирует ввод с клавиатуры символов
и скэн-кодов, определенных в <macro>
(см. главу 20 документации).
Sound <filename> - воспроизводит звуковой файл (.wav
или .voc). Работает только в
коммерческих версиях для OS/2 и
Windows NT (см. раздел "Звуковые
эффекты" главы 20 и главу 30).
Drop <addr list> - Удалить служебные письма для адресов
<addr list> и перепаковать для них
почту.
Create <filename> - создать файл <filename> или
системный семафор (для OS/2 и
Windows NT). Системный семафор
должен начинаться с символов
"\SEM32\", например:
"\SEM32\arcmail.t-m".
Kill <filename> - уничтожить файл <filename>.
Log <string> - вывести строку символов <string> в
лог-файл (определенный переменной
Log в t-mail.ctl ), на экран и
(только для OS/2) в pipe-log. В
строке <string> можно использовать
макрос *A.
Terminal [<script>]- осуществляется выход в эмулятор
терминала (встроенный). Если после
слова Terminal задано имя файла
сценария, то после входа в терминал
этот сценарий будет выполнен. После
этого T-Mail останется в режиме
эмулятора терминала, однако, если
сценарий завершился инструкцией
"Exit", то произойдет выход из
эмулятора терминала.
Script <filename> - выполнить сценарий, находящийся в
файле <filename> (см. главу 29 ).
Nothing - ничего не делать.
<command> - это просто имя программы, которую нужно запустить для
соответствующей обработки (.exe, .com, .bat,..), и ее
параметры. Если перед <command> стоит '!', это означает,
что команда будет запущена без swap. При работе в OS/2 и
Windows NT символ '!' имеет другое значение: перед
запуском внешней задачи необходимо закрыть
соответствующий этой задаче COM-порт. При этом
использование макроса *O теряет свой смысл.
<dvpname> - имя (с путем) DesqView programm, т.е имя .dvp-файла,
определяющего окно, которое нужно открыть в этом случае.
Примеры:
--------
Process ArcMail c:\squish\squish.exe -In -Out
Process Tic anytic.bat -Debug ; ищется в
; системном каталоге
Process Netmail Create flags\anymail.t-m ; создается флаг
Process *.doc copy files\*.doc \doc ; Указана маска.
Process *.zip Exit 98 ; Exit with errorlevel
Process Files c:\tools\fixfiles.com ; путь явно указан
Process *.exe del ..\inbound\*.exe
Process test*.* move ..\inbound\test*.* ..\inbound\testfiles
Process Arcmail Create \SEM32\anyarc.t-m
Process Online *.reg doreg.bat *A *D *B
Process Online *.zip Create zipflag.t-m
Process Imm *.exe !del inbound\*.exe
Process Imm *.reg start register.cmd
Process Imm *.exe KeyMacro <Alt-C>Hey, man!ɘd>Thank you!ɘd>
Process Online req.bbs Exit 99 bbs.exe -d -p*P -b*B -y*N
Если не определены Process для Arcmail или Tic, то пришедшие файлы с
соответствующими "магическими" именами будут считаться простыми
принятыми файлами и "подпадут под действие" макроса 'Files'.
При задании <command> в Process можно использовать макросы, которые
будут заменены на соответствующие параметры:
*A - полный адрес системы, с которой только что завершился сеанс
связи;
*B - скорость соединения (DCE baudrate);
*D - файлбокс "по умолчанию" для системы, с которой только что
завершился сеанс связи;
*I - PID текущей задачи;
*L - скорость фиксации порта (locked port) (или 0);
*P - номер COM-порта;
*T - номер задачи (task number);
*O - (только для OS/2 и NT версии) - handle открытого COM порта;
*N - 1 при успешном завершении сеанса связи, иначе - 0, используется
только в Process Session.
Процессы, заданные переменными "Process" выполняются в том порядке, в
котором они определены в t-mail.ctl .
Может быть определено несколько действий (<action>), соответствующих
одному процессу (множественные действия). При этом каждое следующее
действие должно начинаться с новой строки и предваряться символом "#".
Для некоторых процессов, однако, множественные действия не выполняются,
такие случаи будут особо оговорены ниже. Действия Control и Exit должны
быть последними. Если после Control или Exit поставить еще какие-либо
действия, то такие действия выполнены не будут.
Пример:
-------
Process Arcmail Sound arcmail.wav
# Toss.bat
# Scan.bat
# Sound endtoss.wav
# Repack All
# Poll 5030/15
# Exit 99
Максимальное число директив Process ограничено только оперативной
памятью. Ниже отдельно рассмотрено несколько специфических процессов.
Process Session runme.bat ; After session
Определяет процесс, который выполняется после завершения каждого сеанса
связи. Возможно использование всех макросов. Можно задать только один
такой процесс.
Process Fax fax.bat ; If fax received
Определяет процесс, который выполняется если принят факс. При задании
процесса можно использовать два параметра, подставляемые по умолчанию:
имя файла (без пути) с принятым факсом и идентификатор факс-машины (FAX
ID), если таковой был получен от отправителя. При задании Process Fax
нельзя использовать макросы. Нельзя также использовать префиксы Online и
Imm. Можно задать только один такой процесс. Для этого процесса
множественные действия не поддерживаются.
Process Voice voice.bat ; If voice message received
Определяет процесс, который выполняется если принято голосовое
сообщение. При задании процесса можно использовать параметр,
подставляемый по умолчанию: имя файла (без пути) с принятым сообщением.
При задании Process Voice нельзя использовать макросы. Нельзя также
использовать префиксы Online и Imm. Можно задать только один такой
процесс. Для этого процесса множественные действия не поддерживаются.
Process Nodelist c:\t-mail\tnc.exe -f ; Compile nodelist
Определяет процесс, который выполняется, если невозможно открыть
индексный файл, сделанный компилятором нодлистов TNC, а также если
изменилась дата или время любого из нодлистов/пойнтлистов, используемых
T-Mail, или при исчезновении любого из них. Префиксы Online и Imm
использовать нельзя. Можно задать только один такой процесс.
Process Empty_Queue empty.bat ; If queue is empty
Определяет процесс, который выполняется если очередь пуста. Для
мультилинейной системы обрабатывается только t-mail/master. Можно
использовать макросы (кроме *A и *D). Префиксы Online и Imm с этой
переменной не используются. Можно задать только один такой процесс.
Process Empty_Fax_Queue empty.bat ; If fax queue is empty
Определяет процесс, который выполняется если факсовая очередь пуста. Для
мультилинейной системы обрабатывается только t-mail/master. Можно
использовать макросы (кроме *A и *D). Префиксы Online и Imm с этой
переменной не используются. Можно задать только один такой процесс.
Process FREQ profr.exe *F *A *B *T ; If FREQ received
Определяет процесс, который выполняется при приеме файлового запроса.
Имя файла запроса (*.req) передается с помощью макроса *F, кроме того,
можно использовать и остальные макросы (кроме *N). С помощью этого
процесса можно запустить программу - внешний обработчик запросов,
результат (список файлов, которые следует отослать в ответ на запрос)
эта программа должна поместить в файл с именем RESPONSE.FRQ в каталоге
<Packets>\T-$$-<task no>. (<Packets> - путь, заданный директивой Packets
в t-mail.ctl , <task no> - номер задачи, например:
c:\t-mail\packets\t-$$-1\response.frq). Файл RESPONSE.FRQ - обычный
текстовый файл, каждая строка которого - имя файла для отсылки. Каждую
строку можно начинать с символов "^" или "#", в первом случае файл после
отсылки будет удален, во втором - усечен до нулевой длины. Префиксы
Online и Imm с этой переменной использовать нельзя. Для этого процесса
множественные действия не поддерживаются.
Process Undialable Sound alarm.wav
Определяет процесс, который выполняется при автоматическом получении
какой-либо системой в очереди статуса Undiailable (в результате
переполнения счетчиков попыток и пр.). Префиксы Online и Imm
использовать нельзя. Можно задать только один такой процесс. Данный
процесс может быть многострочным, например:
Process Undialable Sound alarm.wav
# echo System *A got undialable status >> undial.log
# Txt2msg.exe -Fundial.log -D5030/15.20 "-Ssystem *A is undialable"
# Drop *A