Справочник по системе Аргус

 

 

Что такое Аргус?

Аргус - это почтово-файловая транспортная система, предназначенная для многолинейной работы в сетях Dialup (коммутируемых модемных соединений) и TCP/IP (транспортного протокола сети Интернет) одновременно. Главная задача системы Аргус - прием и передача файлов в автоматическом режиме.

Основными достоинствами системы Аргус являются:


 

Поддержка многозадачной работы Win32

Система Аргус разрабатывалась с учетом всех преимуществ интерфейса Win32, реализованного в Windows NT и в Windows 95. Такими преимуществами являются: возможность одновременного выполнения параллельных процессов (что дает ощутимый выигрыш в мультипроцессорных системах), расширенный графический интерфейс пользователя, поточный механизм обмена с коммуникационными устройствами, и.т.д.

Благодаря распределенности и параллельности процессов Аргуса, системные ресурсы Windows используются максимально эффективно и экономично.

 

Многолинейность

Одно из главных новшеств системы Аргус - ее истинная многолинейность, благодаря чему координация линий производится быстро и эффективно. Теоретических ограничений на количество одновременно активных сеансов связи (соединений) не существует, на практике все зависит от имеющихся в распоряжении системных ресурсов. Обмен данными с одним и тем же почтовым узлом может производиться как по Dial-up, так и по TCP/IP, в зависимости от текущей доступности интерфейса.

Модемные (Dial-up) линии активизируются либо автоматически, при старте системы, либо по команде оператора System / Open Dialup Line. Для каждой активизированной модемной линии необходим как минимум коммуникационный порт, следовательно, количество одновременно открытых модемных линий ограничено количеством свободных коммуникационных портов.

Линии TCP/IP создаются и освобождаются динамически, под управлением TCP/IP Daemon. Как только с системой Аргус произошло очередное входящее/исходящее соединение, Daemon динамически открывает новую линию почтовой системы и инициирует соответствующий почтовый протокол. По окончании сеанса связи Daemon закрывает линию и завершает TCP/IP соединение.

 

Расширенная поддержка TCP/IP

В почтовой системе Аргус введена поддержка протоколо-независимого транспортного интерфейса WinSocket 2.0, который открывает множество новых возможностей. Такими возможностями являются параллельная работа с разными транспортными протоколами (не только TCP/IP), протоколо-независимое преобразование имен хостов (например, SAP, X.500, и.т.д., а не только DNS), Win32-overlapped режим ввода-вывода, общие сокеты, условные соединения, обмен данными во время соединения / разрыва, и.т.д.

В Shareware-версии системы Аргус поддерживается один из самых распространенных транспортных протоколов WinSocket 2.0 - TCP/IP (транспортный протокол сети Интернет).

Благодаря использованию WinSocket 2.0 и Win32, преобразование имен, установка и завершение соединений, операции ввода/вывода TCP/IP - все это происходит параллельно и не мешает работе TCP/IP-стека и всей системы в целом. Контролем за TCP/IP-линиями почтовой системы занимается TCP/IP Daemon.

 

Основы FTN-технологии

Система Аргус взаимодействует с другими системами по стандартам, о которых пойдет речь в этой главе. Так как почтово-транспортная система Аргус построена на базе FTN (Fidonet Technology Network), в ней поддерживаются стандарты и предложения, принятые комитетом FTN. Кроме того, поддерживаются некоторые общие стандарты, свойственные для почтовых систем стандарта FTN.

 

Поддерживаемые FTN-стандарты

В этой главе содержится описание стандартов и предложений, принятых комитетом FTN. Затрагиваются лишь основные моменты, которые желательно знать любому пользователю, имеющему дело с настройкой и эксплуатацией почтовой системы FTN, коей является система Аргус. Оригинальные документы находятся на ftp://ftp.fidonet.org


 

Список узлов FTS-0005

Список узлов (Nodelist) - это официальный документ в рамках сети. Использование и поддержка списка узлов является удобным способом распространения и обновления данных об узлах сети.

Система Аргус поддерживает список узлов стандарта FTS-0005, который соответствует списку узлов сети Public Fidonet Network (PFN), публикуемому каждую пятницу. Этот формат исторически известен как St. Louis nodelist format.

Список узлов стандарта FTS-0005 представляет собой ASCII-файл. Имя файла соответствует маске NODELIST.%%%, где %%% - это три цифры, представляющие число (дополненное слева нулями) дней с начала года до пятницы, в которую был опубликован. Файл списка узлов содержит два типа строк: строки комментариев, начинающиеся с символа “;” и строки данных. Каждая строка завершается парой ASCII-симолов перевода строки (CR) и возврата каретки (LF). Строк данных не может содержать пробелов и символов табуляции. Файл завершается ASCII-символом конца файла (десятичный код 26, или “Ctrl-Z”).

Система Аргус снимает множество ограничений, накладываемых на список узлов стандартом FTS-0005. Так, например, маска NODELIST.%%% не является обязательной для Аргуса, как и символ конца файла, а пятница не является единственно допустимым днем недели для опубликования.

Каждая строка данных списка узлов состоит из восьми полей, разделенных запятой “,”. Так как использование пробельных символов в строке данных не допускается, вместо них применяется символ подчеркивания “_”.


Поле 1: “Ключевое слово”

Zone Служит для определения зоны и ее координатора. Все последующие строки данных описывают регионы, сети, и узлы этой зоны. Узлы, определенные сразу после ключевого слова “Zone”, но до первого определения региона или хоста, являются административными узлами зоны.
Region Служит для определения региона в пределах зоны и его координатора. Узлы, определенные сразу после ключевого слова “Region”, но до первого “Zone”, “Region” или “Host”, называются независимыми узлами данного региона.
Host Служит для определения сети и ее координатора. Узлы, определенные после ключевого слова “Host”, но до первого “Zone”, “Region” или “Host”, являются узлами (или членами) данной сети.
Hub Определяет узел, который является главным в подсегменте сети. Подсегмент включает все узлы до первого “Zone”, “Region”, “Host” или “Hub”.
Pvt Определяет служебный узел в рамках сети. В соответствии с FTS-0005, этот флаг позволяет узлу иметь неопубликованный номер телефона.
Hold Определяет временно нефункционирующий узел, на который почта обычно передается через сетевого координатора.
Down Определяет полностью нефункционирующий узел, подлежащий скорому удалению из списка узлов. На этот узел почта передаваться не может.
пусто Определяет обычный узел.


Поле 2: “Номер Зоны / Региона / Сети / Узла”

Это поле содержит только цифры, и, в соответствии с FTS-0005, является номером в диапазоне 0-32767. Система Аргус накладывает иные ограничения на это поле: для зоны - до 4095, для сетей и узлов - до 65535.

Номера зон должны быть уникальными. Номера регионов и сетей должны быть уникальными только в пределах своей зоны. Номера главных узлов подсегментов уникальны в пределах своей сети. Номера узлов уникальны в пределах сети (в пределах региона, для независимых узлов региона, и в пределах зоны, для административных узлов зоны).


Поле 3: “Имя узла”

Это поле может содержать любые алфавитные символы, кроме пробелов и запятых. Подчеркивания используются, чтобы представить пробелы, а запятая определяет конец поля. Имя узла - это, обычно, название, под которым узел известен в сети.


Поле 4: “Географическое положение”

Это поле может содержать любые алфавитные символы, кроме пробелов и запятых. Подчеркивания используются, чтобы представить пробелы, а запятая определяет конец поля. Географическое положение обычно состоит из имени населенного пункта и административного деления.


Поле 5: “Имя системного оператора”

Это поле содержит имя системного оператора, и может содержать любые алфавитные символы, кроме пробелов и запятых. Подчеркивания используются, чтобы представить пробелы, а запятая определяет конец поля.


Поле 6: “Номер телефона”

Это поле представляет несколько числовых подполей, разделенных символом черточки ( -, десятичный код 45). По спецификации FTS-0005, числовых подполей должно быть как минимум три, хотя обычно используется четыре. В системе Аргус нет ограничений на количество подполей, однако, хотя бы один символ-разделитель “-“ должен присутствовать в номере телефона обязательно.

Поле номера телефона может содержать, вместо номера, зарезервированную строку “-Unpublished-”. По стандарту FTS-0005, узел с неопубликованным телефоном должен обязательно иметь ключевой слово Pvt в первом поле. Аргус такое ограничение не накладывает, и строка “-Unpublished-” может присутствовать вместо номера телефона у любого узла, в таком случае прозвонка на такой узел просто не будет производиться.


Поле 7: “Скорость”

По стандарту FTS-0005, это поле определяет максимальную скорость соединения для узла, и может содержать одно из значений: 300, 1200, 2400, 9600, а в последних редакциях, 19200 или 38400. Система Аргус поддерживает это поле только для совместимости с FTS-0005, иными словами, значение поля 7 игнорируется.


Поле 8: “Флаги”

Это поле опционально, оно может содержать специфичные данные о работе узла, такие как типы обрабатываемых файловых запросов, протоколы модема, и т.д. Это поле состоит из одного или более подполей, разделенных запятыми.

Вот несколько примеров строк данных списка узлов:

Zone,2,Europe_&_more,Belgium,Ward_Dossche,32-3-4480880,9600,CM,XX,U,K12,Z19
Region,46,Ukraine_and_Moldova,Donetsk_Ukraine,Anton_Kuznetsov,380-622-322106,9600,V34,V32B,V42B,CM,MO,XA,U,ENC
Host,469,Moldova_Net,Moldova,Michael_Karpov,373-2-246484,9600,V34,XX,MO,U,TSF
Hub,38,RIT_Zeppelin,Kishinau,Auto_Pilot,373-2-246888,9600,CM,MO,V34,XA,ZYX
,84,Blue_Carnation,Kishinau,Max_Masyutin,373-2-511511,9600,ZYX,XA

 

Протокол соединения EMSI (FSC-0056)

EMSI - это универсальный протокол инициирования сеанса связи, разработанный для модемных соединений, производимых как по семибитовым, так и по восьмибитовым каналам. Благодаря своей простоте, протокол EMSI имеет неограниченные возможности для расширения. Все последующие версии протокола обратно совместимы с предыдущими. Обмен данными осуществляется путем передачи пакетов переменной длинны, состоящих из ASCII-символов в диапазоне 32-127, и защищенных контрольной суммой.

Протокол соединения EMSI сводится к передаче сторонами друг другу следующих данных: параметры коммуникационной линии (например, 8N1, 7E1, 7O2, и т.д.), опции вызывающей/отвечающей системы, типы поддерживаемых протоколов передачи файлов (а также данные о том, обрабатывает ли система файловые запросы, поддерживает ли передачу файлов с длинными именами, и т.д.), данные о почтовой системе (код продукта, имя почтовой системы, номер версии и серийный номер). Все вышеперечисленные поля Аргус генерирует автоматически. Кроме этого, при EMSI-соединении передаются дополнительные данные из списка узлов, которые заполняются при настройке системы Аргус в диалоге Config/Dialup/Station: имя станции, список адресов (AKA), имя системного оператора, географическое положение станции, номер телефона и дополнительные флаги, а также пароль на сеанс связи. Пароль прописывается в Config/Passwords.

После успешного EMSI-соединения начинается сеанс передачи файлов.

 

Сеанс связи WaZOO и файловые запросы (FTS-0006)

Во время сеанса, Аргус может инициировать один из семи (перечисленных ниже в порядке увеличения предпочтения) типов протоколов передачи файлов.

ZedZip Классический Zmodem (однонаправленный протокол передачи). Максимальный размером блока - 1K
ZedZap Zmodem с максимальным размером блока 8K, за счет этого - улучшенная эффективность на качественных линиях
DirZap ZedZap, с улучшенной на 5% эффективностью, за счет прямой передачей всех управляющих символов
Hydra Двунаправленный (истинно дуплексный) протокол. Описан в отдельной главе
FTS-0001 Протокол, поддержка которого на входящем сеансе связи является техническим требованием любого узла сети FidoNet. В рамках сеанса FTS-0001 поддерживаются заголовки пакетов FSC-0039 и FSC-0045 для извлечения данных об удаленной системе. Обратите внимание на следующие ограничения:
- Исходящие сеансы связи на FTS-0001 не производятся.
- Во время сеанса FTS-0001 Аргус не передает файлы удаленной системе. Производится только прием.
- Длина пароля ограничена восемью символами (столько места отведено под пароль в заголовке пакета FTS-0001/FSC-0039/FSC-0045). Узлы с паролем длиннее восьми символов не смогут установить парольное FTS-0001 соединение с Аргусом.
- Skip File / Reject File (а также refuse/delay) недоступны.
- Докачка не производится.
- Некоторые FTS-0001-системы не предоставляют время/дату создания файла.
- В протоколе FTS-0001 не предусмотрено решение проблем 2000-го года.
Протокол FTS-0001 не рекомендуется к применению. Его наличие в системе Аргус обусловлено необходимостью соответствия техническим требованием Fidonet как самой крупной FTN-сети.
BinkP Протокол BinkP был изначально разработан для использования на каналах связи, исключающих возможность ошибок. В сетях Интернет контролем ошибок занимается протокол TCP (Transport Control Protocol), находящийся на уровне OSI Transport Layer. В качестве Transport Layer'а для использования BinkP через Dial-up применяется собственный алгоритм Niagara. Основные преимущества алгоритма Niagara - эффективная коррекция ошибок в условиях модемных линий и асинхронной передачи, а также защита от эффекта "обратной петли".
BinkP / Encrypted Шифрованный сеанс связи BinkP. В этом режиме передаваемый и принимаемый потоки данных шифруются алгоритмом DES/CBC с 56-битным ключом. Шифрование ведется на уровне между Transport Layer (TCP or Niagara) и Protocol Layer (BinkP). Имейте ввиду, что шифрование несет нагрузку на CPU. Используемую программную реализацию алгоритма DES разработал Eric Young (eay@mincom.oz.au). Кроме того используется RSA Data Security, Inc. MD5 Message-Digest Algorithm.

Если, во время сеанса передачи файлов, система Аргус принимает файл с расширением .REQ, то такой файл не сохраняется в Inbound, а рассматривается как файловый запрос в соответствии со стандартом FTS-0006.

 

Протокол Гидра (FSC-0072)

Протокол передачи файлов “Гидра” разработали Joaquim H. Homrighausen и Arjen G. Lentz в 1993 году. Гидра сочетает в себе преимущества более ранних протоколов - Zmodem и Janus. Основное достижение протокола Гидра (как и протокола EMSI) - это простота и расширяемость, несмотря на изначально высокую эффективность, особенно при двунаправленной передаче. Все последующие версии протокола обратно совместимы с предыдущими. Для работы протокола достаточно канала, пропускающего символы в диапазоне 32-126 и служебный символ 24. Гидра хорошо приспособлена к тайм-аутам (спутниковые / сетевые / модемные задержки), и, несмотря на это, сохраняет максимальную надежность, устойчивость и скорость.

В древнегреческой мифологии имя Гидры принадлежало дочери Тифона и Ехидны, змее чудовищных размеров, с девятью головами, из которых восемь - смертных, и одна (центральная) - бессмертна.

 

Флаг, указывающий время работы узла (FSC-0062)

Далеко не все узлы сети имеют возможность работать круглосуточно, поэтому в 1996 году David J. Thomas предложил ввести в список узлов дополнительный опциональный флаг, указывающий время работы узла. Этот флаг имеет форму Txy, где x представляет время начала, а y - время завершения работы узла, в соответствии со следующим форматом:

A 0:00 F 5:00 K 10:00 P 15:00 U 20:00
a 0:30 f 5:30 k 10:30 p 15:30 u 20:30
B 1:00 G 6:00 L 11:00 Q 16:00 V 21:00
b 1:30 g 6:30 l 11:30 q 16:30 v 21:30
C 2:00 H 7:00 M 12:00 R 17:00 W 22:00
c 2:30 h 7:30 m 12:30 r 17:30 w 22:30
D 3:00 I 8:00 N 13:00 S 18:00 X 23:00
d 3:30 i 8:30 n 13:30 s 18:30 x 23:30
E 4:00 J 9:00 O 14:00 T 19:00
e 4:30 j 9:30 o 14:30 t 19:30

Система Аргус использует этот флаг для прозвонки на узлы в их рабочее время.

Время указывается в UTC (Universal Co-ordinated Time), что соответствует времени Гринвичского меридиана без переводов на летнее/зимнее время.

Флаг Txy указывается после специального флага U.

Период работы станции может переваливать через полночь. Так, например, узлу, работающему с 18:00 до 6:00 UTC, соответствует флаг TSG.

Система Аргус позволяет объединять интервалы времени, используя перечисление флагов Txy. Например, TCh,TSW означает 2:00-6:30 и 18:00-22:00 UTC.

Кроме того, система Аргус поддерживает расширенный флаг TxyL, определяющий время работы узла по местному времени. Так, например, узлу, работающему с 18:00 до 6:00 по местному времени соответствует флаг TSGL.

 

Поддерживаемые общие стандарты

Буфер отправки системы Binkley и файл-боксы.
Протокол BinkP

 

Binkley-style Outbound

Этот раздел раскрывает принципы структуры буфера системы Binkley (Binkley-style outbound).

Буфер отправки системы Binkley был впервые применен в почтовой системе BinkleyTerm by Bit Bucket Software, после чего стал одним из стандартов де-факто для систем подобного рода.

Буфер системы Binkley служит для определения файлов, подлежащийх отправки. Кроме буфера Binkley, файлы можно отправить, используя файл-боксы.

Буфер системы Binkley представляет собой определенную структуру каталогов, содержащую файлы, подлежащие отправке. Буфер для текущей зоны (Default outbound zone) располагается в каталоге, указанном в поле Outbound окна настройки каталогов. Буфера для других зон содержатся в каталогах с такими же именами, как и для текущей зоны, с одним лишь отличием, что в поле расширения их имени содержатся три шестнадцатеричных цифры, представляющие 12-битое число, являющееся номером соответствующей зоны. Вот откуда растут корни ограничения максимального номера зоны числом 4095 (FFF в шестнадцатеричной системе).

OUTBOUND Буфер для текущей зоны (Default outbound zone)
OUTBOUND.001 Буфер для зоны 1 (Северная Америка)
OUTBOUND.03F Буфер для зоны 63 (3F в шестнадцатеричной системе)

В буфере зоны располагаются пакеты, предназначенные для узлов этой зоны.

Пакеты подразделяются по типу приоритетности и по способу привязки.

Система Аргус поддерживает четыре типа приоритетности, перечисленные в порядке уменьшения приоритетности: Crash, Direct, Normal и Hold. Имена типов имеют больше историческое, чем практическое значение.

По способу привязки, пакеты подразделяются на прямые почтовые и списки привязанных файлов.

Тип Инициирует прозвонку Передается при исходящем соединении Расширение прямого почтового пакета Расширение списка привязанных файлов
Crash да да CUT CLO
Direct да да DUT DLO
Normal нет да OUT FLO
Hold нет нет (зависит от Transmit Hold on outgoing). HUT HLO

Прямой почтовый пакет это ничто иное, как стандартный FTS-0001 пакет сообщений, который, перед отправкой удаленной системе, переименовывается в файл с расширением PKT и именем, состоящим из восьми случайных шестнадцатеричных цифр.

