Интерфейс для подключение к другим системам (API)
DF™ Site Monitor может использоваться в качестве модуля к другим системам, получать задание от них и после его выполнения отсылать собранные данные обратно. При этом не имеет значение, на каком языке программирования (Perl/Php/C/C++) написаны скрипты или программы, к которым происходит подключение системы DF™ Site Monitor. Для обмена информацией между скриптами используются: командная строка, стандартные потоки ввода/вывода (stdin/stdout) и переменные окружения.

Передача данных системе.
При передаче данных в систему производиться вызов программы smcrn.cgi с параметрами и передача данных в поток. Для этого используются функции открывающие процесс, создавая канал с ним (popen(cmd,"w"), open(cmd, "|./smcrn.cgi …")). При вызове программы в параметрах командной строки задается вызываемая команда и ее параметры. В зависимости от вызываемой команды в поток передаются разные виды данных, а некоторые команды не требуют передачи данных. Передаваемые в поток данные разделены на две части, на данные содержащие настройки группы сайтов и данные с веб-адресами сайтов и параметрами их мониторинга. Авторизация системы производится с помощью переменной окружения ADMIN_PWD, через которую передается пароль администратора системы. Если вы вызываете скрипт smcrn.cgi из другого каталога, то для начала необходимо установить в качестве текущего каталога каталог, где установлена система.

Порядок передачи данных:
0. Назначение текущим каталогом, каталога с программой smcrn.cgi. Производиться, когда текущий каталог отличается от того, где находиться система. Например, при вызове скрипта из другого каталога или cron.
1. Назначение переменной окружения ADMIN_PWD соответствующей паролю администратора системы.
2. Вызов командной строки с заданной командой и параметрами (./smcrn.cgi команда параметр1 параметр2 …).
3. Передача данных в поток. Может отсутствовать, если запрашиваемая команда не требует передачи данных.
4. Проверка код возврата программы smcrn.cgi, если он равен нулю, то выполнение заданной команды прошло успешно.

Получение данных от системы.
Получение данных от системы может происходить двумя способами.
Первый, когда система, используя способы оповещения, сама передает данные по мере их обработки или после выполнения всего задания. Это может быть выполнение командной строки с передачей данных в поток (Command, Command after completing) или передача данных какому-либо сайту методом GET (URL).
Второй, когда сторонний скрипт сам запрашивает данные, используя команду get.

На нашем сайте приведен пример скрипта на языке Perl демонстрирующий работу с системой в качестве модуля.

