![]() |
|||
![]() |
![]() |
![]() |
|
![]() |
|
--- Формат файла actions.conf |
|
Данные устарели. Ждите обновления. Некоторая информация есть в дистрибутиве. Чтобы обеспечить возможность настраивать реакцию iserverd на различные события (например подключение/отключение пользователя, регистрационный запрос, смена статуса, изменение данных о пользователе) был спроектирован парсер конфигурационного файла actions.conf. В devel версии этот парсер отключен и пока не работает. В stable ветви его нет. Конфигурационный файл actions.conf жестко структурирован и состоит из трех компонентов: декларации переменных, секции и директивы включения (include). Комментарии не являются частью actions.conf и игнорируются еще на стадии лексического анализа. Каждая конструкция должна заканчиваться символом ';'. Допускаются комментарии в стиле C, C++ и Perl. Вложение блочных комментариев /* */ запрещено и приводит к синтаксической ошибке. Идентификаторы в конфигурационном файле состоят из букв латинского алфавита, цифр и знака
подчеркивания. Идентификатор не может начинаться с цифры, но может начинаться с символа подчеркивания.
Имена идентификаторов регистрозависимые. В качестве идентификатора не могут использоваться следующие
зарезервированные слова: Примеры верных идентификаторов: main_email1, email_2, _uin_range_, Online_Log, INTRUDERS. Декларации переменных состоят из ключевого слова var, идентификатора переменной и ее значения.
Тип переменной определяется автоматически по ее значению. Имеются следующие типы переменных:
строка (string), номер (unsigned long), список. Значение строки заключается в двойные кавычки,
список заключается в квадратные скобки [] и может содержать в себе номера и диапазоны номеров,
разделенные запятыми, вместо номера можно использовать целочисленную переменную. При использовании
переменных в тексте конфигурационного файла к строковым и целочисленным переменным добавляется символ
'$', к списковым переменным символ '@'. Текстовые переменные можно использовать в качестве целочисленных,
если они содержать текстовое представление целого числа. Примеры декларации различных переменных: Директива include используется для включения в конфигурационный файл других файлов. Таким образом конфигурационный файл можно разделить на несолько логических частей. Эта директива обрабатывается на уровне лексического анализатора, т.е. ее можно использовать и внутри секций и вне их (синтаксический анализ проводится после выполнения включения файла). Директива состоит из ключевого слова include и строкового параметра, представляющего собой полный путь к включаемому файлу. Пример: include "/etc/iserverd/online.conf"; Секции представляют собой блоки конструкций, заключенные в фигурные скобки {}. Секции могут быть двух
типов: секции событий и секция опций. Секции событий начинаются с ключевого слова event за которым следует
идентификатор секции:
Каждая секция может содержать неограниченное число правил, каждое из которых выполняет какое-либо действие из списка возможных в зависимости от параметров события (например от номера uin подключившегося пользователя). Возможные действия следующие: посылка почтового сообщения (email) используя шаблон, посылка ICQ сообщения на заданный номер или список номеров (список может включать в себя диапазоны), запись информации о событии в файл, запуск заданной программы, остановка обработки события. Можно задавать степень информативности этих действий используя опции и шаблоны. Другими словами iserverd может при подключении определенного пользователя послать письмо, содержашее uin этого пользователя либо произвести поис дополнительных данных в базе данных и отослать письмо с uin, именем, фамилией, email адресом этого пользователя. Второй вариант соответственно отнимает больше вычислительных ресурсов и может быть недопустим для высокозагруженного сервера. Секция Options содержит опции процесса AP (actions processor) записываемые как имя_опции = значение. Правила секций событий строятся по следующему принципу: вначале задаются условия на выполнение правила,
затем ключевое слово выполняемого действия и параметры этого действия. Условие задается ключевыми словами
for и with. Условие является необязательным и его можно опустить. В качестве любого параметра можно использовать
переменные. Синтаксис условия следующий:
Ключевые слова действия могут быть следующими: log, message, mail, run, stop. Их назначение параметры
приведены в следующей таблице:
Ниже приведены несколько примеров правил для выполнения различных действий при подключении пользователя.
То есть приведен пример секции Online. Правила можно записывать как в сокращенной форме, так и в
расширенной. Во втором случае они очень напоминают фразы на ангийском языке.
Рассмотрим приведенный выше пример. Первые 4 правила абсолютно идентичны (это сделано для того, чтобы показать насколько гибки синтаксические правила). Их действие следующее - при подключении пользователя 6213949 отправляется сообщение на номер uin, содержащийся в переменной $ADM_UIN с использованием шаблона "/etc/isd/mess.ptt". Шаблоны загружаются при старте сервера и после их редактирования вам потребуется произвести рестарт AP. Пятое правило служит для отправки email администратору на адрес, заданный в строковой переменной $ADMIN_EMAIL при подключении какого-либо пользователя из списка @INTRUDERS. Шестое правило запускает программу $ONLINE_PROG при подключении любого пользователя и отправляет на STD этой программы параметры %u - uin, %f - имя, %e1 %e2 - email1 и email2. При этом условие for any можно опустить - оно не обязательно. Если в секции опций запрещено получение дополнительных данных, то вместо всех параметров кроме uin будут передаваться пустые строки. Седьмое правило записывает в лог информацию о подключении пользователей 1012-1017. В лог также записывается ip адрес пользователя и версия его клиента. Восьмое правило прекращает обработку события для клиентов 1012-1017. В самом деле, зачем журналировать одно и тоже событие дважды. Последнее правило записывает в лог информацию обо всех подключениях пользователей. Правила обрабатываются в том же порядке, в каком они появляются в конфигурационном файле. Допускается
размещение нескольких секций с одним и тем же идентификатором. При этом правила будут добавляться в список
последовательно из каждой секции. После обработки правила AP приступает к обработке следующего. Прервать
обработку можно командой stop. Изменить такое поведение можно параметром "stop_rule = yes" в секции options.
|
|
|
|
||||||||||||||||||||||||||||||||||||||
|
|
Webmaster A.V.Shutko |
![]() |
![]() |