BINKLEY.EVT - Файл описания событий для Bink/+ версии 3.0#24
Составление и оформление (C) Всеволод Федотов, 2:5005/2
Bink/+ (C) Сергей Терехов, 2:5000/13

В bink/+ для переключения режимов работы в зависимости от времени суток и/или дня недели/месяца используется механизм *событий*. Каждое событие (каждый режим) описывается строкой Event, в которой указывается временные границы события и его "атрибуты". Каждая Event-строка имеет следующий синтаксис:

Event <day>{|<day>} <start> [<stop>] ["<string>"] <flags/options>

где
<day>

      День недели, в который данное событие произойдет:
           Sun     воскресенье     Fri     пятница
           Mon     понедельник     Sat     суббота
           Tue     вторник         Week    понедельник...пятница
           Wed     среда           WkEnd   суббота, воскресенье
           Thu     четверг         All     все дни недели

Дни недели можно комбинировать, например: Mon|Wed|WkEnd означает понедельник, среду, субботу и воскресенье. Пробелы НЕ должны использоваться.

<start>
Время начала события, в форме: hh:mm[,month[,day]]
где
hh:mm часы:минуты (0:00...23:59)
month номер месяца (0...12, 0 == все, т.е. любые, месяцы)
day число месяца (1...31)

Все Event-строки должны быть упорядочены по возрастанию времени начала события!

<stop>
Время окончания события, в форме: hh:mm По умолчанию, событие заканчивается через один час. Время окончания не может быть меньше времени начала события, следовательно, временной интервал не может переходить из сутки в сутки (то есть, через полночь).

<string>
Строка (длиной не более 32 символов), которая добавляется к командной строке запуска Packer, AfterMail. Строка должна быть заключена в кавычки.

<flags/options>
Флаги ("атрибуты") события. Если используется несколько флагов, то они должны быть разделены пробелами.