Список привязанных файлов - это текстовый файл, содержащий строки, каждая из которых несет путь к файлу, подлежащему отправке. После успешной отправки файл может быть удален (если в строке перед путем к файлу стоит символ ^) или урезан до нулевого размера (если в строке перед путем к файлу стоит символ #).

Имя файла пакета из буфера отправки состоит из восьми шестнадцатеричных цифр, первые четыре из которых представляют 32-битный номер сети соответствующей зоны, а остальные четыре - 32-битный номер узла. Отсюда и природа числа 65535, как максимальное значение номера сети и узла.

Рассмотрим типичный пакет с именем - 01D50026.CLO, являющийся списком привязанных файлов, подлежащий отправке на узел 469/38 с приоритетом Crash.

01D5 шестнадцатеричное число 469 - номер сети
0026 шестнадцатеричное число 38 - номер узла
.CLO список привязанных файлов с приоритетом Crash

Допустим, этот файл содержит строки:

#e:\fido\outbound\0000040.tu3
^d:\work\source\help\argus\hlpsrc.rar
e:\fido\staff\mw(all).rar

Это значит, что на узел будет передано 3 файла, причем e:\fido\outbound\0000040.tu3 после передачи будет урезан до нулевого размера, а d:\work\source\help\argus\hlpsrc.rar после передачи будет удален.

Для отправки определенным пойнтам узла, в соответствующем буфере (основном или для конкретной зоны) создается каталог с расширением .PNT, имя которого, по аналогии с именем пакета, представляет собой шестнадцатеричный номер сети и узла. В этот каталог помещаются прямые почтовые пакеты и списки привязанных файлов. Имя каталога представляет шестнадцатеричный номер пойнта соответствующего узла. Например, пакет с именем 0000001e.CUT, вложенный в каталог 01D50066.PNT, будет отправлен пойнту 469/102.30

Кроме пакетов, в буфере отправки системы Binkley содержатся файлы следующих типов:

.BSY Индикатор занятости узла.
.REQ Список файлов, запрашиваемых у удаленного узла
.HRQ Список файлов, запрошенных удаленным узлом

Для управления буфером отправки преусмотрен специальный инструмент - SmartMenu.

 

Outbound SmartMenu

Outbound SmartMenu является мощнейшим инструментом для работы с элементами буфера отправки системы Binkley.

Outbound SmartMenu не предназначено для работы с файл-боксами и файлами, находящимися в файл-боксах.

SmartMenu может быть вызвано только при активной страничке Outboubd. Для вызова нажмите “пробел” или правую кнопку мыши на элементе буфера.

Идеологически SmartMenu разделено на четыре части. Первая служит для работы с текущим узлом, вторая - с текущим элементом буфера, третья - с группой элементов текущего узла, и четвертая - со всеми элементами буфера.

Графически SmartMenu представлено как динамическое Pop-up Menu (всплывающее меню), конструируемое на основе данных о текущем узле, текущем элементе буфера, группе элементов текущего узла и остальными элементами буфера.


Операции над текущим узлом

Операции над элементами буфера

Open Current File - открыть для просмотра текущий файл. В качестве программы-просмотрщика используется внешнее приложение, зарегистрированное в Windows Registry как соттветствующее данному типу файла (расширению). Если для данного расширения нет зарегистрированной программы, то просмотра производиться не будет.

Над элементами буфера отправки допустимы следующие действия:

Readdress Переадресовать элементы. Переадресация элементов означает их отсоединение в буфере от прежнего узла и присоединение к новому узлу. Расширение переадресуемых *.?UT-файлов изменяется на PKT.
Finalize Произвести с элементами действие, аналогичное производимому по окончании успешной отправки. *.?UT и Kill-Sent-файлы будут удалены, размер Truncate-Sent файлов будет установлен в нулевое значеие. В любом случае файлы будут отсоединены, и при сеансе связи с узлом передаваться не будут.
Change to Crash Изменить тип приоритетности на Crash. При изменении типа приоритетности, как и в случае с Readdress, *.?UT-файлы переименовывается в *.PKT
Change to Direct Изменить тип приоритетности на Direct
Change to Normal Изменить тип приоритетности на Normal
Change to Hold Изменить тип приоритетности на Hold
Unlink Отсоединить файлы. *.?UT-файлы будут удалены, остальные же будут просто выписаны из соответствующих списков привязки (*.?LO). Kill-Sent и Truncae-Sent файлы останутся на диске неизмененными. Отсоединенные файлы при сеансе с узлом передаваться не будут.
Remove Broken Links Проверить списки привязки (*.?LO) и вычеркнуть из них ссылки на ненайденные файлы.

 

Telnet TCP/IP protocol

Telnet is the same as Raw with only difference between them is that default IP port numbers are 23 and 60177 and data transfer is made accordingly to Internet standard defined in RFC 845.
 

Raw TCP/IP protocol

In Raw TCP/IP protocol data is treated the same way as a communication port data, so file transfer protocols used during Raw TCP/IP connections are the same as protocols used for Dial-up connections. IP port number 60179 is usually used for Raw TCP/IP connections.
 

Протокол BinkP

Протокол BinkP, предназначенный для инициирования сеанса связи и передачи файлов по двунаправленному двоичному каналу, не допускающему ошибок (например, TCP/IP), был разработан в 1996 году Димой Маловым. BinkP сочетает в себе как протокол инициирования сеанса связи, так и протокол передачи файлов.

Появление протокола BinkP дало настоящий толчок развитию Fido-коммуникаций на базе транспорта Интернет. До этого, Fido-почта, долгие годы, если и передавалась через TCP/IP, то весьма неэффективно, используя протоколы, разработанные исключительно для модемных соединений - EMSI (для инициирования сеанса связи) и Zmodem / Гидра (для передачи файлов). Дело в том, что эти протоколы содержали большую избыточность по времени и по передаваемым данным. Эта избыточность необходима для контроля ошибок, возникающих только при асинхронной передачи и модуляции цифровых данных по телефонным линиям.

За счет отсутствия квитирования, инициирование сеанса связи через BinkP происходит во много раз быстрее, чем через EMSI при той же пропускной способности канала. Особый выигрыш ощущается на каналах с большой задержкой, особенно при передаче большого количества файлов малой длины.

 

Шифрованный сеанс связи BinkP

Диалоговое окно Config / Encrypted Links позволяет определять узлы, соединения с которыми доступны только посредством шифрованного сеанса связи по протоколу BinkP. Для этого необходимо указать адрес узла и пароль, который преобразуется в DES-ключ для шифрования потоков данных. DES-ключи шифрованных сеансов связи хранятся в файле config.bin вместе с остальной конфигурацией, по одному ключу (56 бит) на один узел. Одним из способов защиты DES-ключей и данных конфигурации является Master Password.

В шифрованном сеансе связи BinkP, передаваемый и принимаемый потоки шифруются алгоритмом DES/CBC с 56-битным ключом. Шифрование ведется на уровне между Transport Layer (TCP or Niagara) и Protocol Layer (BinkP). Имейте ввиду, что шифрование несет нагрузку на CPU. Используемую программную реализацию алгоритма DES разработал Eric Young (eay@mincom.oz.au). Скорость шифрования потока составляет примерно 1 мегабайт в секунду на Pentium 120 MHz. Кроме того, для идентификации DES-ключей, используется RSA Data Security, Inc. MD5 Message-Digest Algorithm.

В качестве Transport Layer'а для использования BinkP через Dial-up применяется алгоритм Niagara. Основные преимущества алгоритма Niagara - эффективная коррекция ошибок и защита от эффекта "обратной петли". Этот эффект возникает, когда передающее устройство (модем), в силу каких-либо причин, переходит в режим непосредственного возврата передаваемых байтов передатчику. Таким образом, передатчик начинает передачу информации (файлы, и.т.д.) как бы “сам себе”. В отличии от протокола Niagara, протокол Гидра(FSC-0072) не защищен от эффекта "обратной петли".

 

Принципы асинхронной передачи

В этой главе описываются основы асинхронных коммуникаций с использованием стандартного последовательного порта, а также такие свойства порта, как параметры линии, ошибки передачи и контроль потока данных.

Вы можете пропустить эту главу, если достаточно хорошо знакомы с концепциями работы последовательного порта, или используете систему Аргус только для работы по TCP/IP, однако, потратив несколько минут на ознакомление с ее содержимым, Вы, возможно, избавитесь от некоторого количества вопросов и затруднительных ситуаций в будущем.

Вместо представления изнурительного описания всего неохватного количества деталей последовательной асинхронной передачи, в этой главе излагаются только те детали, которые Вам желательно знать для настройки и работы с системой Аргус. Здесь излагаются концепции, о которых Вы должны иметь представление хотя бы перед тем, как подсоединить последовательное асинхронное устройство к вашему компьютеру.

Наиболее общее определение “последовательные коммуникации” подразумевает что-либо передающее и принимающее данные последовательным образом, где за одним битом следует другой в едином потоке, следующим по одному проводу. В “параллельных коммуникациях”, наоборот, множество бит передаются параллельно по множеству проводов. Термин “асинхронные коммуникации” означает, что поток данных включает стартовый и стоповый биты, которые отмечают начало и конец каждого символа в потоке данных. В “синхронных коммуникациях”, наоборот - стартовый и стоповый биты отсутствуют, но оба конца передачи синхронизированы по времени, чтобы быть готовым к началу и завершению передачи каждого символа.

Когда пользователи PC говорят об “асинхронных коммуникациях”, речь обычно идет о коммуникациях, обеспеченных “последовательными портами” (или “COM-портами”) компьютера. К этим портам можно подсоединить множество периферийных устройств, таких как модемы, принтеры, плоттеры, устройства ввода и лабораторные инструменты, в общем, любые устройства, которые работают по тем же стандартам, что и последовательный порт. В этих главах термин “устройство” подразумевает именно физическое устройство, подсоединенное к компьютеру через COM-порт.

 

Параметры линии

Потому как низкоуровневые части последовательных коммуникаций строго стандартизированы, Вам, как правила, нет необходимости вдаваться в такие технические подробности, как напряжение линии, нумерация ножек, и т.д. Но Вам необходимо знать о параметрах линии и способе контроля потока данных. В системе Аргус, параметры линии выглядят следующим образом:

57600, CTS/RTS, 8N1

Это означает, что линия настроена на скорость передачи 57600 бод, используется тип контроля потока “CTS/RTS”, биты четности не используются, восемь бит данных, и один стоповый бит. Перед началом передачи оба конца должны иметь одинаковые параметры линии. В системе Аргус параметры линии настраиваются в диалоговом окне Config/Dialup/Ports.

Ниже приведены определения этих параметров, и руководства по правильной настройке значений.


Скорость передачи

Скорость передачи информации в коммуникациях зачастую путают со скоростью передачи бит - числом бит данных, переданных за одну секунду. Технически это неправильно, и на самом деле скорость передачи информации означает число событий коммуникационной линии за секунду. Так как одно событие может содержать информацию о более чем одном бите (как, например, в протоколе V.34), скорость передачи может отличаться от количества бит в секунду. У последовательного порта каждое событие несет собой один бит, следовательно, приравнивание скорости передачи к количеству переданных бит в секунду здесь верно.

Когда стоит выбор, обычно следует использовать наибольшую скорость передачи, чтобы достичь максимальной пропускной способности. Однако программная или аппаратная среда может наложить ограничения на скорость передачи. Производительность компьютера, тип микросхемы, обслуживающей COM-порт, качество линии, тип коммуникационного драйвера Windows, загруженность системы - и все это в целом и/или по отдельности может ограничить максимально возможную скорость передачи. Обычно, любой 386-машине под Windows NT или Windows 95 хватает ресурсов, чтобы нормально обеспечить скорость передачи в 9600 бод. Более быстрые машины, оснащенные процессором 486, либо одним или несколькими Pentium, позволяют нормально работать на скорости, максимальной для стандартного коммуникационного драйвера Windows - 115.2K бод.

Есть и другие факторы, влияющие на выбор скорости передачи. Например, если Вы используете модем на 14400 бод, нет особого смысла в скорости обмена 115200 между компьютером и модемом. Уменьшая скорость передачи, Вы уменьшаете вероятность возникновения ошибок и снижаете загрузку системы.


Биты данных

Один байт данных может содержать 5, 6, 7 или 8 бит. В подавляющем большинстве случаев используется 8 бит, в редких случаях - 7.

Протоколы EMSI и Гидра, поддерживаемые системой Аргус, могут работать как с восьми, так и с семибитовым байтом.


Стоповые биты

Стоповые биты следуют в потоке за битами данных и отмечают конец байта данных. Стоповых бит может либо один, либо два.


Бит контроля четности

Бит контроля четности следует сразу после битов данных. В зависимости от выбранной схемы контроля, этот бит может означать четность или нечетность суммы бит данных. Передатчик вычисляет сумму бит данных и передает бит четности, приемник, в свою очередь, вычисляет сумму принятых бит данных и сравнивает ее с принятым битом четности. Если эти биты равны, признается, что байт данных принят без ошибок. В противном случае приемник инициирует ошибку. Бит четности вычисляется по одному из возможных способов:

N None Бит четности не добавляется. Контроль четности не производится.
O Odd Бит равен 1, если сумма бит байта данных нечетна и 0 в противном случае
E Even Бит равен 1, если сумма бит байта данных четна и 0 в противном случае
M Mark Бит всегда равен 1, вне зависимости от суммы бит байта данных.
S Space Бит всегда равен 0, вне зависимости от суммы бит байта данных.

Чаще всего, бит четности не добавляется, так как за контролем целостности потока данных следят внутренний протокол модема и протокол сеанса связи.

 

Ошибки передачи

При операциях асинхронного ввода/вывода (как и при любых формах ввода/вывода), естественно, могут происходить ошибки. Ошибки возникают, когда байт, полученный приемником, не соответствует байту, посланному передатчиком. Это обычно происходит вследствие электрических помех.

Ошибки, инициируемые асинхронным приемопередатчиком, передаются от драйвера COM-порта Windows системе Аргус через стандартные средства интерфейса Win32. Система Аргус, в свою очередь, сообщает об этих ошибках в хронологическом журнале, приблизительно в следующей форме:

ComError CE_FRAME, In=8b, OutB=0b

“CE_FRAME” - это один из возможных типов ошибок, возвращаемых драйвером Windows, “InB”/”OutB” - число байт, находившихся в буферах приема и передачи в момент возникновения ошибки. Одновременно может возникнуть несколько типов ошибок, в этом случае они будут перечислены в той же строке, отделенные символом |

Следующие четыре типа ошибок инициируются самим асинхронным приемопередатчиком. Эти ошибки подробно описаны далее.

CE_BREAK The hardware detected a break condition
CE_FRAME The hardware detected a framing error
CE_RXPARITY The hardware detected a parity error
CE_OVERRUN A character-buffer overrun has occurred - the next character is lost

Иногда (особенно при неправильно выбранном методе контроля потока данных) могут возникать ошибки, инициируемые драйвером COM-порта Windows, связанные с переполнением буферов приема/передачи.

CE_RXOVER An input buffer overflow has occurred
CE_TXFULL The application tried to transmit a character, but the output buffer was full

Драйвер Windows, по спецификации, может возвращать еще некоторые ошибки, которые на практике работы системы Аргус возникать не могут. Ограничимся лишь перечислением:

CE_IOE An I/O error occurred during communications with the device
CE_MODE The requested mode is not supported
CE_DNS Windows 95 only: A parallel device is not selected
CE_OOP Windows 95 only: A parallel device signalled that it is out of paper
CE_PTO Windows 95 only: A time-out occurred on a parallel device

Ошибки могут также возникать в случае несогласованного между приемником и передатчиком выбора параметров линии, либо в случае установки слишком высокой скорости обмена.
Остановимся подробнее на ошибках, инициируемых самим асинхронным приемопередатчиком.


Ошибка переполнения

(CE_OVERRUN)
Ошибка переполнения (UART Overrun Error) свидетельствует о том, что второй байт поступил по последовательному порту до извлечения первого. Как правило, это означает, что линия инициализирована на слишком большую скорость, и драйвер COM-порта не успевает обрабатывать поток. Решением проблемы обычно является снижение скорости передачи до тех пор, пока ошибки не исчезнут. Однако появление таких ошибок на скорости ниже 19200 бод служит поводом искать причины в другом. Какой-нибудь Windows-процесс/сервис/драйвер может оставлять аппаратные прерывания запрещенными на длительный период времени или работать с очень большим приоритетом, не оставляя процессорного времени драйверу COM-порта.


Ошибки четности

(CE_RXPARITY)
Ошибки четности (parity errors) возникают тогда, когда принятый бит контроля четности не соответствует вычисленному биту. Например, если принимается бит “Odd”, а вычисляется “Even”, асинхронный приемопередатчик инициирует ошибку четности. Чаще всего, причиной возникновения ошибок четности является несогласованность между приемником и передатчиком в установленном методе контроля четности. Ошибки могут возникнуть сразу после того, как вы подсоединили новое устройство, не согласовав с ним метод контроля четности. Другим проявлением несогласованности может стать факт постоянного возникновения ошибок при передаче определенных символов, и полным отсутствием ошибок при передаче других.

Ошибки четности также возникают вследствие влияния помех на линию передачи, в этом случае ошибки появляются группой, иногда случайно, иногда с некоторой периодичностью, чередуясь с относительно долгими периодами безошибочной передачи. В этом случае решением проблемы может стать удаление кабеля от источников электромагнитных помех. Укоротить кабель - тоже выход.


Сбои кадра

(CE_FRAME)
Сбои кадра (framing errors) происходят тогда, когда биты данных в последовательном потоке не завершаются корректным стоповым битом, который всегда должен иметь значение 1. Как и в случае ошибок четности, сбои кадра обычно возникают вследствие несоответствия параметров линии между приемником и передатчиком. Получив сбои кадра, проверьте параметры обоих сторон. Сбои кадра, чаще, чем ошибки четности, могут быть вызваны электрическими помехами. И снова решением проблемы может стать укорачивание кабеля, и удаление его от источников помех.


Разрыв

(CE_BREAK)
Разрыв (Break), на самом деле, не является ошибкой приема или передачи - он представляет особое состояние линии. “Разрыв линии” или просто “разрыв”, это такое условие, при котором нулевые биты передаются подряд в течение времени, большего или равному времени передачи байта. Асинхронный приемопередатчик распознает это состояние и может сообщать системе Аргус через драйвер COM-порта факт разрыва линии. Разрывы предназначены для оповещения устройства о том, что ему необходимо отработать особое состояние. В коммуникациях системы Аргус сигнал разрыва специально не применяется, но он, как и в случаях со сбоями кадра и ошибками четности, может возникать как следствие помех или несогласованности устройств.

 

Контроль потока данных

Контроль потока данных (flow control) - это возможность приостанавливать поток данных при асинхронной передаче по запросу удаленной системы. Контроль потока данных необходим, когда скорость обработки принимаемых данных может быть меньше скорости поступления данных.

Случается, что данные поступают со слишком большой скоростью, а у компьютера не хватает процессорных ресурсов, необходимых для их обработки. Тогда, через некоторое время, может наступить переполнение буфера приема, и данные, поступающие от удаленной системы, будут потеряны.

Контроль потока данных можно рассматривать с двух сторон: контроль потока принимаемых данных и контроль потока передаваемых данных. Контроль потока принимаемых данных означает возможность сообщать удаленной стороне о том, что ей следует приостановить передачу данных. Контроль потока передаваемых данных означает возможность правильно отрабатывать запрос удаленной стороны о приостановке передачи данных.

Система Аргус практически никогда не пользуется контролем потока принимаемых данных. Чтением из порта занимается отдельный подпроцесс с повышенным приоритетом, и переполнения буфера приема практически никогда не происходит.

Если использовать 19200-BPS модем на скорости порта 38400, данные будут поступать от компьютера к модему с вдвое большей скоростью, то есть в среднем половину времени входной буфер модема будет заполнен, и модем будет запрашивать о приостановке передачи потока. Чтобы предотвратить потери данных, система Аргус должна правильно отрабатывать запросы модема на приостановку передачи потока.

Существует два типа контроля потока данных - аппаратный и программный.

Аппаратный контроль потока данных
Аппаратный контроль потока данных осуществляется при помощи контрольных сигналов последовательного кабеля. Название и значение этих сигналов соответствует спецификации RS-232.

Аппаратный контроль потока данных, в соответствии со стандартами, требует, чтобы модем поднял сигнал CTS перед тем, как PC начнет передавать символы. PC, в свою очередь, должен опустить сигнал RTS, когда его входной заполнится во время приема. Как только PC обработает весь входной буфер, он снова поднимает RTS.

Вот и все, что Вам необходимо знать об аппаратном контроле потока данных при работе с системой Аргус. Далее следует более детальный обзор темы.

PC Устройство
data input п data output
data output р data input
DTR р DSR
RTS р CTS
DSR п DTR
CTS п RTS

По проводам data input/data output происходит последовательная асинхронная передача данных, остальные сигналы соответствуют спецификации RS-232.

DTR data terminal ready готовность устройства
RTS request to send запрос на посылку
DSR data set ready набор данных готов
CTS clear to send передача разрешена

Каждый сигнал может находиться в одном из двух состояний: поднятом или опущенном (включен или выключен; on или off; high или low; raised или lowered; asserted или de-asserted).

Сигнал DTR поднимается системой Аргус сразу после инициализации COM-порта и означает, что Аргус работает с этим портом. RTS тоже поднимается после инициализации COM-порта, и означает готовность Аргуса принимать данные. Так как чтением из порта в системе Аргус занимается отдельный подпроцесс с повышенным приоритетом, и переполнения буфера приема практически никогда не происходит, сигнал RTS поднят постоянно.

DSR - это входной сигнал от устройства, означающий, что устройство подсоединено и включено, но не обязательно готово принимать данные. CTS это входной сигнал от устройства, означающий, что устройство, кроме того, что подсоединено и включено, готово к приему данных.

DTR и DSR применяются в системе Аргус не контроля потока данных, а для индикации готовности к работе. Для аппаратного контроля потока в системе Аргус применяются RTS/CTS - если это не запрещено в диалоге настройки порта. Эти сигналы обрабатываются драйвером Windows автоматически. При обнаружении заполнения буфера приема драйвер опускает RTS. При обнаружении падения сигнала CTS драйвер приостанавливает передачу.

Программный контроль потока данных
Программный контроль потока данных (XOn/XOff flow control) осуществляется двумя специальными символами: символ приостановления потока - XOff (ASCII 19) и символ продолжения потока - XOn (ASCII 17). Обычно в системе Аргус программный контроль потока данных не используется, но если разрешить его в диалоге настройки порта, коммуникационный драйвер будет приостанавливать передачу при получении символа XOff и продолжать при получении XOn.

 

Среда Аргуса

В этой главе описывается среда Аргуса: расширенные графические элементы, менеджер прозвонок, окно линии почтовой системы, и главное меню.

 

Расширенные элементы графического интерфейса

В этой главе описываются расширенные элементы графического интерфейса, используемые в Аргусе:


 

Сетки ввода строк

Основным инструментом ввода и изображения строковых данных в Аргусе является сетка ввода строк. Сетки бывают двух видов - с фиксированным и переменным количеством строк.

Пример сетки с фиксированным числом строк

[String Grid - Fixed]

Пример сетки с переменным числом строк

[String Grid - Variable]

Перемещаться по полям сетки можно клавишами-стрелками.

Перейти в режим изменения значения фокусированного поля можно одним из способов:


Над строкой сетки с переменным числом строк можно производить следующие операции:

Вставить строку Ctrl+Ins
Удалить строку Ctrl+Del
Добавить строку Ctrl+GrayPlus
Переместить строку Ухватиться мышью за номер строки и перенести ее в нужное место

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

Edit cell Перейти в режим изменения значения фокусированного поля (редактировать ячейку)
Add row Добавить строку в конец таблицы
Insert row Вставить строку
Duplicate row Дублировать строку
Delete row Удалить текущую строку
Export table Экспортировать содержимое таблицы в текстовый файл
Import table Импортировать из текстового файла содержимое таблицы
Help on grid Вызвать данную справку

Существует возможность удаления сразу всех строк сетки, используя всплывающее меню или Ctrl+Shift+Y или Ctrl+Shift+Delete.

См. также Расширенные элементы графического интерфейса
 

Окно хронологии

Последние 200 записей линии почтовой системы хранятся в окне хронологии. Обычно прокрутка строк в этом окне производится автоматически, причем таким образом, чтобы последние занесенные строки были видимыми. Если перенести фокус на это окно, то автоматическая прокрутка приостанавливается, чтобы сделать удобным изучение всего содержимого окна. Если перенести фокус на другой элемент окна почтовой системы, то автоматическая прокрутка содержимого возобновляется.

[Log Box]

См. также Расширенная хронология.

 

Индикаторы активности модема

В правой части окна почтовой системы находятся окна-индикаторы активности модема во время ожидания звонка, инициализации модема, набора номера, и инициализации сеанса связи. В верхнем окне-индикаторе отображаются символы и управляющие спецсимволы, передаваемые модему, а в нижнем - символы, принимаемые от модема.

Обычные символы отображаются черным цветом, а управляющие - голубым.

[Terminal - Out]

[Terminal - In]

Каждое окно-индикатор - это своеобразный терминал, или матрица размером 9x30, состоящая из символов стандартного набора ASCII.


См. также Расширенные элементы графического интерфейса
 

Индикатор прогресса приема/передачи

[Pie Gauge]

Если во время сеанса связи известно количество и суммарный размер передаваемых и принимаемых файлов, то для индикации прогресса используется специальный графический элемент. Он располагается в окне почтовой системы, и имеет вид секторной диаграммы, изображающей процент переданных или принятых данных и их суммарный размер.

При передаче файлов индикатор присутствует практически всегда, то при приеме - только если удаленная система заранее сообщила об объеме передаваемых данных.


См. также Расширенные элементы графического интерфейса
 

Индикатор сигналов модема

В правой нижней части окна почтовой системы расположен индикатор сигналов модема.

[Modem Lamps]


См. также Расширенные элементы графического интерфейса

 

Информационная панель присоединенного узла

Эта панель появляется во время сеанса связи. В ней содержится информация о присоединенном узле.

[Remote Info]

Connect - в этой секции указывается скорость соединения, а также протоколы коррекции ошибок и компрессии данных, которые используются при соединении.

Все остальные параметры показываются исходя из информации полученной им из EMSI

см. также Окно линии почтовой системы и Расширенные элементы графического интерфейса

 

Менеджер прозвонок

Прозвонка на узел производится с интервалом в 2 минуты (+-50%). Этот интервал можно изменить в диалоге настройки Параметров Прозвонок.


Панель прозвонок

Manual - прозвонка создана оператором по команде Poll / Create.
В окне ввода адресов можно указать одновременно несколько адресов, перечислив их в строке ввода через пробел. Manual Poll игнорирует время работы станции (флажки CM / U,Txy) и завершается после удачного сеанса связи с назначенным узлом.
Cron - прозвонка создана Аргусом по Cron.
Прозвонка типа Cron (периодическая прозвонка) аналогична прозвонке типа Outb, и завершается после удачного сеанса связи с назначенным узлом.
Outb - прозвонка создана Аргусом по обнаружению пакета с приоритетом Crash или Direct в буфере отправки или в файл-боксе.
Outbound-Poll завершается после удачного исходящего сеанса связи или в случае, если внешнее приложение удалило пакет, породивший прозвонку.

 

Окно линии почтовой системы

В этой главе описывается графический интерфейс и работа с окном линии почтовой системы Аргус. В каждый момент времени это окно может отображать одну из активных линий. Для открытия линий воспользуйтесь пунктом Open Dialup Line меню System. Переключение между линиями осуществляется выбором соответствующей закладки в верхней части окна.

Окно состоит из следующих элементов: окна хронологии, индикаторов активности модема, индикатора сигналов модема .

Ожидание входящего звонка или возникновения прозвонки
Когда очередь прозвонок пуста (Буфер отправкиu пуст, либо в нем не присутствуют пакеты с приоритетом Crash или Direct), то почтовая система ждет либо появления прозвонки, либо входящего звонка. При этом в верхней части окна, в панели Status, выводится сообщение Idle.

см. также главу Менеджер прозвонок

Ожидание набора
Если очередь прозвонок не пуста, то в панели Status окна линии почтовой системы выводится сообщение Waiting to dial, далее следует адрес узла, который на данный момент является первым в очереди. В панели Timeout ведется отсчет времени до начала прозвонки.

Ожидание соединения
По окончании времени ожидания прозвонки, начинается набор номера вызываемого узла, надпись в панели Status меняется на Calling + номер вызываемого узла. В панели Timeout начинается отсчет времени до окончания ожидания соединения. Ожидание соединения происходит и при ответе почтовой системы на входящий звонок. Если до истечения времени ожидания соединение не произошло, то система переходит в режим ожидания набора следующего в очереди узла, либо в режим ожидания звонка.

Соединение
После того, как произошло соединение и успешный обмен EMSI пакетами между станциями, начинается собственно сеанс связи. Экран окна линии почтовой системы изменяется: вместо индикаторов активности модема появляется информационная панель присоединенной станции, вместо панелей Status и Timeout, появляются две панели индикации хода передачи (вверху) и приема (внизу) почтовых пакетов и файлов. Под панелями индикации хода приема/передачи пишется тип протокола сеанса связи и общее количество ошибок за сеанс.

При исходящем звонке, сперва инициализируется процесс передачи, а затем процесс приема. При входящем звонке - наоборот, сначала инициализируется прием почтовых пакетов и файлов, а затем передача. При наличии файловых запросов среди принятых пакетов, запросы обрабатываются и запрашиваемые файлы, если таковые найдены, передаются запрашивающей станции.

см. также Буфер отправки системы Binkley и файл-боксы.

Отсоединение
Отсоединение может произойти по нескольким причинам. Обычно это происходит когда ни вашей, ни присоединившейся станции нечего больше передавать. При этом происходит успешное завершение сеанса связи. Кроме того, отсоединение может произойти в результате потери несущей частоты модема (NO CARRIER), либо в результате слишком большого количества ошибок, или предельно низкого падения скорости передачи. В таких случаях, сеанс считается неудачным, и если вашей системе не удалось до конца передать пакеты или файлы во время такого сеанса, то Аргус попытается снова передать их при следующей возможности. Если с вашей станции был передан файловый запрос, во время выполнения которого сеанс прервался, то запрос будет передан повторно. Если ваша станция просто принимала файлы или пакеты, то будет сформирована повторная прозвонка на данный узел. При неудачном завершении входящего сеанса, Аргус ничего не предпринимает. В любом случае при удачном либо неудачном завершении сеанса, система переходит в состояние ожидания набора.
 

Timeout Panel

Time-out panel displays the countdown (in seconds) to the next expected event.

When [ResetTo] button is pressed, the countdown is zeroed and the expected event is started. Line menu command has the same effect.

When [AddTo] button is pressed 30 seconds are added to the time-out. Line menu command has the same effect.

 

Главное меню

В этой главе рассматривается главное меню Аргуса, которое состоит из следующих пунктов:


 

Меню System



 

Меню Line



см. так же Окно линии почтовой системы

 

Меню Poll



см. также Менеджер прозвонок

 

Меню Tool



 

Меню Config



см. также конфигурируем Аргус

 

Меню Help



 

Конфигурируем Аргус

Настройки системы влияют на правильность ее работы. Их необходимо произвести после первого же запуска системы Аргус на вашем компьютере. Почти все настройки осуществляются путем внесения определенных значений в поля окон, вызываемых посредством меню Config.

Эта глава содержит следующие разделы:


Кроме того, система Аргус оснащена эффективным средством защиты конфигурационных данных.

 

Защита конфигурационных данных

Для защиты конфигурационных данных системы Аргус предусмотрена возможность шифрования файла config.bin. В качестве алгоритма шифрования применяется DES/CBC с 56-битным ключом. Ключ формируется на основе вводимого пароля с помощью алгоритма MD5 (RSA Data Security, Inc. MD5 Message-Digest Algorithm).

Защита активизируется установкой Master Password (Config / Master Password/Set Up...). Master Password запрашивается при каждом запуске системы Аргус для расшифрования содержимого config.bin. Если Master Password, введенный при запуске системы Аргус, не будет соответствовать изначально установленному, данные конфигурации не смогут быть правильно расшифрованными. В этом случае остается возможным либо повторный ввод Master Password, либо выход из системы Аргус.

Использование Master Password полезно для предотвращения изучения конфигурации системы Аргус при попадания файла config.bin в руки злоумышленников. Master Password помогает избежать систем-двойников, которые могут возникнуть в случае незаметного похищения файла config.bin. Кроме того, Master Password позволяет избежать несанкционированных запусков системы Аргус.

Знание Master Password позволяет его снять (Config / Master Password/Remove...) или изменить (Config / Master Password/Change...). Перед снятием или изменением Master Password система Аргус требует ввести его еще раз. В этом случае возможным является либо правильный ввод Master Password, либо выход из системы Аргус.

Master Password нигде не хранится и формируется на основе вводимого Master Password, поэтому настоятельно рекомендуется все же не забывать Master Password, либо, перед установкой Master Password, сохранить оригинальный config.bin в надежном месте.

 

Каталоги

Для того чтобы система Аргус могла функционировать, ей необходимо знать пути к определенным файлам, а так же к каталогу для входящей и исходящей почты, и т.д. Настройка путей системы осуществляется в диалоговом окне Config / PathNames.

В этой главе описываются каталоги, с которыми работает Аргус (Home Directory и Special Directories), и их назначение.

Home Directory - основной каталог почтовой системы.

Special Directories - сетка ввода строк, в которой прописываются служебные каталоги почтовой системы: Secure inbound, Insecure inbound, Temporary inbound, Outbound и Log.


Настройка номера зоны по умолчанию

В поле ввода Outbound Default Zone (зона основного каталога для буфера отправки) Вы должны указать номер зоны, которому по умолчанию будет соответствовать каталог указанный в поле Outbound списка Special Directories. По умолчанию там установлено значение '2', что регионально соответствует Евроазиатскому континенту в сети FidoNet.


См. также Буфер отправки системы Binkley и файл-боксы.

 

Home Directory

Home directory - основной каталог, в котором располагается система Аргус и ее вспомогательные файлы. Здесь хранится файл конфигурации (config.bin), файл истории списков ввода (history.bin), список недокаченных файлов (badwazoo.lst), откомпилированный список узлов (nodelist.bin), флаг необходимости компиляции списка узлов (nodelist.ok), флаг необходимости экстренного выхода (exit.now) и.т.д. В Home Directory обычно (хотя не обязательно) находятся каталоги Special Directories. Текущий путь к Home Directory показывается в одноименной панели окна. Для того чтобы изменить этот путь, необходимо нажать на кнопку 'Change', расположенную в правой части этой панели. Как правило, Home Directory создается единожды при установке пакета Аргус на Ваш компьютер, и изменять его в дальнейшем не требуется.
 

Специальные каталоги

В этой главе описываются служебные каталоги почтовой системы: Secure inbound, Insecure inbound, Temporary inbound, Outbound и Log.

Обычно все, или большинство этих каталогов, расположены в Home Directory. В этом случае, пути к ним можно указывать не полностью (C:\FIDO\ARGUS\LOG), а относительно Home Directory (LOG). То есть, если в строке пути служебного каталога не указан диск, то путь к нему считается относительным и строится из Home Directory. Если строка пути начинается с косой черты, то путь строится из корневого каталога того же диска, на котором расположен Home Directory.

Если в строке пути к служебному каталогу диск указан, то такой путь считается абсолютным и не зависит от Home Directory.

Пример трансляций записей таблицы Special Directories в строки пути. Пути строятся с учетом Home Directory C:\FIDO\ARGUS.

Запись Транслируется в
LOG C:\FIDO\ARGUS\LOG
IN\SEC C:\FIDO\ARGUS\IN\SEC
\IN\PROT C:\IN\PROT
R:\FL\OUT R:\FL\OUT

См. также Расширенная хронология.

 

Secure inbound

Secure inbound - каталог, в который будут помещаться файлы, удачно и полностью принятые во время соединения с парольным линком.

См. также Special Directories.
 

Insecure inbound

Insecure inbound - каталог, в который будут помещаться файлы, удачно и полностью принятые во время соединения с непарольным линком.

См. также Special Directories.
 

Temporary inbound

Temporary inbound - в этом каталоге создаются файлы, находящиеся в стадии приема. После успешного завершения файл переносится в Secure Inbound или Insecure inboundили в файл-бокс.

Если файл с таким именем уже существует в Inbound, то новый будет храниться здесь до тех пор, пока старый не будет удален или перенесен вследствие обработки другой программой. Если сеанс обрывается в момент приема файла, принятая часть будет сохранена здесь, чтобы впоследствии принимать этот файл не с начала, а с сохраненной позиции.

Для надежности работы, переданные файлы перемещаются из Temporary Inbound в Secure/Insecure Inbound или в файл-бокс путем операции "переименовать", а не "скопировать и удалить", поэтому оба каталога (исходный и назначения) должны находиться на одном томе или физическом диске.

См. также Special Directories.
 

Outbound

Outbound - буфер отправки системы Binkley. В этом каталоге Аргус будет искать отправляемые пакеты.

См. также Special Directories и файл-боксы.
 

Log

Log -в этом каталоге ведется история Менеджера Прозвонок (polls.log), TCP/IP Deamonа (ipdaemon.log), периодического запуска внешних приложений (cronapps.log), протокол модемных и TCP/IP (ip_?.log) линий почтовой системы, а также расширенная хронология.

См. также Special Directories.
 

Основные пункты конфигурации

В этой главе описываются основные пункты конфигурации, которые желательно настроить перед началом работы с системой Аргус.


По умолчанию (до внесения изменений) значения этих пунктов позволяют программе работать в простом режиме.

 

Конфигурация

Список узлов представляет собой удобный способ распространения и обновления данных о структуре сети. Это официальный документ в рамках сети (более подробно описан в отдельной главе Список узлов (FTS-0005) ). Аргус имеет возможность работать как с одним или несколькими списками узлов, так и вообще без них.

Список узлов конфигурируются в диалоговом окне Nodelist Configuration меню Config.


Files

Files - сетка ввода имен файлов, содержащих списков узлов.
В именах файлов списков узлов можно использовать следующие нижеследующие символы-маски и регулярные выражения.

* любая комбинация символов
? любой символ
% цифра ('0'-'9')

Note that unlike other cases, Wildcards and Regular Expressions here are used not to select multiple files matching given Wildcard or Regular Expression but select only one file, newest from all matching.

Количество файлов, ровно как и их суммарный размер, не ограничены.

Вы можете работать с Аргусом без списка узлов, прописав номера телефонов (Интернет - адреса) узлов, на которые Вы обычно звоните.

Пример содержимого таблицы Files, для использования стандартного FidoNet NodeList со списком пойнтов сети 5020.

[Nodelist Files]

Phones

Phones - сетка телефонных префиксов. Если номер телефона, на который должна производиться прозвонка, начинается со значения, указанного в поле колонки Phone Prefix, то это значение будет заменено на значение соответствующего поля из колонки Replace With.

Пример таблицы Phones

[Nodelist Phones]

При таком содержимом таблицы Phones, префикс 7-095- будет заменен на пустую строку, то есть будет удаляться, префикс 373-2- на 8w0422, а ко всем остальным номерам будет добавлен 8w10. Таким образом, номер 373-2-146151 будет набран как 8w0422146151, номер 7-095-654321 как 7654321, а номер 46-46-738100 как 8w104646738100.

При работе в автономном режиме может возникать необходимость автоматической компиляции списка узлов, которая производится по обнаружению файла nodelist.ok в Home Directory.

 

Конфигурация паролей

В этой сетке ввода строк прописываются пароли на сеансы связи с определенными узлами. В одном поле Nodes можно перечислять несколько узлов через пробел. Использование адресных масок и регулярных выражений в текущей версии не допускается.

Если пришло входящее соединение от системы, ни на один из адресов которой у нас не прописан пароль, то такое соединение считается непарольным. Все файлы и почта, принятые с этой системы, помещаются в Insecure Inbound. Если удаленная система при таком соединении предложила свой пароль на сеанс связи, об этом сообщается в хронологическом журнале: “Remote proposes password....

Если пароль, предложенный удаленной системой, не совпал с паролем, значащимся у нас (или удаленная система не предложила пароля), то такой сеанс связи прерывается. При этом в хронологическом журнале сообщается “Remote presented .... when .... required” (или “Remote presented no password when .... required”). Чтобы сообщить удаленной системе об ошибке пароля, ей передается наша часть EMSI-данных, с ключевым словом “BAD_PASSWORD” (или “NO_PASSWORD”), после чего в хронологическом журнале сообщается “Password security violation - disconnecting” и производится физическое отсоединение.

При совпадении паролей, сеанс считается парольным, все принятые файлы и почта помещается в Secure Inbound, а в хронологическом журнале сообщается “Password-protected session”.


Дополнительный файл паролей

В строке ввода Auxiliary Passwords File можно указать путь к файлу дополнительных паролей, которые будут использоваться помимо указанных в сетке. Формат файла следующий (один пароль на строку):

СписокАдресов| Пароль

Пример:

2:469/38 | SUPER
2:469/77 2:469/84 | PUPER

Дополнительный файл паролей загружается в память при запуске Аргуса, а также при обнаружении флага PASSWORD.OK в Home Directory. Результаты загрузки файла отражаются в хронологии прозвонок.


 

Конфигурация параметров запуска

В диалоговом окне Startup Configuration настраиваются параметры, которые учитываются Аргусом только при запуске.

Вызов данного окна осуществляется через меню Config / Startup.


Настройка автоматического открытия линий почтовой системы

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

В списке Dialup Lines / Auto-open перечисляются модемные линии почтовой системы, которые будут автоматически открыты при запуске программы. Оставшиеся линии (которые можно будет открыть вручную, через System / Open Dialup Line) перечисляются в списке Dialup Lines / Manual-open.

Если Вы выделите одну или несколько линий из списка Manual-open, то после нажатия кнопки > эти линии попадут в список Auto-open, и впредь будут открываться автоматически при старте системы. Если Вы желаете снова вручную открывать какую либо линию, то выделите ее имя в списке Auto-open, и нажмите кнопку <.


Настройка автоматического запуска TCP/IP Daemon

Опция Auto-Run TCP/IP Daemon служит для автоматического запуска TCP/IP Daemon.


Fast logging

При использовании стандартных установок, система Аргус держит файлы хронологии закрытыми, открывая их лишь в случае необходимости добавления новых данных. Это дает возможность переносить или стирать эти файлы без перезапуска Аргуса. При использовании опции Fast logging, Аргус может держать файлы хронологии открытыми, что позволяет сэкономить системное время и ресурсы за счет избавления от необходимости переоткрывать эти файлы при каждой операции записи. При этом для удаления / переноса файлов хронологии необходим перезапуск Аргуса.
Please note that improper use of Fast logging in OFF mode may be dangerous. If Argus fails to open a log file for writing, it will never try to open it again while running. So do not open log files in a mode that will prevent Argus from writing. Better way would be to rename the file to a temporary name, analyse it, and then, possibly, move somewhere to archive directory.

См. также Расширенная хронология.


Log WZ pending/incomplete

This options turns on/off logging number of files in temporary inbound. There may be two reasons when incoming files are stored in temporary inbound after a session terminates. First reason is when Argus was unable to move received files from temporary inbound (e.g. due to file with same name already exists in destination directory). Such files in temporary inbound are called pending files. Second reason is when a session was aborted during a file transfer was in progress, so the file wasn't completely received. Such files are called incomplete files.


ODBC logging

This option turns on ODBC logging, as described in ODBC logging chapter.

 

Расширенная хронология

Кроме готовой текстовой хронологии, предназначенной для восприятия системным администратором, Аргус ведет также файлы расширенной хронологии:

access_log Общая хронология переданных файлов в стандарте NCSA
agent_log Общая хронология типов удаленных почтовых систем в стандарте NCSA
binary_log Общая хронология (в двоичном формате) сеансов связи и переданных данных

Файлы access_log и agent_log доступны для анализа любым NCSA-совместимым анализатором статистики. Пример результатов обработки этих файлов можно получить по http://www.ritlabs.com/stat/argus.html, где находится свежая статистика fido-сервера RIT Zeppelin (2:469/38), сформированная программой analog2.11/Win32 © Stephen R. E. Turner.

Формат файла binary_log совместим с используемым в T-Mail © Andy Elkin и BinkD © Dima Maloff. Для обработки результатов этого файла можно воспользоваться утилитой T-Hist © Michael Markowsky (2:5020/378@fidonet).


Способы работы с файлами хронологии

При использовании стандартных установок, система Аргус держит файлы хронологии закрытыми, открывая их лишь в случае необходимости добавления новых данных. Это дает возможность переносить или стирать эти файлы без перезапуска Аргуса. При использовании опции Fast logging диалога Config / Startup, Аргус может держать файлы хронологии открытыми, что позволяет сэкономить системное время и ресурсы за счет избавления от необходимости переоткрывать эти файлы при каждой операции записи. При этом для удаления / переноса хронологии необходим перезапуск Аргуса.

 

Конфигурация модемных соединений

Здесь содержится информация, с которой необходимо ознакомиться для правильной настройки модемных соединений. Если Вы используете систему Аргус только для работы по TCP/IP, эту главу можно пропустить и перейти к конфигурации TCP/IP.

В этой главе описывается элементы основной панели конфигурации модемных соединений, а также все дополнительные окна конфигурации.

Глава включает следующие разделы:


 

Основная панель

Основная панель конфигурации модемных соединений состоит из шести страничек. Первые пять страничек предназначены для управления группами, а на шестой находится таблица переопределений узлов.


Группы конфигурации модемных соединений системы Аргус.

Lines Конфигурация линий почтовой системы
Station Настройка EMSI-данных
Ports Настройка коммуникационных портов
Modems Конфигурация модемов
Restrictions Схемы ограничения прозвонок

Кнопки панели конфигурации модемных соединений

New Позволяет создать новый элемент в группе, со значениями, принятыми по умолчанию.
Edit Редактирует выбранный элемент группы.
Copy Создает новый элемент в группе, со значениями, скопированными с выюранного элемента.
Delete Удаляет элемент из группы и переносит в список удаленных элементов. Последний элемент группы Lines, а также главный элемент любой другой группы удалить нельзя.
Undelete Восстанавливает все удаленные элементы (помещенные в список удаленных элементов).
Default Назначает выбранный элемент группы главным элементом, или “элементом по умолчанию”. Об этом свидетельствует перемещение красного кружка - маркера главного элемента.

 

Конфигурация линий почтовой системы

В этом окне происходит привязка компонентов групп и привязка событий к линии почтовой системы. Окно состоит из двух страничек - General и Events.


General

Привязать можно как к определенному элементу, так и к Default - “элементу по умолчанию” (в этом случае тогда при переназначении этого элемента в группе, линия автоматически привяжется к новому элементу).

Line name Название линии. Высвечивается в ярлычке окна почтовой системы при активизированной линии.
Station template EMSI-данные, используемые линией.
Port COM-port, используемый линией.
Modem Модем, используемый линией.
Restrictions Ограничения, используемые линией.
Log file name Имя файла хронологического журнала. Если полный путь не указан, файл располагается в каталоге Log.
Fax inbound Каталог, в который будут помещены принятые факсимильные документы в формате TIFF (Tagged Image Format File).

См. также Расширенная хронология.


Events

В списке Available находятся события, не привязанные к данной линии. Привязать их можно нажатием кнопки > , это перенесет событие в список Linked и привяжет к линии.

 

Настройка EMSI-данных

Диалог настройки EMSI -данных состоит из трех страничек: Данные EMSI, Приглашение и AKA.


Данные EMSI

Данные о Вашей станции, передаваемые удаленной машине при EMSI-соединении. Обычно эти данные в точности совпадают с данными о Вашей станции из списка узлов.

Station Name Название почтовой (файловой) станции
Address list Список адресов станции (AKA), через пробел
Sysop name Имя системного оператора
Location Географическое положение станции
Phone Номер телефона
Flags Флаги

Приглашение

Приглашение - это текст, который выводится на экран пользователю, который соединяется с Аргусом, обычной терминальной программой (а не почтовой системой стандарта FTN), чтобы воспользоваться каким-либо консольным сервисом, введя с клавиатуры специальную последовательность.


AKA

Аргус имеет возможность при соединении с определенными адресами подставлять в качестве своего списка адресов иные значения, нежели Address list таблицы данных EMSI.

В поле “Удаленные адреса” можно перечислять несколько адресов или масок / регулярных выражений через пробел. При совпадении одного из адресов поля “Удаленные адреса” с одним из адресов удаленной системы в качестве списка адресов нашей станции будут предъявлены адреса поля “Локальные адреса” соответствующего ряда. Формат поля “Локальные адреса” идентичен формату поля Address list таблицы данных EMSI.

Механизм AKA работает как на EMSI, так и на BinkP-соединении.

Первичным адресом удаленной системы при парольной сессии считается не первый из строки AKA, а первый запароленный адрес. Тем не менее, запаролено может быть сразу несколько адресов, при этом пароль должен быть единым для всех. Первичный адрес используется как адрес для привязки запрошенных файлов, а также во время SRIF-запросов, а также для ведения binary_log и access_log. Механизм сортировки входящих файлов по каталогам, в зависимости от адреса удаленной системы, также использует первичный адрес.

 

Настройка коммуникационных портов

Параметры асинхронного коммуникационного порта: номер, скорость обмена, flow control и количество бит.

Скорости обмена свыше 38400 следует использовать с большой осторожностью, т.к. аппаратура или операционная система может не успевать обрабатывать поток, об этом может свидетельствовать появление в хронологическом журнале ошибок CE_BREAK, CE_OVERRUN, CE_FRAME, и.т.д.

 

Установка битовых параметров линий

[Line Bits Settings]

Диалог установки битовых параметров линий вызывается нажатием соответствующей кнопки окна настройки коммуникационных портов.

 

Конфигурация модемов


External Fax Receiver

Изменять значение этого поля необходимо только тогда, когда Вы намерены использовать данный модем, кроме передачи файлов, еще и для приема факсов.


General Commands

В сетке ввода строк содержатся управляющие строки (последовательности/команды) модема. В строках, посылаемых модему, можно указывать управляющие спецсимволы, которые описаны в отдельной главе Modem control characters.

Init ATZ| Строка инициализации модема. Посылается при запуске линии, по окончании сеанса связи, каждые две минуты вне сеансов (для проверки модема), и, перед набором номера.
Answer ATA! Строка, посылаемая модему по обнаружению сигнала RING. После посылки этой строки происходит переход линии в режим ожидания соединения.
Dial prefix ATDP Префикс команды набора номера. Полная команда набора номера состоит из префикса, собственно номера и суффикса,
Dial suffix ! Суффикс команды набора номера. Суффикс в большинстве случаев состоит из единственного символа ! (спецсимвол CR без ожидания)
Hangup !`v~~^`!!` Команда физического отсоединения. Большинство модемов производят отсоединение по опусканию сигнала DTR. Данная строка посылает CR, ожидает 0.1 сек, опускает DTR, ожидает 1.0 сек, подымает DTR, ожидает 0.1 сек, дважды посылает CR, и снова ожидает 0.1 сек.
Info none Info command is sent to the modem after a session termination, before sending Init string. The result of this command is logged. You may use Response Log Format atom to format data came from a modem. By default, Info command is not defined, so no info command at all is sent.

См. также Контроль потока данных


Responses

Сетка ввода стандартных строк ответов модема. В каждом поле можно перечислить через пробел несколько вариантов ответа для данного типа. Сам же символ пробела в строке ответа заменяется на символ подчеркивания. You may not use wildcards but may use Regular Expressions here.


Flags

Перед прозвонкой на узел с определенными флагами (которые указаны в списке узлов или непосредственно в настройках узлов в Аргусе), можно инициализировать модем для использования других протоколов соединения, то есть использовать иные Init string / Dial Prefix / Dial Suffix, нежели описаны в General Commands.

В поле первой колонки (Flag list) перечисляются флаги, во второй (Init/Prefix/Suffix) - замещенные Init string / Dial Prefix / Dial Suffix.

Флаги в поле Flag List можно перечислять, используя логические операции ИЛИ / И. "Пробел" означает ИЛИ, "запятая" - И. Приоритет И выше.

Пример перечисления флагов с использованием логических операций.

Поле колонки flags list Трактовка
PEP PEP
HST H16 HST или H16
V32B,V42B V32B вместе с V42B
ZYX,V34 32T или ZYX вместе с V34, или V32T

В поле второй колонки (Init/Prefix/Suffix) таблицы Flags перечисляются через дробь: Init String, Dial Prefix и Dial Suffix. Одиночная точка на месте Dial Prefix и Dial Suffix интерпретируется как соответствующее значение из General Commands.

Пример формирования строк инициализации модема и набора номера, на основе значений сеток General Commands и Flags List:

Номер телефона 323323

Значения General Commands

Init ATZ|
Dial Prefix ATDP
Dial Suffix !

Значение поля колонки Flags List Строка инициализации перед прозвонкой Строка набора номера Комментарий
ATB1|/ATM0DP/! ATB1| ATDP323323! Init string - ATB1|
Prefix - ATM0DP
Suffix - !
ATM0|/ATDT ATM0| ATDT323323! Init string - ATM0|
Prefix - ATDT
Suffix - !
ATH1| ATH1| ATDP323323! Префикс и суффикс опущены - берем их из General Commands
/ATX7DP/@! ATX7DP323323@! Одиночная точка на месте строки инициализации - строка инициализации пуста
ATB0|/./@! ATB0| ATDP323323@! Одиночная точка на месте Dial Prefix - берем его из General Commands

 

Управляющие символы модема

Интерпретация спецсимволов команд модема, используемых в сетке ввода строк Commands диалогового окна Modem Configuration

Символ Код Действие
` 60 задержка 0.1 сек
~ 7E задержка 0.5 сек
^ 5E поднять DTR
v 76 опустить DTR
| 7C послать CR (0D) и ждать от модема ответа OK с таймаутом 3 сек
! 21 послать CR без ожидания
\ 5C послать следующий символ как есть (без интерпретации как специальный).
Например, \~ - послать тильду

См. также Контроль потока данных
 

Прием факсов

Аргус имеет возможность, помимо передачи файлов по FTN-технологии, заниматься приемом факсов. Прием может осуществляться как посредством внешних программ-приемщиков, так и внутренними функцияси системы Аргус. Отправка факсов в текущей версии Аргуса не реализована.

В диалоге Конфигурация линий почтовой системы cущетвует поле "Fax Inbound", определяющее каталог, в который будут помещены принятые факсимильные документы в формате TIFF (Tagged Image Format File). Для получения имени принятого TIFF-файла используются макро-определения:

%PATHNAME% полное имя файла (с путем), например d:\fl\infax\03Jan003.tif
%PATH% путь к файлу, папример d:\fl\infax\
%NAME% имя файла (без расширения), например 03Jan003
%EXT% расширение файла, например .tif

Комбинация %PATH%%NAME%%EXT% идентична %PATHNAME%

Если при ответе на входящий звонок от модема поступило сообщение +FCON, CONNECT FAX, или +FCO - это служит сигналом для начала факсимильного приема. После обнаружения этой строки, в зависимости от значения Config / Dial-up / Modems / Fax / Fax Receiver / Internal-External, Аргус передает управление портом либо внутренним функциям приема факсов, либо внешней программе. Командная строка внешней программы задается в поле External Fax Receiver диалога конфигурации модемов. В этой строке можно использовать специальные параметры, согласно главе Сервисы. Префиксы командной строки внешней программы приема факсов те же, что и для Externals/Post-processors:

< запустить с низким приоритетом (IDLE_PRIORITY_CLASS)
+ запустить с высоким приоритетом (HIGH_PRIORITY_CLASS)
* запустить с критическим приоритетом (REALTIME_PRIORITY_CLASS)
? запустить в скрытом режиме
?? запустить в скрытом бесконнсольном режиме (DETACHED_MODE), только для консольных Win32-приложений.
> '>' - вместо запуска приложения установить файл-флаг с именем, следующим за '>'.

Для приема факсов с помощью системы Аргус, ваш модем должен быть настроен на работу с Class 2. Это производится добавлением в строку инициализации команды +FCLASS=2 (или +FCLASS=2.0 для модемов USR, или +FCLASS=6 для модемов ZyXEL). Работа с другими классами в текущей версии системы Аргус не предусмотрена.

Пример настроек окна Config/Dialup/Modems для модема ZyXEL E+ для приема факсов с использованием программы BGFAX B.J. Guillot в качестве внешнего приемщика:

External Fax receiver c:\bgfax\bgfax32.exe /fzyx c:\bgfax h%h z /dte:%b
Commands/Init ATZ|AT+FCLASS=6|
Commands/Answer AT+FAA=1;A!

Внутренний приемщик факсов поддерживает наборы команда Class 2 и Class 2.0.

Class 1 внутренним приемщиком также не поддерживается.

Строки ответа для приема факсом внутренним приемщиком схожи с используемыми для внешнего:

Для модемов Class 2 ~AT&F|AT+FCLASS=2|AT+FLID="ID"|AT+FAA=1;a!
Для модемов Class 2.0 ~AT&F|AT+FCLASS=2.0|AT+FLI="ID"|AT+FNR=1,1,1,1|at+FAA=1;a!

Некоторые факс-модемы переключают скорость порта на 19.2 Kbps после установления факс-соединения, другие же оставляют скорость порта неизмененной. Скорость порта должна быть синхронизирована между компьютером и модемом. Это достигается установкой соответствующего значения чекбокса "Switch DTE to 19.2 Kbps" странички "Fax" диалога конфигурации модема. Прием "мусора" после строки +FCON (или +FCO) свидетельствует о неправильно установленном значении чекбокса "Switch DTE to 19.2 Kbps".

 

Схемы ограничений прозвонок

Ограничения на прозвонку:


Допускается объединение адресов в группу, с использованием масок и регулярных выражений.

Условия перечисляются через пробел.

Элементы в строке комбинируются логической операцией И, строки в таблице - логической ИЛИ.

Пример

Required +7-095- CM 2:50*/* HST

Звонить на узел только если его телефон начинается на +7-095-, у него прописаны флажки СM и HST и он находится в 50-ом регионе второй зоны.

Forbidden 2:5020/666.* +7-095-212- ISDN

Не звонить если адрес узла 2:5020/66*, и номер телефона узла начинается на +7-095-212-, и у узла прописан флажок ISDN.

 

Таблица переопределений узлов

Сетка ввода строк, в которой можно переопределить для узла один или более номеров телефона, переопределить флаги и время работы вместо, указанных в списке узлов. Номер телефона можно указывать косвенно (через список узлов).

Рассмотрим случай, когда узел не находится в список узлов, а Вы указали номер его телефона без флагов. Поскольку время работы этого узла не указано (отсутствуют, флаги, в том числе описывающие время его работы), подразумевается, что такой узел может принимать звонки только в ZMH (а пойнт вообще никогда). Поэтому
появление пакета с приоритетом Crash или Direct в буфере отправки будет служить Аргусу сигналом звонить узлу только в его ZMH. Пойнту, в этом случае, Аргус звонить вообще не будет. Прозвонка может не происходить также и из-за того, что флаги узла прописаны не до конца, и/или могут не соответствовать Dial Restrictions.

Вы можете работать с Аргусом без списка узлов, указав здесь номера телефонов узлов, на которые Вы обычно звоните.

Формат переопределения узла:

номер,флаги

Номер в переопределении можно указывать как прямо, например +31-133-456-1850,CM так и косвенно (номер будет извлечен из текущего списка узлов) например 5:133/555,CM

Одно переопределение может содержать несколько узлов, перечисленных через пробел.

Значение поля колонки Node Значение поля колонки Override Комментарий
55:133/561 +31-133-456-1850 Сменился номер
55:133/562 55:133/562,U,TEX Сменилось время работы узла
5:133/555 5:133/555,U,TAB,TDE Узел работает с 00:00 до 01:00 и с 03:00 до 04:00 по UTC
55:133/563 55:133/563,CM,V34 Появился новый (V.34) модем
3:34/3443 333-031,CM 333-032,CM 333-033,CM Круглосуточный трехлинейный узел
3:383/513 3:383/513 3:383/550 3:383/560 Три адреса у одного многолинейного узла
3:383/514 3:383/513,HST,CM 3:383/550,V34,U,TACL Первая линия работает круглосуточно, а вторая - с 00:00 до 02:00 по местному времени.

Файл дополнительных переопределений

В строке ввода Auxiliary Nodes File можно указать путь к файлу дополнительных переопределений модемных узлов, которые будут использоваться помимо указанных в сетке. Формат файла следующий (переопределение одного узла на строку):

Адрес | Переопределения

Пример:

2:469/38 | 373-2-246-530,CM,ZYX 373-7-222-222,CM,HST
3:383/514 | 3:383/513,HST,CM 3:383/550,V34,U,TACL

Файл дополнительных переопределений загружается в память при запуске Аргуса, а также при обнаружении флага DUPOVR.OK в Home Directory. Результаты загрузки файла отражаются в хронологии прозвонок.


Специальные флаги выбора протокола

Для запрещения использования отдельных протоколов на исходящих сессиях с определенными узлами, в переопределениях этих узлов используются следующие флаги:

NOHYD Запрещает протокол Гидра.
NOZM Запрещает протокол ZModem. Этот флаг является комбинацией флагов NODZA, NOZAP, NOZMO. См. также атом Transmit ZModem Disabled atom.
NODZA Запрещает протокол DirZap.
NOZAP Запрещает протокол ZedZap.
NOZMO Запрещает протокол ZedZip.
NONIAGARA Запрещает протокол Niagara. Этот протокол используется для установки сеанса связи BinkP (в.т.ч щифрованный BinkP) на модемных соединениях. См. также атом Transmit Niagara Disabled.
NOEMSI Запрещает протокол EMSI. См. также атом Transmit EMSI Disabled.
NOYOOHOO Запрещает протокол YooHoo handshake. См. также атом Transmit YooHoo Disabled.
NODUMMYZ Запрещает передачу пустого пакета при отсутствии исходящих файлов на ZModem. См. также атом Transmit Dummy-Z Disabled.

Пример использования специальных флагов:

Node Override Комментарий
55:133/561 55:133/561,NOHYD Не устанавливать протокол Гидра на исходящей сесии с узлом 55:133/561
55:133/562 55:133/562,NOZM Не устанавливать протокол Zmodem на исходящей сесии с узлом 55:133/562

 

Override Line Editor

Argus Override Line Editor (Config/Dial-up/Nodes/Edit) allows more comfortable editing of an override line of Node Overrides Table. The Editor allocates one line of its string grid per remote's 'phone number. It also allows human-readable Online Time representation in local time e.g. while in Node Overrides Table you should specify U,TAB,TLX, here you can simpy write 03:00-04:00,14:00-02:00 if you are in GMT+2 time zone.


 

Конфигурация TCP/IP

В этой главе описываются принципы работы системы Аргус по TCP/IP. Если Вы используете Аргус только для работы с коммутируемыми модемными соединениями, эту главу можно пропустить.

TCP/IP Daemon
Диалог кофигурации TCP/IP Daemon
Специальные флаги TCP/IP

 

TCP/IP Daemon

Daemon - это своеобразный менеджер, управляющий динамическим созданием и освобождением линий почтовой системы, работающий с входящими/исходящими TCP/IP соединениями.

Как только с системой Аргус произошло очередное входящее/исходящее соединение, Daemon открывает новую линию почтовой системы и инициирует соответствующий почтовый протокол высокого уровня. По окончании сеанса связи Daemon закрывает линию и завершает соединение.

TCP/IP Daemon системы Аргус поддерживает три основных протокола высокого уровня, работающих по транспортному протоколу TCP/IP: Raw (или ifcico), Telnet и BinkP.


См. также:
Диалог кофигурации TCP/IP Daemon
Специальные флаги TCP/IP

 

Диалог кофигурации TCP/IP Daemon

Диалог конфигурации TCP/IP Daemon вызывается посредством меню Config / TCP/IP Daemon.


General

Здесь описываются параметры соединений TCP/IP. В сетке Incoming Ports указываются номера портов, на которых TCP/IP Daemon ожидает входные соединения для каждого из трех протоколов.


Station

Данные о станции, передаваемые удаленной системе. Они во многом схожи с данными, конфигурируемыми для модемных EMSI-соединений. Однако если Вы намерены связываться с почтовой системой BinkD by Dima Maloff, использующий протокол BinkP, адреса в поле Address List следует указывать в соответствии с 5D-адресацией, то есть с обязательным указанием домена, например 2:469/84@fidonet. Если Вы укажете свой адрес без домена, например 2:469/84, то BinkD не сможет его интерпретировать как 5D и аварийно завершит соединение.


AKA

Аргус имеет возможность, при соединении с определенными узлами, подставлять в качестве своего списка адресов иные значения, нежели Address list таблицы данных Station.

В поле “Удаленные адреса” можно перечислять несколько адресов или масок через пробел. При совпадении одного из адресов поля “Удаленные адреса” с одним из адресов удаленной системы в качестве списка адресов нашей станции будут предъявлены адреса поля “Локальные адреса” соответствующего ряда. Формат поля “Локальные адреса” идентичен формату поля Address list таблицы данных Statioin.

Механизм AKA работает как на EMSI, так и на BinkP-соединении.

Первичным адресом удаленной системы при парольной сессии считается не первый из строки AKA, а первый запароленный адрес. Тем не менее, запаролено может быть сразу несколько адресов, при этом пароль должен быть единым для всех. Первичный адрес используется как адрес для привязки запрошенных файлов, а также во время SRIF-запросов, а также для ведения binary_log и access_log. Механизм сортировки входящих файлов по каталогам, в зависимости от адреса удаленной системы, также использует первичный адрес.


Banner

Banner - это приглашение, текст которого выводится на экран пользователю, который соединяется с Аргусом обычной терминальной программой типа Telnet (а не почтовой системой стандарта FTN), обычно на порту 23.

Restrictions

Ограничения для исходящих IP-соединений.

Условия ограничения для исходящих IP-соединений схожи с условиями ограничений модемных прозвонок.


Events

В списке Available находятся события, не привязанные к TCP/IP Daemon. Привязать их можно нажатием кнопки > , это перенесет событие в список Linked и привяжет к TCP/IP Daemon.


Nodes

Сетка переопределений TCP/IP узлов, в которой можно переопределить для узла один или более IP-адросов, портов или протоколов. Здесь также можно переопределить флаги и время работы узла, вместо указанных в списке IP - узлов. IP-адрес можно указывать косвенно (через список IP - узлов).

В строке ввода Auxiliary Nodes File можно указать путь к файлу дополнительных переопределений TCP/IP-узлов, которые будут использоваться помимо указанных в сетке. Формат файла следующий (переопределения одного узла на строку):

Адрес | Переопределения

Пример:

2:469/38 | 373-2-246-530,CM,ZYX 373-7-222-222,CM,HST
3:383/514 | 3:383/513,HST,CM 3:383/550,V34,U,TACL

Файл дополнительных переопределений загружается в память при запуске Аргуса, а также при обнаружении флага IPOVR.OK в Home Directory. Результаты загрузки файла отражаются в хронологии прозвонок.

Рассмотрим случай, когда узел не находится ни в список узлов, ни в DNS, а Вы указали адрес его хоста без флагов, указывающих время работы. Подразумевается, что такой узел может принимать звонки только в ZMH (а пойнт вообще никогда). Поэтому
появление пакета с приоритетом Crash или Direct в буфере отправки будет служить Аргусу сигналом устанавливать исходящие соединения с узлом только в его ZMH. С пойнтом, в этом случае, Аргус вообще не будет пытаться установить исходящее соединение. Прозвонка может не происходить также и из-за того, что флаги узла прописаны не до конца, и/или могут не соответствовать Dial Restrictions.

Вы можете работать с Аргусом без списка IP-узлов, указав здесь IP-адреса узлов, на которые Вы обычно звоните.

Таблица переопределений TCP/IP узлов схожа с таблицей переопределений модемных узлов.

Формат переопределения узла: адрес,флаги

Узел, работающий по IP должен обязательно содержать один из специальных TCP/IP-флагов.

Адрес в переопределении можно указывать как прямо, например 193.219.215.111,CM,IFC так и косвенно (номер будет извлечен из текущего списка узлов) например 5:133/555,CM,IFC

Одно переопределение может содержать несколько узлов, перечисленных через пробел.

Адрес можно задавать как в цифровом, так и в символьном (DNS) виде, то есть в виде имени Интернет-хоста. Для указания адреса в символьном виде, его необходимо заключать в кавычки: "fido.ritlabs.com",CM,IFC

Для переопределения IP-порта его значение указывается после адреса через символ подчеркивания: "fido.ritlabs.com"_23,CM,IFC или "193.219.215.111"_23,CM,IFC

Auxiliary TCP/IP node overrides file is loading into memory on Argus Start-up and by detection of IPOVR.OK file-flag in Argus Home Directory. Results of parsing of the file are logged in polls log.

DNS

Argus also supports DNS distributed nodelists.

IP addresses of FTN nodes can be from DNS by rendering their FTN addresses to host domain name and resolving this name. The rendering is performing by the following scheme:

[p<Point>.]f<Node>.n<Net>.z<Zone>.<RootDomain>

The default root domain for Fidonet-reserved FTN-zones (1,2,3,4,5,6) is fidonet.net. E.g., the IP address of node 1:2/3.4, according to this scheme, is to be the same as of host p4.f2.n3.z1.fidonet.net.

Root domains for each address mask are configured in DNS tab of TCP/IP Daemon Configuration dialogue. Address mask may also contain Regular Expressions.


См. также:


 

Специальные флаги TCP/IP

TCP В соответствии со стандартом IP-листа, этот флаг обязателен для любого TCP/IP узла, однако система Аргус снимает это ограничение.
IFC Raw (ifcifo) (по умолчанию порт 60179)
TEL или TELNET Telnet (по умолчанию порт 23)
BND или BINKD BinkP (по умолчанию порт 24554)

См. также:


 

Конфигурация файловых запросов


General


Основные установки обслуживания файловых запросов.

Рассмотрим основную сетку ввода строк из диалогового окна конфигурации файловых запросов. В ней перечисляются каталоги, в которых содержатся файлы, предназначенные для пересылки по запросам, пришедшим во время сеанса связи. Для каждого каталога может быть задан пароль. Количество определяемых каталогов не ограничено. Перечисленные в pathnames каталоги, вмесите с подкаталогами и файлами, называются "файловой базой".


При отключенной опции почтовая система индексирует базу, и на поиск уходит уже меньше секунды, однако после каждого обновления файлов индексы также подлежат обновлению.


Aliases

Часто встречается случай, когда запрос осуществляется не по имени файла, а по псевдониму. Например, общеупотребителен псевдоним FILES. При запросе этого "файла" передается файл, содержащий полный список всех файлов системы. У каждой системы этот файл имеет собственное уникальное имя, но почти везде можно запросить FILES и получить что-нибудь вроде rz-all.zip в ответ.

В поле Alias сетки ввода строк Alias прописывается псевдоним файла, в поле Path - путь к файлу, который будет отдаваться по этому псевдониму, а в поле Password - необязательный пароль.

В псевдонимах файловых запросов можно использовать маски (как в поле Alias, так и в поле Path). Предшествующий символ '>' означает самый свежий файл, попадающий под эту маску. На один псевдоним можно назначить несколько файлов, перечислив их через пробел.

External Request Processing (SRIF)
Аргус имеет возможность вызывать внешний обработчик файловых запросов посредством стандарта SRIF (Standard Request Information File), который разработали Gordian Schuermann & Mirko Mucko.

Использование внешнего обработчика разрешается опцией Use SRIF. При этом остальные вышеописанные настройки файловых запросов игнорируются, и вся забота перекладывается на плечи внешнего обработчика. Суть метода SRIF заключается в передаче данных внешнему обработчику через временный файл, который создается почтовой системой при файловом запросе.

Имя исполнимого файла внешнего обработчика задается в поле Standard Request Information File - External Processor. Ключевое слово %SRIF% в этом поле заменяется на имя временного файла.

Пример поля при использовании AllFix © Harms Software Eng.:
c:\fido\allfix\allfix Rp -SRIF %SRIF%

 

Периодические прозвонки


Периодические прозвонки

Аргус имеет возможность периодического создания прозвонок, используя механизм Cron. Такие прозвонки называются периодическими и задаются на страничке Periodical диалогового окна Config / Polls. Прозвонки, созданные по Cron, аналогичны прозвонкам, созданным по появлению пакетов с приоритетом Crash или Direct, и завершается после удачного исходящего сеанса связи с назначенным узлом. Возникновение периодической прозвонки в момент, когда прозвонка на данный адрес уже существует, служит сигналом обнуления всех счетчиков этой прозвонки. Обнуляемыми счетчиками являются счетчик звонков, окончившихся приемом сигнала BUSY, счетчик звонков, окончившихся неудачным соединением NO CARRIER / NO ANSWER, и счетчик звонков, окончившихся обрывом сеанса связи из-за слишком большого количества ошибок или из-за потери несущей. См. также Менеджер прозвонок


Параметры прозвонок

Параметры прозвонок устанавливаются на страничке Options диалогового окна Config / Polls. Счетчики “Try Counters” содержат значения, по достижении который прозвонка переводится в режим Stand-off на время, указанное в поле “Stand-off minutes”.
Установленное значение “Transmit hold on outgoing” позволяет передавать на исходящем соединении пакеты с типом приоритетности “Hold”.


Внешние прозвонки

Внешние прозвонки предназначены для запуска внешних приложений вместо прозвонки на адрес, указанный в поле Address List диалога Config / Polls/External. По коду завершения приложения определяется успешность прозвонки. Формат поля Application идентичен используемому в Config / Externals/Doors или Config / Dial-up/Modems/External Fax Receiver, то есть работают все спецпараметры (handshake switches).

Кроме того, введены новые спецпараметры (и соответствующие переменные окружения):

%w ARGUS_NODE Адрес узла назначения внешней прозвонки, например "2:469/38".
%x ARGUS_STATION Имя узла (станции), если узел известен в списке FTS-0005.
%v ARGUS_LOCATION Географическое положение узла, если узел известен в списке FTS-0005.
%X ARGUS_SYSOP Имя сисопа, если узел известен в списке FTS-0005.
%y ARGUS_PHONE Номер телефона или IP-адрес (или имя хоста) из списка FTS-0005 или определений.
%Y ARGUS_FLAGS Флаги узла из списка FTS-0005 или определений.
%W ARGUS_SPEED Скорость узла, если узел известен в списке FTS-0005.

Формат поля options:

ДиапазонOk ДиапазонBusy ДиапазонNoC ДиапазонFail ТаймаутМинут ТаймаутКЗ

ДиапазонOk диапазон кодов завершения, по которым прозвонка считается успешной.
ДиапазонBusy диапазон кодов завершения, по которым прозвонка считается завершившейся сигналом BUSY.
ДиапазонNoC диапазон кодов завершения, по которым прозвонка считается завершившейся вследствие неудачной попытки установки соединения.
ДиапазонFail диапазон кодов завершения, по которым прозвонка считается завершившейся вследствие неудачной попытки инициирования сеанса связи.
ТаймаутМинут максимально допустимое время для работы внешнего приложения. Если приложения не завершилось самостоятельно в течении этого периода, оно будет насильственно прервано, с кодом ошибки, установленным из переменной ТаймаутКЗ. Если значение ТаймаутКЗ пропущено, то может быть пропущено и значение ТаймаутМинут - в этом случает будет использоваться число 1, то есть приложение будет прервано черед одну минуту с кодом ТаймаутКЗ.
ТаймаутКЗ код завершения внешнего приложения по истечении времени, определенном переменной ТаймаутМинут. Значение ТаймаутКЗ может быть пропущено, в этом случае внешнее приложение сможет завершиться только по самостоятельному выходу, либо непосредственно перед завершением работы самой системы Аргус.

В "Диапазонах" можно использовать перечисления и интервалы (как в cron), например "1,3,9-15". Символ точка (".") является пустым диапазоном.

Если код завершения находится вне всех четырех диапазонов, то такая прозвонка считается успешной.

Пример поля Options:

. 1 2,5-7 3,4 10 2

Это означает, что прозвонка считается Busy, если приложение завершилось с кодом 1, NoC с кодами 2,5,6,7, и Fail с кодами 3,4. Иные коды завершения служат поводом для успешного завершения прозвонки. Под время работы приложения отводится максимум 10 минут, если приложение не завершилось по истечении 10 минут самостоятельно, оно будет прервано с кодом завершения 2, который, в данном случае, находится в диапазоне NoC.


 

События

Событие служит для изменения параметров линии почтовой системы. Такими параметрами могут являться, например, командные строки модемов, доступность файловых запросов, минимально допустимая скорость соединения, и.т.д.

В отличие от периодического запуска приложений и периодических прозвонок, события сами по себе не выполняют глобальных действий в системе, и влияют только на параметры тех линий, к которым они привязаны.

Событие имеет периодичность, описываемую в формате cron, длительность воздействия на линию и список атомов.

Атом - это частица события, влияющая на один параметр конкретной линии, к которой событие привязано.

Так, например, событие, изменяющий строку инициализации модема и строку необходимых условий прозвонки, содержит два атома - атом замены строки инициализации модема и атом замены строки необходимых условий прозвонки.

Событие изменяет параметры только тех линий, к которым оно привязано!

События привязываются к линии в диалоге настройки линии Config / Dialup / Line на страничке Events.

см. также:
Описание формата Cron,
Список Атомов

 

Атомы

Атом - это частица события, влияющая на один параметр конкретной линии, к которой событие привязано. Событие привязывается к линии и служит для изменения ее параметров.

Так, например, для изменения строки инициализации модема и строки необходимых условий прозвонки, событие, привязанное к линии, должно содержать два атома - атом замены строки инициализации модема и атом замены строки необходимых условий прозвонки.

В текущей версии поддерживаются следующие типы атомов:

Modem Command Init Командная строка инициализации модема.
Обычно используется для запрещения включения динамика модема в ночное время, либо для установки определенных протоколов по часовому расписанию.
Modem Command Answer Командная строка ответа модема на входящий звонок.
Обычно используется для установки соединения требуемых протоколов в определенное время.
Modem Command Prefix Префикс командной строки модема набора номера.
Обычно используется для установки определенных протоколов для исходящих соединений. А также для работы через внутренние мини-АТС в ночном режиме.
Modem Command Suffix Суффикс командной строки модема набора номера.
Modem Command Hangup Командная строка модема для отсоединения.
Этот атом обычно применяется вместе с атомом Modem Command Init.
Modem Disable Reinit Запретить регулярную инициализацию модема. Этот атом не разрешает инициализировать модем, находящийся в режиме ожидания.
Restriction Required
Restriction Forbidden
Строки необходимых/запрещенных условий прозвонок.
Применяются для учета различной тарификации звонков в зависимости от времени суток, для учета особенности работы узлов (например, не работающих по праздникам).
Replace Station Замена всех установок станции, конфигурируемых в Config / Dialup / Station.
Обычно используется на узлах, выполняющих разные функции в разное время.
Replace Modem Замена всех установок модема, конфигурируемых в Config /Dialup / Modems.
Чаще всего применяется, когда модем обслуживает разные протоколы в зависимости от времени суток. При этом порт остается неизменным.
Replace Restriction Замена схемы ограничения прозвонок, конфигурируемой в Config / Dialup / Restrictions.
Применяется вместо двух атомов Restriction Required и Restriction Forbidden.
Accept Files Required
Accept Files Forbidden
Файлы допустимые к приему / запрещенные для приема.
Чаще всего используется для запрещения в ZMH приема других файлов, кроме FTSC-0001-пакетов
Accept Nodes Required
Accept Nodes Forbidden
Узлы допустимые к приему / запрещенные для приема.
Может использоваться на хабах для распределения суточной нагрузки.
Accept Nodes Only Pwd-Prot Прерывать непарольные входящие сеансы. Этот атом не влияет на исходящие сеансы.
Accept Link Required
Accept Link Forbidden
Протоколы соединения, допустимые к приему / запрещенные для приема.
Протоколы перечисляются через пробел.
Например, HST ARQ.
Используется для запрещения соединения без коррекции ошибок в определенное время.
Accept Speed Min Минимально допустимая скорость входящих соединений.
Transmit Speed Min Минимально допустимая скорость исходящих соединений.
Accept FReq Disable Запретить отработку файловых запросов.
Accept FReq Count Public Ограничение запрашиваемых файлов по числу, для непарольных сеансов связи
Accept FReq Count Pwd-Prot Ограничение запрашиваемых файлов по числу, для парольных сеансов связи
Accept FReq Duration Public Ограничение запрашиваемых файлов по длительности сеанса связи, для непарольных сеансов связи
Accept FReq Duration Pwd-Prot Ограничение запрашиваемых файлов по длительности сеанса связи, для парольных сеансов связи
Accept FReq Size Public Ограничение запрашиваемых файлов по суммарному размеру, для непарольных сеансов связи
Accept FReq Size Pwd-Prot Ограничение запрашиваемых файлов по суммарному размеру, для парольных сеансов связи
Accept Nodes Only Pwd-Prot Допускать к приему только парольные узлы, для непарольных сеансов связи. Если во время действия этого атома непарольный узел попытается установить сеанс связи, произойдет отсоединение.
Transmit Files Forbidden Файлы, запрещенные для передачи. Этот атом не распространяется на файлы с приоритетом Crash, а также на файлы, присоединенные обработчиком файловых запросов.
Transmit Files Required Файлы допустимые к передаче. Этот атом не распространяется на файлы с приоритетом Crash, а также на файлы, присоединенные обработчиком файловых запросов.
Rings Число звонков перед поднятием трубки для ответа модемом.
(0=запрет поднятия трубки)
Accept Niagara Disabled
Transmit Niagara Disabled
Предотвращает использование протокола Niagara. Этот протокол используется протоколом BinkPшифрованным BinkP) на модемных соединениях.
Accept Hydra Disabled
Transmit Hydra Disabled
Предотвращает использование протокола Hydra.
Accept ZModem Disabled
Transmit ZModem Disabled
Предотвращает использование протокола ZModem.
Accept FTS-0001 Disabled Предотвращает использование протокола FTS-0001.
Accept No Incoming Не принимать входящие соединения. Во время активности этого атома, коммуникационный порт используется только для выходных звонков. В остальное время порт является доступным другим приложениям.
Accept YooHoo Disabled
Transmit YooHoo Disabled
Предотвращает использование протокола YooHoo.
Accept EMSI Disabled
Transmit EMSI Disabled
Предотвращает использование протокола EMSI.
Door Дополнительное приложение-сервис. Добавляет дополнительный сервис, который будет использоваться в дополнении к указанным в Config/External/Doors.
Password Дополнительный пароль. Добавляет дополнительный пароль, который будет учитываться в дополнении к указанным в Config/Passwords.
Accept Dummy-Z Disabled
Transmit Dummy-Z Disabled
Запретить передачу пустого пакета на ZModem. Если этот атом не активен (по умолчанию), в случае отсутствия файлов для передачи, на протоколе ZModem будет передан пустой PKT-файл. Передача такого файла является мерой обеспечения нормального проведения сеанса ZModem.

См. также:


 

Конфигурация внешних приложений

Текущая версия системы Аргус поддерживает три типа внешних приложений:


Обработчики, сервисы и периодически запускаемые приложения конфигурируются в диалоговом окне Config /Externals.
 

Обработчики

В сетке Post-processors диалогового окна Config/Externals настраиваются внешние программы-обработчики и сортировка принятых файлов по каталогам.


Обработчики

Обработчики - это внешние приложения, запускаемые системой Аргус по приходу определенных файлов. Обработчик запускается после завершения сеанса связи. Примерами обработчиков являются файлэхопроцессоры, тоссеры, трэкеры, и.т.д. Чтобы настроить Аргус на запуск определенного обработчика для определенной группы фалов, необходимо перечислить (через пробел) список масок этой группы в поле Mask List, а командную строку обработчика - в поле String to Execute.

Специальная маска %ARCMAIL% идентична списку масок ArcMail (*.su? *.mo? *.tu? *.we? *.th? *.fr? *.sa?)

Mask list String to execute Комментарий
*.su? *.mo? *.tu? *.we? *.th? *.fr? *.sa? c:\fido\lanius\squish.exe in out squash Запустить эхопроцессор Squish по приходу почтовых пакетов
%ARCMAIL% c:\fido\lanius\squish.exe in out squash Запустить эхопроцессор Squish по приходу почтовых пакетов
*.tic c:\fido\fileecho\allfix.exe file -tossbad Запустить файлэхопроцессор Allfix по приходу TIC файлов

Символ '?' перед командой/именем файла в строке String to Execute сообщает о том, что процесс должен быть запущен в скрытом режиме, '!' - в нормальном режиме, а ?? - в DETACHED_MODE (без использования консоли). В отличии от ?, флаг ?? можно использовать только для Win32-консольных приложений. Попытка запуска DETACHED Win3.1 или DOS-приложения вызовет ошибку. По умолчанию процессы запускаются в минимизированном окне.

Процессы могут быть запущены с определенным уровнем приоритета:

< запустить с низким приоритетом (IDLE_PRIORITY_CLASS)
+ запустить с высоким приоритетом (HIGH_PRIORITY_CLASS)
* запустить с критическим приоритетом (REALTIME_PRIORITY_CLASS)
> '>' - вместо запуска приложения установить файл-флаг с именем, следующим за '>'.

По умолчанию процессы запускаются с нормальным приоритетом (NORMAL_PRIORITY_CLASS).

Возможен также запуск внешних приложения по окончании сеанса с определенными узлами - в этом случае вместо имен файлов или файловах масок необходимо перечислить (через пробел) адреса или маски адресов

Mask list String to execute
2:469/38 playwav c:\wavs\complete38.wav
2:*/0 playwav c:\wavs\complete_nc.wav
1:2/3 4:5/6.* someapp.exe /some:parameter

См. также Конфигурация внешних приложений


Сортировка

Входящие файлы можно сортировать по каталогам, в зависимости от первичного (основного) адреса удаленной системы, с которой производился сеанс связи, а также в соответствии с файловой маской (диалог Config/Externals/Postprocessors). Такой каталог называется входящим файл-боксом. В одной строке "Mask List" можно указать несколько масок файлов и/или адресов, разделенных пробелами. Символ "амперсант" (&), предшествующий строке в поле "String to execute" указывает на то, что эта строка определяет инбаунд для файлов, которые соответствуют маскам, указанным в поле Mask List.

Иными словами, в поле Mask List можно указывать не только маски файлов, но и маски адресов. В поле "String to execute" можно переопределять входящий каталог для файлов, подходящих под маски поля Mask List. Для переопределения inbound-каталога ему должен предшествовать символ амперсант ('&').

Пример переопределения инбаунда для файлов, принятых от пойнтов узла 2:469/59,
эти файлы будут попадать в каталог INPNT

Mask list String to execute
2:469/59.* &INPNT

Фильтрация входящих файлов (и запуск внешних приложений) основанная на адресе удаленной стороны, если в строке Mask List указана маска адресов, происходит только при парольных сеансах связи.

Если путь файл-бокса указан не полностью (как в данном примере) то такой файл-бокс будет расположен в Home Directory. Тут действует правило сокращения, принятое при указании путей в сетке Special Directories диалогового окна Config/Paths.

Если во входящем файл-боксе уже находится файл с таким же именем, как и у вновь принятого файла, этот вновь принятый файл будет храниться в Temporary inbound тех пор, пока старый не будет удален или перенесен вследствие обработки другой программой. В некоторых случаях требуется обеспечить такой способ работы, чтобы вновь принятые файлы перезаписывались поверх уже находящихся, а не хранились в Temporary Inbound. В этом случае, для определения такого файл-бокса, после символа амперсант используется символ "^", т.е. &^INPNT.

Путь файл-бокса может содержать макросы, представляющие адрес уделенной системы.

%ZONE зона, десятичная (1-4 десятичные цифры)
%NET сеть, десятичная (1-5 десятичных цифр)
%NODE узел, десятичный (1-5 десятичных цифр)
%POINT пойнт, десятичный (1-5 десятичных цифр)
%HZONE зона, шестнадцатеричная (3 шестнадцатеричные цифры)
%HNET сеть, шестнадцатеричная (4 шестнадцатеричные цифры)
%HNODE узел, шестнадцатеричный (4 шестнадцатеричные цифры)
%HPOINT пойнт, шестнадцатеричный (4 шестнадцатеричные цифры)
%XZONE зона, 32-чная (2 цифры в radix-32)
%XNET сеть, 32-чная (3 цифры в radix-32)
%XNODE узел, 32-чный (3 цифры в radix-32)
%XPOINT пойнт, 32-чнай (2 цифры в radix-32)

Кроме адреса удаленной системы, макросы могут представлять текущую дату и местное время.

%YEAR Год (4 цифры)
%MONTHN Месяц (2 цифры)
%MONTHA Месяц (3 буквы)
%MONTHS Месяц (2 буквы)
%DAY День месяца (2 цифры)
%DOWN День недели (1 цифра)
%DOWA День недели (3 буквы)
%DOWS День недели (2 буквы)
%HOUR Час (2 цифры)
%MINUTE Минута (2 цифры)
%SECOND Секунда (2 цифры)

 

Сервисы

Сервисы - это специальные коммуникационные программы, которые запускаются из почтовой системы, когда от удаленной системы вместо пакета инициирования сеанса связи FTN приходит специальная строка.

Пользователь, соединяясь обычной терминальной программой со станцией, оснащенной системой Аргус, может воспользоваться сервисом, введя с клавиатуры специальную последовательность. Самой распространенной последовательностью для входа в BBS-сервисы являются два идущих подряд символа Escape. Так как символ Escape не являются печатными, вместо него в поле Enter используется символ косой черты (back slash).

Поле Door and parameters содержит путь к исполнимому файлу сервиса и специальные параметры.

Символ '?' перед командой/именем файла в строке Door and Paramenters сообщает о том, что процесс должен быть запущен в скрытом режиме, '!' - в нормальном режиме, а ?? - в DETACHED_MODE (без использования консоли). В отличие от ?, флаг ?? можно использовать только для Win32-консольных приложений. Попытка запуска DETACHED Win3.1 или DOS-приложения вызовет ошибку. По умолчанию процессы запускаются в минимизированном окне.

Процессы могут быть запущены с определенным уровнем приоритета:

< запустить с низким приоритетом (IDLE_PRIORITY_CLASS)
+ запустить с высоким приоритетом (HIGH_PRIORITY_CLASS)
* запустить с критическим приоритетом (REALTIME_PRIORITY_CLASS)
> '>' - вместо запуска приложения установить файл-флаг с именем, следующим за '>'.

По умолчанию процессы запускаются с нормальным приоритетом (NORMAL_PRIORITY_CLASS).

После соединения, в момент ожидания входа пользователя, Аргус может высвечивать заставку-приглашение для пользователей терминальных программ. Заставка устанавливается в окне настройки EMSI-данных.


Специальные параметры

Командная строка сервиса может содержать специальные параметры, которые перед запуском сервиса транслируются в соответствующие значения. Каждый параметр начинается с символа %. Все параметры регистрозависимы, то есть %c не может быть использован вместо %C.

Вот как транслируется строка параметров "Door and parameters" в строку запуска, при скорости DTE 57600, DCE 21600, номере линии - 2 и port handle - 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

Вне зависимости от того, указан какой-либо параметр или нет, система Аргус создает для запускаемого сервиса блок переменных окружения, в котором передаются все значения специальных параметров.

Environment
Description
Dialup value
TCP/IP value
%B ARGUS_DCE Скорость соединения
DCE (modem to modem)
Значение берется из “подразумеваемой скорости соединения”
%b ARGUS_DTE Скорость порта
DTE (computer to modem)
такое же, как и %B
%e ARGUS_CONNECT Строка CONNECT (пробелы заменены на подчеркивания)
такая, как вернул модем, например "16800/ARQ/HST
формируется TCP/IP Daemonом на основе адреса и порта соединения, например:
"To 194.213.233.33 #24554
%E ARGUS_CONTROL Транслированный код коррекции ошибок
"MNP", если в строке CONNECT присутствует MNP, ARQ или REL, иначе пустая строка
Всегда "TCP/IP"
%L ARGUS_NAME Имя линии почтовой системы (пробелы заменены на подчеркивания)
берется из названия линии, указанного в диалоге dialup/lines/line
"TCP/IP" плюс порядковый номер TCP/IP соединения, например:
"TCP/IP 3"
%n ARGUS_LINE Номер линии почтовой системы
Порядковый номер в списке dialup/lines, например "1" для первой линии
порядковый номер TCP/IP соединения, например "2" для линии "TCP/IP 2"
%h ARGUS_HANDLE Communication resource handle
COM port Win32 handle
WinSock2 overlapped socket handle
%C ARGUS_NUMBER Номер порта
Номер COM-порта, например "1" для COM1 или "4" для COM4
Номер TCP/IP-порт, например: 24554 для BinkP.
%p ARGUS_INDEX Индекс порта
Номер порта, считаемый с нуля, например "0" для COM1 или "3" для COM4
такой же, как и %C

Если внешнее приложение является полноценной Win32-программой, оно может унаследовать Win32-handle открытого коммуникационного порта (или соединенного Winsock2 overlapped socked), и использовать этот порт (или socket) для передачи данных.


Специальный параметр %Z


Параметр %Z всегда транслируется в пустую строку - он предназначен для того, чтобы сообщить системе Аргус о необходимости закрыть порт перед запуском внешнего приложения. После завершения работы приложения Аргус снова откроет порт. Параметр Z% предназначен для приложений Windows 3.1 и DOS, которые не в состоянии оперировать с портом, открытым в режиме Win32. Поэтому Windows 3.1 и DOS-приложения должны открывать и инициализировать порт самостоятельно.

Параметр %Z следует использовать с большой осторожностью. При закрытии порта, драйвер Windows сбрасывает все контрольные сигналы UART (см. Контроль потока данных), в том числе DTR, который в большинстве модемов применяется для инициализации. Поэтому, для передачи COM-порта DOS- и Windows 3.1-приложениям, необходимо настроить модем так, чтобы он не воспринимал изменение сигнала DTR как сброс.

Специальные параметры используются также в строке External Fax Receiver диалога конфигурации модемов для запуска внешних программ по приему факсов.


См. также Конфигурация внешних приложений.


Пример

Последовательность действий для установки системы Аргус с Proboard BBS под Windows NT (при некоторых изменениях подходят для Windows 95), модем USR Sportster 28800 with Fax (пример предоставил Sean Rima):

1. Добавьте драйвер FOSSIL в \winnt\system32\config.nt, например device=c:\dos\bnu.sys /p=01
2. Argus / Config / Dialup / Modems, выберите Ваш модем и добавьте к строке инициализации AT&C1&D0.
3. Добавьте к Argus / Advanced / Externals / Doors строку “Enter = pp” и “Door and Paramenters = c:\pb\proboard.exe %Z -b%B -p%C


 

Периодически запускаемые приложения

Аргус имеет возможность периодического запуска внешних приложений и выполнения команд системного интерпретатора (Advanced/Externals/Cron)

Внимание - выполнения команд системного интерпретатора возможно только для версии Аргус под Windows NT. Под Windows 95 возможен только запуск EXE-приложений и BAT-файлов. BAT-файлы под Windows 95 запускаются следующим способом: c:\windows\command.com /C myfile.bat.

Символ '?' перед командой/именем файла в строке String to Execute сообщает системе Аргус о том, что процесс должен быть запущен в скрытом режиме, а ?? - в DETACHED_MODE (без использования консоли). В отличии от ?, флаг ?? можно использовать только для Win32-консольных приложений. Попытка запуска DETACHED Win3.1 или DOS-приложения вызовет ошибку.

Процессы могут быть запущены с определенным уровнем приоритета:

< запустить с низким приоритетом (IDLE_PRIORITY_CLASS)
+ запустить с высоким приоритетом (HIGH_PRIORITY_CLASS)
* запустить с критическим приоритетом (REALTIME_PRIORITY_CLASS)
> вместо запуска приложения установить файл-флаг с именем, следующим за '>'.

По умолчанию процессы запускаются с нормальным приоритетом (NORMAL_PRIORITY_CLASS).

Cм. также описание формата Cron.

 

Параметры прозвонок

Этот диалог позволяет задавать параметры прозвонок.

Поля Busy, No c. и Fail задают максимальные значения соответствующих счетчиков, по достижении которых прозвонка переводится в режим Отбой на заданное полем Stand-off minutes число минут.

Поле Retry Seconds задает число секунд между повторами прозвонки. В качестве реального значения интервала Stand-off minutes и Retry Seconds используется случайное число в диапазоне от n*0.5 до n*1.5 (то есть+-50%). Например, при установленном в Retry Seconds значении 100, повторные прозвонки будут происходить со случайным интервалом от 50 до 150 секунд.


 

Import passwords

If you are upgrading to Argus from a mailer listed below or wish to use Argus in conjunction with other mailer, you may easily import password configuration. Import passwords dialogue box is invoked from Config/Passwords, Import button. You may import override configuration as well.


BinkD © Dima Maloff

You will be prompted for the path to BinkD configuration file. Argus doesn't support nested configuration files of BinkD, so if you keep BinkD passwords in a separate file, you should point to it. Argus will parse selected file in search of "NODE" keyword. Also, FTN addresses following "NODE" keyword must be in full 4D/5D notation. If your BinkD configuration file has shortened form of addresses (e.g. for nodes from your own zone/net) Argus would not import them. Argus supports only one pair Address/Password per line when importing BinkP configuration file.


Bink/+ © serge terekhov

You will be prompted for the path to Bink/+ configuration file. Argus supports nested configuration files of Bink/+, so if you keep Bink/+ passwords in a separate file, you shouldn't point to it unless all addresses are in full 4D/5D notation or this file has ADDRESS keyword. Argus will parse selected file in search of "ADDRESS" (default address for expanding shortened addresses), " INCLUDE" (nested configuration file) and "OVERRIDE" keywords.


T-Mail © Andy Elkin

You will be prompted for the path to T-Mail configuration file. Argus supports nested configuration files of T-Mail. Note that you should point to T-Mail main configuration file, not to "subst"- or "security-"file. Argus will parse selected file in search of the following keywords: "ADDRESS" (default address for expanding shortened addresses), "INCLUDE" (nested configuration file), "SUBSTLIST" (path to T-Mail file with substitutes; "PASSWORD" keyword will be in search there) and "SECURITY" (path to T-Mail file with passwords).


Xenia © Arjen G. Lentz

You will be prompted for the path to Xenia configuration file. Argus supports nested configuration files of Xenia. Argus will parse selected file in search of the following keywords "INCLUDE" (nested configuration file) and "PASSWORD" (password record) keyword. Also, FTN addresses following "PASSWORD" keyword must be in full 4D/5D notation. If your Xenia configuration file has shortened form of addresses (e.g. for nodes from your own zone/net) Argus would not import them. Xenia configuration file may specify several addresses to be bound to a password in a single line, Argus will properly import such entries.


FrontDoor 2.12 © Joaquim Homrighausen

You will be prompted for the path to FrontDoor passwords file (password.fd). FrontDoor configuration file is a binary file. Import of other data rather than passwords from FrontDoor is not supported. Other versions of FrontDoor rather then 2.12 are also not supported, unless they have 100%-compatible password file format. You may try at your own risk.


MainDoor 1.10 © Francisco Sedano Crippa

You will be prompted for the path to MainDoor passwords file (password.fd). MainDoor configuration file is a binary file. Import of other data rather than passwords from MainDoor is not supported. Other versions of MainDoor rather then 1.10 are also not supported, unless they have 100%-compatible password file format. You may try at your own risk.

 

Import nodes

If you are upgrading to Argus from a mailer listed below or wish to use Argus in conjunction with other mailer, you may easily import node overrides, this information will be inserted into node overrides table for dial-up lines and TCP/IP Daemon. Import nodes dialogue box is invoked from Config/Dialup / Nodes tab / Import button for Dial-up nodes and from Config/TCP/IP Daemon / Nodes tab / Import button for TCP/IP nodes.


BinkD © Dima Maloff

You will be prompted for the path to BinkD configuration file. Argus doesn't support nested configuration files of BinkD, so if you keep list of nodes in a separate file, you should point to it. Argus will parse selected file in search of "NODE" keyword. Also, FTN addresses following "NODE" keyword must be in full 4D/5D notation. If your BinkD configuration file has shortened form of addresses (e.g. for nodes from your own zone/net) Argus would not import them. Imported entries will be inserted into Nodes tab of Config/TCP/IP Daemon configuration dialogue, for such noes no other information except TCP/IP address (fully-qualified domain name of dotted-decimal IP address) will be extracted; "CM,BND" flags will be automatically assigned.


Bink/+ © serge terekhov

You will be prompted for the path to Bink/+ configuration file. Argus supports nested configuration files of Bink/+, so if you keep list of nodes in a separate file, you shouldn't point to it unless all addresses are in full 4D/5D notation or this file has ADDRESS keyword. Argus will parse selected file in search of "ADDRESS" (default address for expanding shortened addresses), "INCLUDE" (nested configuration file) and "OVERRIDE" keywords. Imported entries may be inserted into Nodes tab of both Dial/Up and TCP/IP configuration dialogues; the decision is made upon flags specified for a node in Bink/+ configuration file.


T-Mail © Andy Elkin

You will be prompted for the path to T-Mail configuration file. Argus supports nested configuration files of T-Mail. Note that you should point to T-Mail main configuration file, not to "subst"- or "security-"file. Argus will parse selected file in search of the following keywords: "ADDRESS" (default address for expanding shortened addresses), "INCLUDE" (nested configuration file), "SUBSTLIST" (path to T-Mail file with substitutes; "PHONE", "HIDDEN", "HIDDEN_ADDRESS", "TIME" and "FLAGS" keyword will be in search there; value of "TIME" keyword will be converted to Txy). Imported entries may be inserted into Nodes tab of both Dial/Up and TCP/IP configuration dialogues; the decision is made upon flags specified for a node in T-Mail configuration file.


Xenia © Arjen G. Lentz

You will be prompted for the path to Xenia configuration file. Argus supports nested configuration files of Xenia. Argus will parse selected file in search of the following keywords "INCLUDE" (nested configuration file) and "PHONE" keyword. Also, FTN address following "PHONE" keyword must be in full 4D/5D notation. If your Xenia configuration file has shortened form of addresses (e.g. for nodes from your own zone/net) Argus would not import them. Xenia configuration file may specify phone numbers / TCP/IP addresses to be bound to a node in a single line or even in multiple lines, Argus will properly import such entries. Imported entries may be inserted into Nodes tab of both Dial/Up and TCP/IP configuration dialogues; the decision is made upon flags specified in Xenia configuration file.

 

Address input window

You may type one or several, if allowed, (delimited by space character) 4D/5D FTN addresses in the input line. To pick previously entered addresses, press Alt+Down or use mouse to invoke drop-down list. You may click Browse button to Invoke Nodelist Browser window to pick a node from currently compiled nodelist.

 

File-boxes

Буфер отправки системы Binkley - не единственный способ определения файлов, подлежащих отправке. Аргус способен сканировать определенные каталоги, найденные файлы в которых будут считаться подлежащими отправке. Такие каталоги называются файл-боксами. Каждому такому каталогу (файл-боксу) соответствует узел, на который должны быть оправлены файлы из него, и статус отправки. Эти соответствия (между каталогом и узлом/статусом) назначаются в диалоговом окне Config/File-boxes (Ctrl+B).

Строка ввода Options/Root directory позволяет определить корневой каталог для всех файл-боксов, пути к которым определены в сетке Nodes. Правило добавления пути корневого каталога те же, что и принятое при указании путей в сетке Special Directories диалогового окна Config/Paths.

Значением строки колонки Node может быть FTN-адрес или упрощенная маска адресов; а также регулярное выражение.

Значением строки колонки Status может быть:

C файл-бокс со статусом Crash
D файл-бокс со статусом Direct
N файл-бокс со статусом Normal
H файл-бокс со статусом Hold
* любой из вышеперечисленных статусов

Значение строки колонки Path может содержать макросы:

%ZONE зона, десятичная (1-4 десятичные цифры)
%NET сеть, десятичная (1-5 десятичных цифр)
%NODE узел, десятичный (1-5 десятичных цифр)
%POINT пойнт, десятичный (1-5 десятичных цифр)
%HZONE зона, шестнадцатеричная (3 шестнадцатеричные цифры)
%HNET сеть, шестнадцатеричная (4 шестнадцатеричные цифры)
%HNODE узел, шестнадцатеричный (4 шестнадцатеричные цифры)
%HPOINT пойнт, шестнадцатеричный (4 шестнадцатеричные цифры)
%XZONE зона, 32-чная (2 цифры в radix-32)
%XNET сеть, 32-чная (3 цифры в radix-32)
%XNODE узел, 32-чный (3 цифры в radix-32)
%XPOINT пойнт, 32-чнай (2 цифры в radix-32)
%STATUS статус файл-бокса (C=Crash, D=Direct, N=Normal, H=Hold)
%TSTATUS то же, что и %STATUS, но пустое значение обозначает Normal.
%STMAIL то же, что и комбинация %XZONE%XNET%XNODE.%XPOINT%TSTATUS
%LTMAIL то же, что и комбинация %ZONE.%NET.%NODE.%POINT?%TSTATUS

As you see, macros are used to bound a path to particular nodes if value of string of a Node column contains a mask or Regular Expression. To be able to bind multiple directories to a node, value of string of Path column may also contain *, ?, % wildcards or Regular Expressions.

Значение поля колонки Path может задать путь к каталогу, в который будут перемещены файлы, отправленные из данного файл-бокса. Такой каталог называется каталогом отправленных файлов. Путь к каталогу отправленных файлов отделяется от пути к файл-боксу символом "|" и может содержать дополнительные макросы (помимо вышеописанных), представляющие текущую дату и время.

%YEAR Год (4 цифры)
%MONTHN Месяц (2 цифры)
%MONTHA Месяц (3 буквы)
%MONTHS Месяц (2 буквы)
%DAY День месяца (2 цифры)
%DOWN День недели (1 цифра)
%DOWA День недели (3 буквы)
%DOWS День недели (2 буквы)
%HOUR Час (2 цифры)
%MINUTE Минута (2 цифры)
%SECOND Секунда (2 цифры)

Для надежности работы, переданные файлы перемещаются из файл-бокса в каталог отправленных файлов путем операции "переименовать", а не "скопировать и удалить", поэтому оба каталога должны находиться на одном томе или физическом диске. Если, после передачи файла из файл-бокса в каталоге отправленных файлов уже находится файл с таким же именем, находящийся файл будет перезаписан.

Если каталог отправленных файлов не определен (значение поля колонки Path содержит только путь к файл-боксу, символ-разделитеть "|" отсутствует), то отправленные файлы будут удаляться.

Файлы, находящиеся в файл-боксах отображаются в дереве Outbound Manager, но SmartMenu не будет производить операции с ними. SmartMenu производит операции только в файлами, привязанными к оправке через Буфер отправки системы Binkley.

Пример сетки File Boxes configuration:

Node Status Path
2:469/38 N out38|sent38

Root directory: c:\fl

В этом случае, файлы, скопированные в каталог c:\fl\out38 будут считаться подлежащими отправке на узел 2:469/38 с приоритетом Normal (типы приоритетов описаны в главе Буфер отправки системы Binkley. То есть при входящем или исходящем сеансе связи с узлом 2:469/38 файлы из каталога c:\fl\out38 будут ему передаваться. Переданные файлы будут перемещены в каталог c:\fl\sent38.

Пример с использованием макроса:

Node Status Path
2:469/*.0 N out%NODE|sent%NODE

В этом случае, файл-боксом для 2:469/38 будет out38, как и в предыдущем примере, но при помощи макроса определены также файл-боксы для всех узлов сети 2:469. Файл-боксом для 2:469/39 будет out39, для 2:469/40 будет out40, и так далее.

Чтобы определить T-Mail-совместимое дерево файл-боксов в c:\t-mail\fboxes, используйте следующий пример:

Node Status Path
*:*/*.* * c:\t-mail\fboxes\%STMAIL

 

Справочник по конфигурации Аргуса

Эта глава включает следующие справочные разделы:

Прозвонка на узел только в его рабочее время
Объединения адресов в группы
Формат Cron
Прием факсов
Расширенная хронология

 

Прозвонка на узел только в его рабочее время

Для указания времени работы узла система Аргус использует FSC-0062-флаги Txy. Эти флаги указываются либо в соответствующем поле списка узлов, либо в таблице переопределений модемных- или TCP/IP-узлов. Если время работы узла не указано, прозвонка на него будет производиться только в его ZMH (а на пойнт - вообще никогда).

Флаг CM означает круглосуточный режим работы.

 

Маски адресов

Для объединения адресов в группу по маске используется символ *

1:*/*.* все адреса в первой зоне
2:46*/*.* весь 46-й регион второй зоны
2:469/* то же, что 2:469/*.* - все узлы и пойнты сети 2:469
2:469/*.0 все 3-d узлы сети 2:469 (без пойнтов)
2*:50*/10* все узлы и пойнты, номер зоны которых начинается с 2 (например, 2, 21, 228), у которых номер сети начинается с 50 (например, 50,5030,501,5020,5079), и номера которых начинаются на 10 (например, 10, 101, 100, 1034). К примеру, этим условиям удовлетворяет адрес 21:501/1034
*:*/* все адреса

 

Формат Cron

Формат Cron представляет собой простой, но достаточно мощный и гибкий способ описаний периодических действий.

Формат:

* * * * * или Минута Час День Месяц ДеньНедели

Диапазон
Минута 0-59
Час 0-23
День 1-31
Месяц 1-12
ДеньНедели 1-7 (1 = понедельник, 2 = вторник, ..., 7 = воскресенье)

Можно использовать список значений, разделенных запятыми (например "1,3,7"), или используя символ “черточка” (например “1-5”). Вместо значения можно использовать звездочку - это означает полный диапазон.

Действие происходит, только если удовлетворяются все условия.

Примеры:

* * * * * Каждую минуту
59 23 31 12 5 За минуту до конца года, и если последний день года - пятница.
45 17 7 6 * Каждый год 7-го июня в 17:45
0,15,30,45 0,6,12,18 1,15,31 * * По полным четвертям часа; в полночь, в 6 утра, по 1-м, 15-м и 31-м числам каждого месяца, только по рабочим дням недели
0 12 * * 1-5 В полдень по рабочим дням
* * * 1,3,5,7,9,11 * Каждую минуту в январе, марте, мае, июле, сентябре и ноябре
1,2,3,5,20-25,30-35,59 23 31 12 * В последний день года в 23:01, 23:02, 23:03, 23:05, 23:20, 23:21, 23:22, 23:23, 23:24, 23:25, 23:30, 23:31, 23:32, 23:33, 23:34, 23:35, 23:59
0 9 1-7 * 1 Первый понедельник каждого месяца, в 9 утра
0 0 1 * * В полночь, первого числа, каждый месяц
* 0-11 * * * Каждую минуту до полудня
* * * 1,2,3 * Каждую минуту в январе, феврале и мае
0 0 * * * Каждый день в полночь
0 0 * * 3 Каждую среду в полночь

Строки Cron можно сокращать путем опускания крайних правых звездочек:

Полная запись Сокращенная запись
* * * * * *
59 23 31 12 5 59 23 31 12 5
45 17 7 6 * 45 17 7 6

0,15,30,45 0,6,12,18 1,15,31 * * 0,15,30,45 0,6,12,18 1,15,31
0 12 * * 1-5 0 12 * * 1-5
* * * 1,3,5,7,9,11 * * * * 1,3,5,7,9,11
1,2,3,5,20-25,30-35,59 23 31 12 * 1,2,3,5,20-25,30-35,59 23 31 12
0 9 1-7 * 1 0 9 1-7 * 1
0 0 1 * * 0 0 1
* 0-11 * * * * 0-11
* * * 1,2,3 * * * * 1,2,3
0 0 * * * 0 0
0 0 * * 3 0 0 * * 3

Существует возможность использовать шаг, указывающийся после интервала через дробь. Например,"0-23/2" может использоваться в поле часов для указания того, что действие должно происходить каждые два часа (альтернатива из старого варианта - "0,2,4,6,8,10,12,14,16,18,20,22"). Шаг может использоваться также после звездочки, для действия, происходящего через каждые четыре минуты, используйте "*/4"

 

Node Inspector

Инспектор Узлов, вызываемый через Config/Node Inspector (Ctrl+I) - это диалоговое окно, позволяющее редактировать различные параметры узлов в одном месте, добавлять и удалять узлы.


 

File-Flags

Флаг - это временный файл, находящийся в Argus Home Directory. С помошбю флагов, внешний программы или оператор может побудить какое-то действие Аргуса. Аргус периодически сканирует Home Directory на предмет наличия флагов, и перед началом действия удаляет флаг.

Список флагов:

nodelist.ok Компилировать список узлов. Идентичен пункту Compile Nodelist меню Tool или Shift-F6.
exit.now Выход. Идентичен пункту Exit меню System или Alt+X.
password.ok Импортировать дополнительный файл паролей
dupovr.ok Импортировать файл дополнительных переопределений модемных линий.
ipovr.ok Импортировать файл дополнительных переопределений TCP/IP.
close.linename Закрыть модемную линию и освободить COM-порт. То есть, для закрытия линии с названием "Line4", флаг должен называться "close.Line4"
open.linename Открыть модемную линию.
close.ip Закрыть TCP/IP daemon.
open.ip Открыть TCP/IP daemon.

 

File Request Editor

File Request Editor is a window invoked from Tool / Edit File Request. This window has a string grid with two columns "File" and "Password".

Values of "File" column are file names or aliases (also called magic names). When specifying an alias, you need not to know the real name of requested file. For example, FidoNet Nodelist is requestable from most FidoNet nodes as NODELIST while the real name of the Nodelist file is changing every week. Another example is the file list of a system, which is often requested using the Alias FILES. You may also specify a file mask, if remote mailer (a mailer on a node from which you request files) allows that. If remote mailer is Argus, aliases, file names and file masks (optionally) are allowed. Argus neither transmits nor handles full-path-name file requests. Note that if the value of "File" column has space a character, Argus will transmit to remote mailer space characters replaced to "\20" sequences.

Values of "Password" column are passwords for specified files, not session passwords.

 

Send Modem Commands

You may send strings to modem interactively. Use Line/Send Modem Commands menu item or press F9. This works when the modem is idle. Modem control characters are allowed.

 

Nodelist Browser

Node inspector (Ctrl+I), invoked by Tool/Browse Nodelis menu items is a window that allows browsing currently compiled nodelist in a form of a tree.

 

Where to use Regular Expressions

Regular Expressions may be used in file masks, address masks, Modem Responses and File-Boxes configuration, i.e. anywhere where generic masks are allowed (though Modem Responses do not allow generic masks)

Argus uses Perl-Compatible Regular Expressions library (c) 1997-2000 University of Cambridge. This library was written by Philip Hazel <ph10@cam.ac.uk>, University Computing Service, New Museums Site, Cambridge CB2 3QG, England, Phone: +44 1223 334714.

Information about Perl-Compatible Regular Expressions (PCRE) syntax is given in a separate chapter, written by Philip Hazel.


Syntax

To insert a Regular Expression, use '~' character as a marker. Next character (following '~' marker) will be used as a delimiter to define the end of a Regular Expression. Any text found between delimiting characters will be treated as a Regular Expression.

The syntax is:

before~#regularexpression#after

where "before" and "after" is optional text that will be compared as a generic mask (a character matches itself, '?' matches any character, '*' matches a sequence of characters).

"regularexpression" is a text of a Regular Expression.

'#' - delimiter character.


Examples

The following string (found where a file mask should be)

~#cat(aract|erpillar|)\..*#

will match a file named "cat", "cataract", or "caterpillar", with any extension.

the above example is equivalent to

~#cat(aract|erpillar|)#.*

because the text after delimiter (".*") is treated as a generic mask, i.e. '.' matches a dot character and '*' matches any sequence of characters.

Here is another example of using regular expressions in Modem Responses:

~#^RING(\x20\d)?$#

This will match word "RING", optionally following a digit after space character.


List Separators and Regular Expression Delimiters

Because of space (or other) character may be used as a separator in Argus Configuration String Grids, such character should not occur in non-escaped form inside a regular expression. This is because of separator characters in a string grid (e.g. space) have greater priority than a regular expression delimiters (e.g. '#').

To avoid using string grid separator character in a Regular Expression, use hex codes (e.g. \x20 for space character) or corresponding patterns (e.g. \s , that will match any whitespace character).

If you plan using '#' character within a regular expression, you may also use it's hex code, but better way would be choosing another delimiter.

~`^RING(\x20#\d)?$`

To insert ~ character into a generic mask, double it to avoid using it as a regular expression marker.


Anchoring in File Masks

Note that you don't need to anchor your regular expressions (using '^' and '$') in file masks - they would be anchored automatically. If you need to skip some characters before of after, use ".*")


PCRE Default Options

The settings of PCRE_CASELESS, PCRE_MULTILINE, PCRE_DOTALL, and PCRE_EXTENDED options (described in separate chapter) can be changed from within the pattern by a sequence of Perl option letters enclosed between "(?" and ")", although the following default options are used:

When matching file names and path names - PCRE_CASELESS.
When matching modem responses - PCRE_MULTILINE, because the regular expression is matching against the entire multi-line input data stream coming from a modem.
In all other cases none of PCRE options are set by default.

 

Regular Expressions Syntax (Advanced)

Argus uses Perl-compatible regular expressions.(PCRE) library. The library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl 5, with just a few differences. The current implementation corresponds to Perl 5.005. The syntax and semantics of the regular expressions supported by PCRE are described in this chapter.


PCRE Library and this chapter (Regular Expressions Syntax (Advanced)) are written by Philip Hazel <ph10@cam.ac.uk>, University of Cambridge Computing Service, Cambridge, England. Phone: +44 1223 334714. Copyright © 1997-2000 University of Cambridge

Regular expressions are also described in the Perl documentation and in a number of other books, some of which have copious examples. Jeffrey Friedl's "Mastering Regular Expressions", published by O'Reilly (ISBN 1-56592-257-3), covers them in great detail. The description here is intended as reference documentation.


 

Meta-Characters

A regular expression is a pattern that is matched against a subject string from left to right. Most characters stand for themselves in a pattern, and match the corresponding characters in the subject. As a trivial example, the pattern

The quick brown fox

matches a portion of a subject string that is identical to itself. The power of regular expressions comes from the ability to include alternatives and repetitions in the pattern. These are encoded in the pattern by the use of meta-characters, which do not stand for themselves but instead are interpreted in some special way.

There are two different sets of meta-characters: those that are recognised anywhere in the pattern except within square brackets, and those that are recognised in square brackets. Outside square brackets, the meta-characters are as follows:

\ general escape character with several uses
^ assert start of subject (or line, in multiline mode)
$ assert end of subject (or line, in multiline mode)
. match any character except newline (by default)
[ start character class definition
| start of alternative branch
( start subpattern
) end subpattern
? extends the meaning of (
also 0 or 1 quantifier
also quantifier minimizer
* 0 or more quantifier
+ 1 or more quantifier
{ start min/max quantifier

Part of a pattern that is in square brackets is called a "character class". In a character class the only meta-characters are:

\ general escape character
^ negate the class, but only if the first character
- indicates character range
] terminates the character class

The following sections describe the use of each of the meta-characters.

 

Backslash

The backslash character has several uses. Firstly, if it is followed by a non-alphameric character, it takes away any special meaning that character may have. This use of backslash as an escape character applies both inside and outside character classes.

For example, if you want to match a "*" character, you write "\*" in the pattern. This applies whether or not the following character would otherwise be interpreted as a meta-character, so it is always safe to precede a non-alphameric with "\" to specify that it stands for itself. In particular, if you want to match a backslash, you write "\\".

If a pattern is compiled with the PCRE_EXTENDED option, whitespace in the pattern (other than in a character class) and characters between a "#" outside a character class and the next newline character are ignored. An escaping backslash can be used to include a whitespace or "#" character as part of the pattern.

A second use of backslash provides a way of encoding non-printing characters in patterns in a visible manner. There is no restriction on the appearance of non-printing characters, apart from the binary zero that terminates a pattern, but when a pattern is being prepared by text editing, it is usually easier to use one of the following escape sequences than the binary character it represents:

\a alarm, that is, the BEL character (hex 07)
\cx "control-x", where x is any character
\e escape (hex 1B)
\f formfeed (hex 0C)
\n newline (hex 0A)
\r carriage return (hex 0D)
\t tab (hex 09)
\xhh character with hex code hh
\ddd character with octal code ddd, or backreference

The precise effect of "\cx" is as follows: if "x" is a lower case letter, it is converted to upper case. Then bit 6 of the character (hex 40) is inverted. Thus "\cz" becomes hex 1A, but "\c{" becomes hex 3B, while "\c;" becomes hex 7B.

After "\x", up to two hexadecimal digits are read (letters can be in upper or lower case).

After "\0" up to two further octal digits are read. In both cases, if there are fewer than two digits, just those that are present are used. Thus the sequence "\0\x\07" specifies two binary zeros followed by a BEL character. Make sure you supply two digits after the initial zero if the character that follows is itself an octal digit.

The handling of a backslash followed by a digit other than 0 is complicated. Outside a character class, PCRE reads it and any following digits as a decimal number. If the number is less than 10, or if there have been at least that many previous capturing left parentheses in the expression, the entire sequence is taken as a back reference. A description of how this works is given later, following the discussion of parenthesized subpatterns.

Inside a character class, or if the decimal number is greater than 9 and there have not been that many capturing subpatterns, PCRE re-reads up to three octal digits following the backslash, and generates a single byte from the least significant 8 bits of the value. Any subsequent digits stand for themselves. For example:

\040 is another way of writing a space
\40 is the same, provided there are fewer than 40 previous capturing subpatterns
\7 is always a back reference
\11 might be a back reference, or another way of writing a tab
\011 is always a tab
\0113 is a tab followed by the character "3"
\113 is the character with octal code 113 (since there can be no more than 99 back references)
\377 is a byte consisting entirely of 1 bits
\81 is either a back reference, or a binary zero followed by the two characters "8" and "1"

Note that octal values of 100 or greater must not be introduced by a leading zero, because no more than three octal digits are ever read.

All the sequences that define a single byte value can be used both inside and outside character classes. In addition, inside a character class, the sequence "\b" is interpreted as the backspace character (hex 08). Outside a character class it has a different meaning (see below).

The third use of backslash is for specifying generic character types:

\d any decimal digit
\D any character that is not a decimal digit
\s any whitespace character
\S any character that is not a whitespace character
\w any "word" character
\W any "non-word" character

Each pair of escape sequences partitions the complete set of characters into two disjoint sets. Any given character matches one, and only one, of each pair.

A "word" character is any letter or digit or the underscore character, that is, any character which can be part of a Perl "word". The definition of letters and digits is controlled by PCRE's character tables, and may vary if locale- specific matching is taking place (see "Locale support" above). For example, in the "fr" (French) locale, some character codes greater than 128 are used for accented letters, and these are matched by \w.

These character type sequences can appear both inside and outside character classes. They each match one character of the appropriate type. If the current matching point is at the end of the subject string, all of them fail, since there is no character to match.

The fourth use of backslash is for certain simple assertions. An assertion specifies a condition that has to be met at a particular point in a match, without consuming any characters from the subject string. The use of subpatterns for more complicated assertions is described below. The backslashed assertions are

\b word boundary
\B not a word boundary
\A start of subject (independent of multiline mode)
\Z end of subject or newline at end (independent of multiline mode)
\z end of subject (independent of multiline mode)

These assertions may not appear in character classes (but note that "\b" has a different meaning, namely the backspace character, inside a character class).

A word boundary is a position in the subject string where the current character and the previous character do not both match \w or \W (i.e. one matches \w and the other matches \W), or the start or end of the string if the first or last character matches \w, respectively.

The \A, \Z, and \z assertions differ from the traditional circumflex and dollar (described below) in that they only ever match at the very start and end of the subject string, whatever options are set. They are not affected by the PCRE_NOTBOL or PCRE_NOTEOL options. The difference between \Z and \z is that \Z matches before a newline that is the last character of the string as well as at the end of the string, whereas \z matches only at the end.

 

Circumflex and Dollar

Outside a character class, in the default matching mode, the circumflex character is an assertion which is true only if the current matching point is at the start of the subject string. Inside a character class, circumflex has an entirely different meaning (see below).

Circumflex need not be the first character of the pattern if a number of alternatives are involved, but it should be the first thing in each alternative in which it appears if the pattern is ever to match that branch. If all possible alternatives start with a circumflex, that is, if the pattern is constrained to match only at the start of the subject, it is said to be an "anchored" pattern. (There are also other constructs that can cause a pattern to be anchored.)

A dollar character is an assertion which is true only if the current matching point is at the end of the subject string, or immediately before a newline character that is the last character in the string (by default). Dollar need not be the last character of the pattern if a number of alternatives are involved, but it should be the last item in any branch in which it appears. Dollar has no special meaning in a character class.

The meaning of dollar can be changed so that it matches only at the very end of the string, by setting the PCRE_DOLLAR_ENDONLY option at compile or matching time. This does not affect the \Z assertion.

The meanings of the circumflex and dollar characters are changed if the PCRE_MULTILINE option is set. When this is the case, they match immediately after and immediately before an internal "\n" character, respectively, in addition to matching at the start and end of the subject string. For example, the pattern /^abc$/ matches the subject string "def
abc" in multiline mode, but not otherwise. Consequently, patterns that are anchored in single line mode because all branches start with "^" are not anchored in multiline mode. The PCRE_DOLLAR_ENDONLY option is ignored if PCRE_MULTILINE is set.

Note that the sequences \A, \Z, and \z can be used to match the start and end of the subject in both modes, and if all branches of a pattern start with \A is it always anchored, whether PCRE_MULTILINE is set or not.

 

Full Stop (Period, Dot)

Outside a character class, a dot in the pattern matches any one character in the subject, including a non-printing character, but not (by default) newline. If the PCRE_DOTALL option is set, then dots match newlines as well. The handling of dot is entirely independent of the handling of circumflex and dollar, the only relationship being that they both involve newline characters. Dot has no special meaning in a character class.

 

Square Brackets

An opening square bracket introduces a character class, terminated by a closing square bracket. A closing square bracket on its own is not special. If a closing square bracket is required as a member of the class, it should be the first data character in the class (after an initial circumflex, if present) or escaped with a backslash.

A character class matches a single character in the subject; the character must be in the set of characters defined by the class, unless the first character in the class is a circumflex, in which case the subject character must not be in the set defined by the class. If a circumflex is actually required as a member of the class, ensure it is not the first character, or escape it with a backslash.

For example, the character class [aeiou] matches any lower case vowel, while [^aeiou] matches any character that is not a lower case vowel. Note that a circumflex is just a convenient notation for specifying the characters which are in the class by enumerating those that are not. It is not an assertion: it still consumes a character from the subject string, and fails if the current pointer is at the end of the string.

When caseless matching is set, any letters in a class represent both their upper case and lower case versions, so for example, a caseless [aeiou] matches "A" as well as "a", and a caseless [^aeiou] does not match "A", whereas a caseful version would.

The newline character is never treated in any special way in character classes, whatever the setting of the PCRE_DOTALL or PCRE_MULTILINE options is. A class such as [^a] will always match a newline.

The minus (hyphen) character can be used to specify a range of characters in a character class. For example, [d-m] matches any letter between d and m, inclusive. If a minus character is required in a class, it must be escaped with a backslash or appear in a position where it cannot be interpreted as indicating a range, typically as the first or last character in the class.

It is not possible to have the literal character "]" as the end character of a range. A pattern such as [W-]46] is interpreted as a class of two characters ("W" and "-") followed by a literal string "46]", so it would match "W46]" or "-46]". However, if the "]" is escaped with a backslash it is interpreted as the end of range, so [W-\]46] is interpreted as a single class containing a range followed by two separate characters. The octal or hexadecimal representation of "]" can also be used to end a range.

Ranges operate in ASCII collating sequence. They can also be used for characters specified numerically, for example [\000-\037]. If a range that includes letters is used when caseless matching is set, it matches the letters in either case. For example, [W-c] is equivalent to [][\^_`wxyzabc], matched caselessly, and if character tables for the "fr" locale are in use, [\xc8-\xcb] matches accented E characters in both cases.

The character types \d, \D, \s, \S, \w, and \W may also appear in a character class, and add the characters that they match to the class. For example, [\dABCDEF] matches any hexadecimal digit. A circumflex can conveniently be used with the upper case character types to specify a more restricted set of characters than the matching lower case type. For example, the class [^\W_] matches any letter or digit, but not underscore.

All non-alphameric characters other than \, -, ^ (at the start) and the terminating ] are non-special in character classes, but it does no harm if they are escaped.

 

Vertical Bar

Vertical bar characters are used to separate alternative patterns. For example, the pattern

gilbert|sullivan

matches either "gilbert" or "sullivan". Any number of alternatives may appear, and an empty alternative is permitted (matching the empty string). The matching process tries each alternative in turn, from left to right, and the first one that succeeds is used. If the alternatives are within a subpattern (defined below), "succeeds" means matching the rest of the main pattern as well as the alternative in the subpattern.

 

Internal Option Setting

The settings of PCRE_CASELESS, PCRE_MULTILINE, PCRE_DOTALL, and PCRE_EXTENDED can be changed from within the pattern by a sequence of Perl option letters enclosed between "(?" and ")". The option letters are

i PCRE_CASELESS Letters in the pattern match both upper and lower case letters. It is equivalent to Perl's /i option.
m PCRE_MULTILINE By default, PCRE treats the subject string as consisting of a single "line" of characters (even if it actually contains several newlines). The "start of line" metacharacter (^) matches only at the start of the string, while the "end of line" metacharacter ($) matches only at the end of the string, or before a terminating newline (unless PCRE_DOLLAR_ENDONLY is set). This is the same as Perl.

When PCRE_MULTILINE it is set, the "start of line" and "end of line" constructs match immediately following or immediately before any newline in the subject string, respectively, as well as at the very start and end. This is equivalent to Perl's /m option. If there are no "\n" characters in a subject string, or no occurrences of ^ or $ in a pattern, setting PCRE_MULTILINE has no effect.

s PCRE_DOTALL If this bit is set, a dot metacharater in the pattern matches all characters, including newlines. Without it, newlines are excluded. This option is equivalent to Perl's /s option. A negative class such as [^a] always matches a newline character, independent of the setting of this option.
x PCRE_EXTENDED If this bit is set, whitespace data characters in the pattern are totally ignored except when escaped or inside a character class, and characters between an unescaped # outside a character class and the next newline character, inclusive, are also ignored. This is equivalent to Perl's /x option, and makes it possible to include comments inside complicated patterns. Note, however, that this applies only to data characters. Whitespace characters may never appear within special character sequences in a pattern, for example within the sequence (?( which introduces a conditional subpattern.

For example, (?im) sets caseless, multiline matching. It is also possible to unset these options by preceding the letter with a hyphen, and a combined setting and unsetting such as (?im-sx), which sets PCRE_CASELESS and PCRE_MULTILINE while unsetting PCRE_DOTALL and PCRE_EXTENDED, is also permitted. If a letter appears both before and after the hyphen, the option is unset.

The scope of these option changes depends on where in the pattern the setting occurs. For settings that are outside any subpattern (defined below), the effect is the same as if the options were set or unset at the start of matching. The following patterns all behave in exactly the same way:

(?i)abc
a(?i)bc
ab(?i)c
abc(?i)

which in turn is the same as compiling the pattern abc with PCRE_CASELESS set. In other words, such "top level" settings apply to the whole pattern (unless there are other changes inside subpatterns). If there is more than one setting of the same option at top level, the rightmost setting is used.

If an option change occurs inside a subpattern, the effect is different. This is a change of behaviour in Perl 5.005. An option change inside a subpattern affects only that part of the subpattern that follows it, so

(a(?i)b)c

matches abc and aBc and no other strings (assuming PCRE_CASELESS is not used). By this means, options can be made to have different settings in different parts of the pattern. Any changes made in one alternative do carry on into subsequent branches within the same subpattern. For example,

(a(?i)b|c)

matches "ab", "aB", "c", and "C", even though when matching "C" the first branch is abandoned before the option setting. This is because the effects of option settings happen at compile time. There would be some very weird behaviour otherwise.

The PCRE-specific options PCRE_UNGREEDY and PCRE_EXTRA can be changed in the same way as the Perl-compatible options by using the characters U and X respectively. The (?X) flag setting is special in that it must always occur earlier in the pattern than any of the additional features it turns on, even when it is at top level. It is best put at the start.

 

Subpatterns

Subpatterns are delimited by parentheses (round brackets), which can be nested.
Marking part of a pattern as a subpattern does two things:

1. It localizes a set of alternatives. For example, the pattern

cat(aract|erpillar|)

matches one of the words "cat", "cataract", or "caterpillar". Without the parentheses, it would match "cataract", "erpillar" or the empty string.

2. It sets up the subpattern as a capturing subpattern (as defined above). Opening parentheses are counted from left to right (starting from 1) to obtain the numbers of the capturing subpatterns.

For example, if the string "the red king" is matched against the pattern

the ((red|white) (king|queen))

the captured substrings are "red king", "red", and "king", and are numbered 1, 2, and 3.

The fact that plain parentheses fulfil two functions is not always helpful. There are often times when a grouping subpattern is required without a capturing requirement. If an opening parenthesis is followed by "?:", the subpattern does not do any capturing, and is not counted when computing the number of any subsequent capturing subpatterns. For example, if the string "the white queen" is matched against the pattern

the ((?:red|white) (king|queen))

the captured substrings are "white queen" and "queen", and are numbered 1 and 2. The maximum number of captured substrings is 99, and the maximum number of all subpatterns, both capturing and non-capturing, is 200.

As a convenient shorthand, if any option settings are required at the start of a non-capturing subpattern, the option letters may appear between the "?" and the ":". Thus the two patterns

(?i:saturday|sunday)
(?:(?i)saturday|sunday)

match exactly the same set of strings. Because alternative branches are tried from left to right, and options are not reset until the end of the subpattern is reached, an option setting in one branch does affect subsequent branches, so the above patterns match "SUNDAY" as well as "Saturday".

 

Repetition

Repetition is specified by quantifiers, which can follow any of the following items:

a single character, possibly escaped
the . metacharacter
a character class
a back reference (see next section)
a parenthesized subpattern (unless it is an assertion - see below)

The general repetition quantifier specifies a minimum and maximum number of permitted matches, by giving the two numbers in curly brackets (braces), separated by a comma. The numbers must be less than 65536, and the first must be less than or equal to the second. For example:

z{2,4}

matches "zz", "zzz", or "zzzz". A closing brace on its own is not a special character. If the second number is omitted, but the comma is present, there is no upper limit; if the second number and the comma are both omitted, the quantifier specifies an exact number of required matches. Thus

[aeiou]{3,}

matches at least 3 successive vowels, but may match many more, while

\d{8}

matches exactly 8 digits. An opening curly bracket that appears in a position where a quantifier is not allowed, or one that does not match the syntax of a quantifier, is taken as a literal character. For example, {,6} is not a quantifier, but a literal string of four characters.

The quantifier {0} is permitted, causing the expression to behave as if the previous item and the quantifier were not present.

For convenience (and historical compatibility) the three most common quantifiers have single-character abbreviations:

* is equivalent to {0,}
+ is equivalent to {1,}
? is equivalent to {0,1}

It is possible to construct infinite loops by following a subpattern that can match no characters with a quantifier that has no upper limit, for example:

(a?)*

Earlier versions of Perl and PCRE used to give an error at compile time for such patterns. However, because there are cases where this can be useful, such patterns are now accepted, but if any repetition of the subpattern does in fact match no characters, the loop is forcibly broken.

By default, the quantifiers are "greedy", that is, they match as much as possible (up to the maximum number of permitted times), without causing the rest of the pattern to fail. The classic example of where this gives problems is in trying to match comments in C programs. These appear between the sequences /* and */ and within the sequence, individual * and / characters may appear. An attempt to match C comments by applying the pattern

/\*.*\*/

to the string

/* first command */ not comment /* second comment */

fails, because it matches the entire string due to the greediness of the .* item.

However, if a quantifier is followed by a question mark, then it ceases to be greedy, and instead matches the minimum number of times possible, so the pattern

/\*.*?\*/

does the right thing with the C comments. The meaning of the various quantifiers is not otherwise changed, just the preferred number of matches. Do not confuse this use of question mark with its use as a quantifier in its own right. Because it has two uses, it can sometimes appear doubled, as in

\d??\d

which matches one digit by preference, but can match two if that is the only way the rest of the pattern matches.

If the PCRE_UNGREEDY option is set (an option which is not available in Perl) then the quantifiers are not greedy by default, but individual ones can be made greedy by following them with a question mark. In other words, it inverts the default behaviour.

When a parenthesized subpattern is quantified with a minimum repeat count that is greater than 1 or with a limited maximum, more store is required for the compiled pattern, in proportion to the size of the minimum or maximum.

If a pattern starts with .* or .{0,} and the PCRE_DOTALL option (equivalent to Perl's /s) is set, thus allowing the . to match newlines, then the pattern is implicitly anchored, because whatever follows will be tried against every character position in the subject string, so there is no point in retrying the overall match at any position after the first. PCRE treats such a pattern as though it were preceded by \A. In cases where it is known that the subject string contains no newlines, it is worth setting PCRE_DOTALL when the pattern begins with .* in order to obtain this optimization, or alternatively using ^ to indicate anchoring explicitly.

When a capturing subpattern is repeated, the value captured is the substring that matched the final iteration. For example, after

(tweedle[dume]{3}\s*)+

has matched "tweedledum tweedledee" the value of the captured substring is "tweedledee". However, if there are nested capturing subpatterns, the corresponding captured values may have been set in previous iterations. For example, after

/(a|(b))+/

matches "aba" the value of the second captured substring is "b".

 

Back References

Outside a character class, a backslash followed by a digit greater than 0 (and possibly further digits) is a back reference to a capturing subpattern earlier (i.e. to its left) in the pattern, provided there have been that many previous capturing left parentheses.

However, if the decimal number following the backslash is less than 10, it is always taken as a back reference, and causes an error only if there are not that many capturing left parentheses in the entire pattern. In other words, the parentheses that are referenced need not be to the left of the reference for numbers less than 10. See the section entitled "Backslash" above for further details of the handling of digits following a backslash.

A back reference matches whatever actually matched the capturing subpattern in the current subject string, rather than anything matching the subpattern itself. So the pattern

(sens|respons)e and \1ibility

matches "sense and sensibility" and "response and responsibility", but not "sense and responsibility". If caseful matching is in force at the time of the back reference, then the case of letters is relevant. For example,

((?i)rah)\s+\1

matches "rah rah" and "RAH RAH", but not "RAH rah", even though the original capturing subpattern is matched caselessly.

There may be more than one back reference to the same subpattern. If a subpattern has not actually been used in a particular match, then any back references to it always fail. For example, the pattern

(a|(bc))\2

always fails if it starts to match "a" rather than "bc". Because there may be up to 99 back references, all digits following the backslash are taken as part of a potential back reference number. If the pattern continues with a digit character, then some delimiter must be used to terminate the back reference. If the PCRE_EXTENDED option is set, this can be whitespace. Otherwise an empty comment can be used.

A back reference that occurs inside the parentheses to which it refers fails when the subpattern is first used, so, for example, (a\1) never matches. However, such references can be useful inside repeated subpatterns. For example, the pattern

(a|b\1)+

matches any number of "a"s and also "aba", "ababaa" etc. At each iteration of the subpattern, the back reference matches the character string corresponding to the previous iteration. In order for this to work, the pattern must be such that the first iteration does not need to match the back reference. This can be done using alternation, as in the example above, or by a quantifier with a minimum of zero.

 

Assertions

An assertion is a test on the characters following or preceding the current matching point that does not actually consume any characters. The simple assertions coded as \b, \B, \A, \Z, \z, ^ and $ are described above. More complicated assertions are coded as subpatterns. There are two kinds: those that look ahead of the current position in the subject string, and those that look behind it.

An assertion subpattern is matched in the normal way, except that it does not cause the current matching position to be changed. Lookahead assertions start with (?= for positive assertions and (?! for negative assertions. For example,

\w+(?=;)

matches a word followed by a semicolon, but does not include the semicolon in the match, and

foo(?!bar)

matches any occurrence of "foo" that is not followed by "bar". Note that the apparently similar pattern

(?!foo)bar

does not find an occurrence of "bar" that is preceded by something other than "foo"; it finds any occurrence of "bar" whatsoever, because the assertion (?!foo) is always true when the next three characters are "bar". A lookbehind assertion is needed to achieve this effect.

Lookbehind assertions start with (?<= for positive assertions and (?<! for negative assertions. For example,

(?<!foo)bar

does find an occurrence of "bar" that is not preceded by "foo". The contents of a lookbehind assertion are restricted such that all the strings it matches must have a fixed length. However, if there are several alternatives, they do not all have to have the same fixed length. Thus

(?<=bullock|donkey)

is permitted, but

(?<!dogs?|cats?)

causes an error at compile time. Branches that match different length strings are permitted only at the top level of a lookbehind assertion. This is an extension compared with Perl 5.005, which requires all branches to match the same length of string. An assertion such as

(?<=ab(c|de))

is not permitted, because its single top-level branch can match two different lengths, but it is acceptable if rewritten to use two top-level branches:

(?<=abc|abde)

The implementation of lookbehind assertions is, for each alternative, to temporarily move the current position back by the fixed width and then try to match. If there are insufficient characters before the current position, the match is deemed to fail. Lookbehinds in conjunction with once-only subpatterns can be particularly useful for matching at the ends of strings; an example is given at the end of the section on once-only subpatterns.

Several assertions (of any sort) may occur in succession. For example,

(?<=\d{3})(?<!999)foo

matches "foo" preceded by three digits that are not "999". Furthermore, assertions can be nested in any combination. For example,

(?<=(?<!foo)bar)baz

matches an occurrence of "baz" that is preceded by "bar" which in turn is not preceded by "foo".

Assertion subpatterns are not capturing subpatterns, and may not be repeated, because it makes no sense to assert the same thing several times. If an assertion contains capturing subpatterns within it, these are always counted for the purposes of numbering the capturing subpatterns in the whole pattern. Substring capturing is carried out for positive assertions, but it does not make sense for negative assertions.

Assertions count towards the maximum of 200 parenthesized subpatterns.

 

Once-Only Subpatterns

With both maximizing and minimizing repetition, failure of what follows normally causes the repeated item to be re-evaluated to see if a different number of repeats allows the rest of the pattern to match. Sometimes it is useful to prevent this, either to change the nature of the match, or to cause it fail earlier than it otherwise might, when the author of the pattern knows there is no point in carrying on.

Consider, for example, the pattern \d+foo when applied to the subject line

123456bar

After matching all 6 digits and then failing to match "foo", the normal action of the matcher is to try again with only 5 digits matching the \d+ item, and then with 4, and so on, before ultimately failing. Once-only subpatterns provide the means for specifying that once a portion of the pattern has matched, it is not to be re-evaluated in this way, so the matcher would give up immediately on failing to match "foo" the first time. The notation is another kind of special parenthesis, starting with (?> as in this example:

(?>\d+)bar

This kind of parenthesis "locks up" the part of the pattern it contains once it has matched, and a failure further into the pattern is prevented from backtracking into it. Backtracking past it to previous items, however, works as normal.

An alternative description is that a subpattern of this type matches the string of characters that an identical standalone pattern would match, if anchored at the current point in the subject string.

Once-only subpatterns are not capturing subpatterns. Simple cases such as the above example can be thought of as a maximizing repeat that must swallow everything it can. So, while both \d+ and \d+? are prepared to adjust the number of digits they match in order to make the rest of the pattern match, (?>\d+) can only match an entire sequence of digits.

This construction can of course contain arbitrarily complicated subpatterns, and it can be nested.

Once-only subpatterns can be used in conjunction with lookbehind assertions to specify efficient matching at the end of the subject string. Consider a simple pattern such as

abcd$

when applied to a long string which does not match it. Because matching proceeds from left to right, PCRE will look for each "a" in the subject and then see if what follows matches the rest of the pattern. If the pattern is specified as

^.*abcd$

then the initial .* matches the entire string at first, but when this fails, it backtracks to match all but the last character, then all but the last two characters, and so on. Once again the search for "a" covers the entire string, from right to left, so we are no better off. However, if the pattern is written as

^(?>.*)(?<=abcd)

then there can be no backtracking for the .* item; it can match only the entire string. The subsequent lookbehind assertion does a single test on the last four characters. If it fails, the match fails immediately. For long strings, this approach makes a significant difference to the processing time.

 

Conditional Subpatterns

It is possible to cause the matching process to obey a subpattern conditionally or to choose between two alternative subpatterns, depending on the result of an assertion, or whether a previous capturing subpattern matched or not. The two possible forms of conditional subpattern are

(?(condition)yes-pattern)
(?(condition)yes-pattern|no-pattern)

If the condition is satisfied, the yes-pattern is used; otherwise the no-pattern (if present) is used. If there are more than two alternatives in the subpattern, a compile-time error occurs.

There are two kinds of condition. If the text between the parentheses consists of a sequence of digits, then the condition is satisfied if the capturing subpattern of that number has previously matched. Consider the following pattern, which contains non-significant white space to make it more readable (assume the PCRE_EXTENDED option) and to divide it into three parts for ease of discussion:

( \( )? [^()]+ (?(1) \) )

The first part matches an optional opening parenthesis, and if that character is present, sets it as the first captured substring. The second part matches one or more characters that are not parentheses. The third part is a conditional subpattern that tests whether the first set of parentheses matched or not. If they did, that is, if subject started with an opening parenthesis, the condition is true, and so the yes-pattern is executed and a closing parenthesis is required. Otherwise, since no-pattern is not present, the subpattern matches nothing. In other words, this pattern matches a sequence of non-parentheses, optionally enclosed in parentheses.

If the condition is not a sequence of digits, it must be an assertion. This may be a positive or negative lookahead or lookbehind assertion. Consider this pattern, again containing non-significant white space, and with the two alternatives on the second line:

(?(?=[^a-z]*[a-z])
\d{2}[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} )

The condition is a positive lookahead assertion that matches an optional sequence of non-letters followed by a letter. In other words, it tests for the presence of at least one letter in the subject. If a letter is found, the subject is matched against the first alternative; otherwise it is matched against the second. This pattern matches strings in one of the two forms dd-aaa-dd or dd-dd-dd, where aaa are letters and dd are digits.

 

Comments

The sequence (?# marks the start of a comment which continues up to the next closing parenthesis. Nested parentheses are not permitted. The characters that make up a comment play no part in the pattern matching at all.

If the PCRE_EXTENDED option is set, an unescaped # character outside a character class introduces a comment that continues up to the next newline character in the pattern.

 

Performance

Certain items that may appear in patterns are more efficient than others. It is more efficient to use a character class like [aeiou] than a set of alternatives such as (a|e|i|o|u). In general, the simplest construction that provides the required behaviour is usually the most efficient. Jeffrey Friedl's book contains a lot of discussion about optimizing regular expressions for efficient performance.

When a pattern begins with .* and the PCRE_DOTALL option is set, the pattern is implicitly anchored by PCRE, since it can match only at the start of a subject string. However, if PCRE_DOTALL is not set, PCRE cannot make this optimization, because the . metacharacter does not then match a newline, and if the subject string contains newlines, the pattern may match from the character immediately following one of them instead of from the very start. For example, the pattern

(.*) second

matches the subject "first\nand second" (where \n stands for a newline character) with the first captured substring being "and". In order to do this, PCRE has to retry the match starting after every newline in the subject.

If you are using such a pattern with subject strings that do not contain newlines, the best performance is obtained by setting PCRE_DOTALL, or starting the pattern with ^.* to indicate explicit anchoring. That saves PCRE from having to scan along the subject looking for a newline to restart at.

 

Limitiations

There are some size limitations in PCRE but it is hoped that they will never in practice be relevant. The maximum length of a compiled pattern is 65539 (sic) bytes. All values in repeating quantifiers must be less than 65536. The maximum number of capturing subpatterns is 99. The maximum number of all parenthesized subpatterns, including capturing subpatterns, assertions, and other types of subpattern, is 200.

The maximum length of a subject string is the largest positive number that an integer variable can hold. However, PCRE uses recursion to handle subpatterns and indefinite repetition. This means that the available stack space may limit the size of a subject string that can be processed by certain patterns.

 

Differences From Perl

The differences described here are with respect to Perl 5.005.

1. By default, a whitespace character is any character that the C library function isspace recognizes, though it is possible to compile PCRE with alternative character type tables. Normally isspace matches space, formfeed, newline, carriage return, horizontal tab, and vertical tab. Perl 5 no longer includes vertical tab in its set of whitespace characters. The \v escape that was in the Perl documentation for a long time was never in fact recognized. However, the character itself was treated as whitespace at least up to 5.002. In 5.004 and 5.005 it does not match \s.

2. PCRE does not allow repeat quantifiers on lookahead assertions. Perl permits them, but they do not mean what you might think. For example, (?!a){3} does not assert that the next three characters are not "a". It just asserts that the next character is not "a" three times.

3. Capturing subpatterns that occur inside negative lookahead assertions are counted, but their entries in the offsets vector are never set. Perl sets its numerical variables from any such patterns that are matched before the assertion fails to match something (thereby succeeding), but only if the negative lookahead assertion contains just one branch.

4. Though binary zero characters are supported in the subject string, they are not allowed in a pattern string because it is passed as a normal C string, terminated by zero. The escape sequence "\0" can be used in the pattern to represent a binary zero.

5. The following Perl escape sequences are not supported: \l, \u, \L, \U, \E, \Q. In fact these are implemented by Perl's general string-handling and are not part of its pattern matching engine.

6. The Perl \G assertion is not supported as it is not relevant to single pattern matches.

7. Fairly obviously, PCRE does not support the (?{code}) construction.

8. There are at the time of writing some oddities in Perl 5.005_02 concerned with the settings of captured strings when part of a pattern is repeated. For example, matching "aba" against the pattern /^(a(b)?)+$/ sets $2 to the value "b", but matching "aabbaa" against /^(aa(bb)?)+$/ leaves $2 unset. However, if the pattern is changed to /^(aa(b(b))?)+$/ then $2 (and $3) get set.

In Perl 5.004 $2 is set in both cases, and that is also true of PCRE. If in the future Perl changes to a consistent state that is different, PCRE may change to follow.

9. Another as yet unresolved discrepancy is that in Perl 5.005_02 the pattern /^(a)?(?(1)a|b)+$/ matches the string "a", whereas in PCRE it does not. However, in both Perl and PCRE /^(a)?a/ matched against "a" leaves $1 unset.

10. PCRE provides some extensions to the Perl regular expression facilities:

(a) Although lookbehind assertions must match fixed length strings, each alternative branch of a lookbehind assertion can match a different length of string. Perl 5.005 requires them all to have the same length.

(b) If PCRE_DOLLAR_ENDONLY is set and PCRE_MULTILINE is not set, the $ meta-character matches only at the very end of the string.

(c) If PCRE_EXTRA is set, a backslash followed by a letter with no special meaning is faulted.

(d) If PCRE_UNGREEDY is set, the greediness of the repetition quantifiers is inverted, that is, by default they are not greedy, but if followed by a question mark they are.


 

ODBC Logging

To turn ODBC Logging on, create in "ODBC Data Source Administrator" a data source named "ArgusLog". In the database, create a table named LogStrings with the following mandatory columns: three text columns called "Logger", "RecTag", and "RecMsg" and a timestamp column "RecTime". You may also add additional 'row number' fields, but make sure they are automatically updated, Argus would never write there. Argus doesn't currently log other information to ODBC. To add log records, Argus executes the following SQL statement:

INSERT INTO LogStrings (Logger, RecTag, RecTime, RecMsg) VALUES (?, ?, ?, ?)

You may issue the following SQL statement to create LogStrings table under Microsoft Access:

create table LogStrings (
 RecId counter NOT NULL CONSTRAINT RecIdIndex PRIMARY KEY,
 Logger char(20) NOT NULL,
 RecTag char(1) NOT NULL,
 RecTime date NOT NULL,
 RecMsg char(250) NOT NULL);

Then go to Config/Start-up, turn ODBC logging on and restart Argus. ODBC errors are logged to "odbcerr.log" file in Argus logs directory.


 

Внимание!

Некоторая часть глав этого пособия еще не написана или не переведена, поэтому мы ищем вашей помощи. Если у Вас есть желание написать одну или несколько глав и помочь нам в составлении этого пособия (на что у нас почти не остается времени), свяжитесь с нами: argus@ritlabs.com или 2:469/84@fidonet

 


Copyright © 1996-2000 RIT Research Labs. All rights reserved.