Параметры командной строки.
  ./smcrn.cgi set [GROUP] - назначение настроек группы сайтов, если группа отсутствует, то она будет создана. В поток передаются только данные с настройками группы, данные с сайтами будут игнорироваться.
  ./smcrn.cgi add [GROUP] - добавление веб-адресов в группу, если веб-адрес уже есть в группе, то его настройки мониторинга будут перезаписаны. В поток передаются только данные с веб-адресами сайтов и их параметры.
  ./smcrn.cgi write [GROUP] - перезапись веб-адресов, все данные об ранее имевшихся веб-адресах группы будут удалены. Настройки группы сохраняются. В поток передаются только данные с веб-адресами сайтов и их параметры.
  ./smcrn.cgi rewrite [GROUP] - обновление веб-адресов группы. В группу будут добавлены новые веб-адреса. Если веб-адрес уже имеется в группе, его параметры проверки будут перезаписаны, а данные об его текущем состоянии сохранены. Старые веб-адреса будут удалены. В поток передаются только данные с веб-адресами сайтов и их параметры.
  ./smcrn.cgi writegroup [GROUP] - запись группы сайтов, включает назначение настроек и запись веб-адресов группы. Аналогично действию set + write. В поток передаются все данные - данные с настройками группы и данные с веб-адресами сайтов.
  ./smcrn.cgi del [GROUP] - удаление веб-адресов из группы. В поток передаются данные с веб-адресами сайтов которые необходимо удалить, без параметров проверки (url=http://mydomain.com).
  ./smcrn.cgi delgroup [GROUP] - удаление группы с веб-адресами. Передавать данные в поток не требуется.
  ./smcrn.cgi get [GROUP] [URL] - вывод информации о состоянии сайта принадлежащего группе, если веб-адрес сайта не указан, то будут выведены все веб-адреса группы. Формат вывода аналогичен формату оповещения типа Command описанному в разделе настройки группы (http://google.com 5 1256456854 f=0 p=2 c=200).
  ./smcrn.cgi getsetup [GROUP] - вывод информации о настройке группы и параметрах проверки веб-адресов группы. Формат данных аналогичен передаваемому в поток для настройки группы и параметров проверки сайтов.
  ./smcrn.cgi getstats [GROUP] - статистика о группе. Если группа не указана, будет выведена информация о всех группах.
  Формат вывода: GROUP NU NB NP NFU NFB NFP SECT RECT
  Где:
   GROUP - название группы сайтов;
   NU - количество сайтов в группе;
   NB - количество сайтов проверяемых на наличие недопустимого содержания;
   NP - количество сайтов проверяемых на наличие требуемого содержания;
   NFU - количество сайтов доступных в настоящее время;
   NFB - количество сайтов содержащих недопустимое содержание;
   NFP - количество сайтов содержащих требуемое содержание;
   SECT - средняя значение назначенной частоты проверки сайтов группы (в минутах);
   RECT - средняя значение текущей частоты проверки сайтов группы (в минутах);

  ./smcrn.cgi check [MAXURL] [MAXPROC] - запуск процесса проверки.
  ./smcrn.cgi checkgroup GROUP [MAXURL] [MAXPROC] - запуск процесса проверки сайтов заданной группы.
  При запуске сканирования можно задать максимальное число проверяемых сайтов за текущий вызов скрипта (MAXURL) и количество потоков используемых при проверке сайтов (MAXPROC). Если эти параметры не заданы, то их значения берутся из настроек. Команды check и checkgroup не требуют авторизации и передачи данных в поток.
  ./smcrn.cgi exist GROUP - проверка наличия группы. При наличии группы код завершения процесса будет равен 1, в противном случае 0.

  Где:
  [GROUP] - название группы, если название группы не задано система будет считать, что название группы "general".

Данные, передаваемые в поток.
Данные содержащие настройки группы:
checktime=360  - частота проверки сайтов (минутах).
writelog=1/0  - вести лог проверок сайтов.
inftype=0-4  - способ оповещения или способ каким система будет передавать собранные данные пользователю или сторонним программам. Возможные варианты: 0 - отсутствует, 1- Command, 2 - E-Mail, 3 - GET URL, 4 - Command after completing. Более подробно способы описаны в разделе по настройке параметров группы.
inform=./myscript.cgi  - реквизиты оповещения, назначаемая информация зависит от способа оповещения.
infuptime=1/0  - оповещать при изменении доступности сайта (мониторинг на uptime).
inffndban=1/0  - оповещать при нахождении на сайте запрещенного содержания.
inffndpres=1/0  - оповещать при отсутствии на сайте требуемого содержания.
qstrunc=uc  - отбрасывать параметры страниц (QUERY_STRING) при проверке сайтов. Имеется возможность отбрасывать параметры страниц при проверке сайтов на доступность (u) и/или на содержание (c).
suspend=1/0  - приостановка проверки сайтов группы.
delete_after_check=1/0  - удалении группы после проверки сайтов и успешного оповещения.
bancontent=16  - длина запрещенного содержания. Количество запрещенного содержания не ограничено.
My Banned Text#1  - текст запрещенного содержания.
bancontent=16
My Banned Text#2
prescontent=16  - длина требуемого содержания.
My Required Text  - требуемое на сайте содержание.

Данные содержащие веб-адреса сайтов с параметрами их проверки:
url=http://domain1.com  - веб-адрес проверяемого сайта. Количество веб-адресов в группе не ограниченно.
chkban=1  - проверять на отсутствие запрещенного содержания (0 - проверять, 1 - не проверять).
chkpres=1  - проверять на наличие требуемого содержания (0 - проверять, 1 - не проверять).
url=http://domain2.com
chkban=1
chkpres=0
url=http://dfservice.com
chkban=0
chkpres=1