C
Во время этого события разрешается звонить ТОЛЬКО на круглосуточно работающие узлы (такие узлы имеют в nodelist'е флаг CM) и на узлы, для которых в строках Override и/или Hidden ЯВНО указано время работы.

K
Во время этого события запрещается звонить на круглосуточно работающие узлы (такие узлы имеют в nodelist'е флаг CM). На узлы, для которых в строках Override и/или Hidden ЯВНО указано время работы, звонки будут осуществляться.

M
Нормальное почтовое событие: разрешается звонить на любые узлы, независимо от флага CM и явного указания в Override/Hidden времени работы.

H
Во время этого события пакеты со статусом Crash будут отправляться независимо от стоимости (L) или размера (Q).

P
Во время этого события bink/+ будет пытаться не принимать никаких файлов. Это возможно только для исходящих сеансов при FTS-0001 или EMSI, причем на EMSI - только с сознательными программами, которые понимают флаг NPU, так как нет способа (кроме как на FTS-0001 или DietIFNA) не принимать файлов, если их захотели передать с другой стороны.

R
Запрещается звонить куда угодно. Но флаг H для этого же события будет иметь приоритет (то есть, будут отправляться только пакеты со статусами Crash и/или Immediate).

S
Запрещается отвечать на любые входящие звонки.

N
Во время этого события входящие файловые запросы будут отклоняться (File request declined).

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

B
Во время этого события вход в BBS разрешен.

L
Разрешается отправлять пакеты, если стоимость минуты соединения для их отправки равна нулю (то есть, отправлять только локальную почту).

L=n
Разрешается отправлять пакеты, если стоимость минуты соединения для их отправки равна значению n.

L<n
Разрешается отправлять пакеты, если стоимость минуты соединения для их отправки меньше значения n. Этот флаг может быть использован совместно с L>n.

L>n
Разрешается отправлять пакеты, если стоимость минуты соединения для их отправки больше значения n. Этот флаг может быть использован совместно с L Q=n
Устанавливает минимальное количество почты, которое будет инициировать ее отправку. Значение n - суммарный размер (в килобайтах) файлов ?LO + ?UT. Если имеются недопринятые файлы, то действие флага Q блокируется.

A=n
Изменяет периодичность между исходящими звонками. Значение по умолчанию равно 120 с или определяется в строке DialPer. Реальная периодичность колеблется в пределах +-50% от указанного значения. Допустимый интервал значений: от 2 до 1800

I=n
Аналогично флагу A=, но только для пакетов со статусом Immediate. По умолчанию n=5.

F
Событие с этим флагом должно случиться сразу как только это станет возможным, даже если время окончания события прошло. Такая ситуация может возникнуть, например, если короткое событие окажется перекрытым длительным почтовым сеансом. Обычно же, этот флаг используется для событий нулевой длины (то есть, время окончания события равно времени его начала)

D
Динамическое событие. Такое событие имеет указанные временные границы, но может закончиться раньше, если не останется почты некоторого типа, определяемого другими флагами событий. По окончании динамического события запускается нединамическое событие, назначенное на текущее время. Например, сначала забрать почту от узла в другом городе, а затем приступить к ее раздаче внутри своего города:
Event All 00:00 23:59 D L>0
Event All 00:01 23:59 M L=0

T=x,y
Устанавливает максимальное число разорвавшихся сеансов (x) и неудачных попыток соединения (y). По умолчанию: T=3,999. Значение 'x' не может быть установлено больше 8. По исчерпанию всех попыток соединения с некоторым узлом, ему выставляется состояние "недозваниваемый". Сброс всех счетчиков на все узлы происходит по флагу $.

$
В начале этого события сбрасыватся все счетчики, определенные флагом T.

Y
Запрещает издавание любых звуков. Первый тип будильника (из строки Alarm, вариант без префиксов) тоже выключается.

O
запрет распознавания RING

O=n
отвечать после n звонков. По умолчанию для всех событий O=1.

O=n,t1[,t2]
отвечать по звонку, который будет через t1 секунд после последнего звонка из непрерывных n звонков. t2 - охранная пауза в распознавании. Это предназначено для хитроумных телефонных коммутаторов, которые позволяют особым образом разделять входящие звонки. Например, для O=2,15,60 алгоритм таков: тот, кто звонит на вашу станцию ждет два длинных гудка, и кладет трyбку (у вас слышны два звонка - два слова RING). После этого он делает паyзy, и звонит опять. Если следyющий RING приходит чеpез 15..60-1 секyнд после второго из первых двух - bink/+ снимает трyбку и отвечат. Если подряд было не два RING в начале, или если паyза перед следyющим RING была меньше 15 секyнд - дальнейшее распознавание RING'ов начнется чеpез 60 секyнд. Если звонки последyют раньше 60 секyнд - 60 секyнд бyдет отмеряться в любом случае от последнего звонка-нарyшителя.

E1=n
Определяет код выхода (errorlevel) bink/+ по началу события

E2=n
Определяет код выхода по приему почты.

Пpимеp файла BINKLEY.CFG


Event All 00:00 00:29  $ M Y     O F   A=120    E1=230 %; E2=160
Event All 00:30 00:59  $ M Y       F   A=120    E1=210 %; E2=160
Event All 01:00 01:59  $ M Y           A=120    E1=210 %; E2=160
Event All 02:00 02:59  $ M Y           A=120    E1=210 %; E2=160
Event All 03:00 03:59  $ M Y           A=120    E1=210 %; E2=160
Event All 04:00 04:59  $ M Y           A=120    E1=210 %; E2=160
Event All 05:00 06:00  $ M Y N X       A=120    E1=210 %; E2=160
Event All 06:01 06:45  $ M Y           A=120    E1=210 %; E2=160
Event All 06:46 06:59  $ M Y     O F   A=120    E1=220 %; E2=160
Event All 07:00 07:59  $ M Y     O     A=120    E1=220 %; E2=160
Event All 08:00 09:59  $ M Y     O     A=120    E1=220 %; E2=160
Event All 10:00 11:59  $ M Y     O     A=120    E1=220 %; E2=160
Event All 12:00 13:59  $ M Y     O     A=120    E1=220 %; E2=160
Event All 14:00 15:59  $ M Y     O     A=120    E1=220 %; E2=160
Event All 16:00 17:59  $ M Y     O     A=120    E1=220 %; E2=160
Event All 18:00 19:59  $ M Y     O     A=120    E1=220 %; E2=160
Event All 20:00 20:59  $ M Y     O     A=120    E1=220 %; E2=160
Event All 21:00 21:59  $ M Y     O     A=120    E1=220 %; E2=160
Event All 22:00 22:59  $ M Y     O     A=120    E1=220 %; E2=160
Event All 23:00 23:59  $ M Y     O     A=120    E1=220 %; E2=160