[Назад] [Дальше] [Оглавление]

      runqueue [-d]

Модуль отвечает на письма пользователей, накопленные в очереди модулем listener. В большинстве ситуаций можно порекомендовать запуск runqueue из listener с помощью параметра конфигурации server-run.

В качестве альтернативы можно использовать регулярный (например раз в час) запуск runqueue из cron. Не забывайте при этом, что запуск должен происходить от имени пользователя, являющегося владельцем всех конфигурационных и бинарных файлов сервера статистики, либо runqueue должен иметь биты установки пользователя и группы на 0.0.

Если в командной строке задана опция `-d' , то при запуске модуль отсоединяется от терминала и продолжает выполнение фоновым процессом.

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

Некоторые команды жестко зашиты в структуру модуля:

daily [off]

Командный файл, сформированный на основе запросов пользователя к моменту подачи этой команды записывается в домашнем каталоге пользователя в файл `daily.fm'. Модуль daily проверяет наличие этого файла и запускает генератор отчетов для его отработки и отсылки результатов пользователю. Таким образом пользователь может самостоятельно задать форму отчета, отсылаемого ему ежедневно.

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

Для выключения генерации ежедневного отчета (удаления файла) можно применять аргумент `off'.

user username

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

Файл `mailserv.cf' должен быть помещен в подкаталог, указанный директивой server-dir основного конфигурационного файла. Файл текстовый, пустые строки и строки, начинающиеся с символа `#' игнорируются. В остальных строках помещаются команды с аргументами, отделенными от них пробелами и/или табуляциями.

command {name} {args}

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

D

Дата в формате MM.YYYY (месяц и день) или -MM (сколько-то месяцев назад). При передаче аргумента он преобразуется в формат, принятый сервером.

N

Число, состоящее из десятичных цифр.

S

Строка. Для включения в нее пробелов пользователь должен взять ее в кавычки.

exec "{program}"

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

file {name}

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

include {command}

Включает ранее полученное описание команды в текущую команду.

string "{text}"

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

user

Указывает на необходимость знать идентификатор пользователя для выполнения этой команды.

В параметрах команд string, exec производится замена последовательностей `#n' на соответствующие аргументы, указанные пользователем к команде (n - номер аргумента). Аргументы нумеруются с единицы и последовательность `#0' заменяется на имя пользователя. Для включения в строку символа `#' он должен быть удвоен.

Пример конфигурационного файла (смотрите также более сложный пример, поставляемый с сервером):

command help
        string  "Список допустимых команд:"
        string  " statistic - расход за указанный месяц или месяцы"
        string  " size      - размер пользовательского каталога"

command statistic
        user
        string  "<statistic>"

command statistic D
        user
        string  "<statistic begin=#1>"

command statistic D D
        user
        string  "<statistic begin=#1 end=#2>"

command size
        exec    "/usr/bin/du `/var/local/stat/bin/ulist -p #0`"

command * *
        string  "Непонятная команда!"
        string  ""
        include help


[Назад] [Дальше] [Оглавление]