Такие скрипты в общем случае могут быть двух
типов:
- Работающие непрерывно после запуска и
отвечающие на определенные события,
уведомления о которых им посылает NetView.
Скелетом таких скриптов является
циклический вызов функции waitevent которая
ожидает происхождения какого-либо
события. Когда скрипт вызывает waitevent он
входит в режим ожидания на
неопределенное время. Выход из нее
происходит при каком либо событии -
например произошел речек, или юзер
кликнул контекстное меню, так же можно
заставить нетвью посылать скрипту
событие таймера через определенный
интервал времени. Подробный список
событий можно прочитать в описании
функции waitevent. События, происходящие в
NetView посылаются в функцию waitevent в порядке
очереди и в этом же порядке извлекаются
из очереди при каждом вызове функции (полная
аналогия с WINAPI GetMessage, фактически внутри
скрипт-энджина вызывается именно она).
- Запускаемые из менеджера скриптов на
закладке Scripts окна Preferences, делающие
необходимые функции (например экспорт
состояния хостов в БД, или еще что нибудь)
и тут же завершающие работу. Таким
образом можно автоматизировать
выполнение некоторых функций при запуске
нетвью, прописав такой скрипт в
автозапуск (Autoload поставить в Yes). Такие
скрипты не вызывают waitmessage и являются "одноразовыми"
- они не могут реагировать на какие либо
события NetView.
Доступ к хостам.
Хостлист нетвью представляет собой
своеобразную базу данных по хостам. Каждый
хост имеет уникальный идентификатор типа
integer, который не меняется в течении данного
сеанса работы. Скрипт может обходить список
всех хостов, либо только выделенных мышкой.
Он может так же получать имя и IP адрес хоста
по его идентификатору, определять
идентификатор, зная имя или адрес, изменять
имя или адрес, получать значение
метапеременных хоста зная его
идентификатор или присваивать им новые
значения. Некоторые сообщения NetView,
выдаваемые функцией waitevent (такие как
например NMNP_ALERT) передают идентификатор
хоста в качестве одного из своих параметор,
либо наоборот чтобы сделать перепроверку
состояния какого-либо хоста с помощью
функции action, скрипт должен указать его
идентификатор в качестве ее параметра. Для
работы с хостами в скрипте есть встроенный
класс TNVHOST. У него есть несколько полей и 2
основных метода: GETHOST - для получения всех
данных хоста по его идентификатору и SETHOST
для внесения всех изменений IPдреса и имени
хоста, совершенных скриптом, в хостлист (так
просто изменения этих данных не приводит к
к изменению соответсвующих данных хоста в
списке). Список всех методов и полей TNVHOST'а
можно почитать здесь, посмотреть это на
деле можно в скрипте "togglestate.nvs"
Для создания менюшек служит объект TNVMENUITEM.
Прочитать про его поля и методы можно здесь,
посмотреть это на деле можно в скрипте "togglestate.nvs"
Функции управления
procedure SetStatus(txt:string);
- Устанавливает статус скрипта в таблице
списка скриптов плагина
procedure SetTimer(interval:integer);
- Запускает таймер посылающий скрипту
сообщение с кодом 8 через заданный
интервал времени
- interval -интервал в мсек. Если interval=0 то
установленный ранее таймер
отключается
function WaitEvent(var wparam, lparam: integer): integer;
- Ожидает сообщение о каком-либо событии
- wparam, lparam -параметры характеризующие
события (см ниже)
- Возвращает код события (см ниже)
- Код события NMNP_ALERT, wparam может иметь
следующие установленные битовые маски (проверять
операцией AND):
- NVALERT_NETWATCHER - событие в NetWatcher'е. Если
(wparam AND NVALERTMASK_CANCEL)=0 значит ктото
подключился, иначе - отключился. в lparam
присутствует идентификатор
подключившегося хоста или 0. Так же
можно проверить наличие следующих
флагов: если (wparam AND NVALERTMASK_NWBLACK)<>0
значит юзер из черного списка, если (wparam
AND NVALERTMASK_NWWHITE)<>0 значит юзер из
белого списка
- NVALERT_ALARMHOST - для хоста,
идентификатор которого находится в lparam
произошло оповещение. Если (wparam AND
NVALERTMASK_HOSTUP)<>0 значит хост включился,
если (wparam AND NVALERTMASK_HOSTDOWN)<>0 -
выключился, Если (wparam AND NVALERTMASK_CANCEL)<>0
- юзер кликнул мышкой по хосту для
которого перед этим произошло
оповещение
- NVALERT_TERMINAL -произошло подключение\отключение
в Terminal. lparam -идентификатор
подключившегося хоста или 0.Если (wparam AND
NVALERTMASK_CANCEL)=0 значит хост подключился,
иначе - отключился.
- NVALERT_REDIRECTOR -произошло подключение\отключение
в Traffic Redirector. lparam -идентификатор
подключившегося хоста или 0.Если (wparam AND
NVALERTMASK_CANCEL)=0 значит хост подключился,
иначе - отключился.
- NVALERT_IPLOGGER -IP logger чтото засек.
Проверяем с помощью AND наличие
следующих флагов:
- NVALERTMASK_ILLIST - ктото подключился в
прослушиваемому порту
- NVALERTMASK_ILICMP - наc флудят по ICMP
- NVALERTMASK_ILSYN - наc флудят TCP SYN пакетами
- NVALERTMASK_ILUDP - наc флудят UDP пакетами (ненадежно)
- Код события NMNP_ACTION, wparam может иметь
следующие флаги:
- NVACTION_LIST. lpara, может содержать
идентификатор списка или 0. wparam может
комбинироватся c:
- NVACTION_GETFROMNET - произошел опрос сети на
наличие новых компов
- NVACTION_GETFROMFILE - произошла загрузка
хостлиста из файла
- NVACTION_RECHECK - произошла перепроверка
списка
- NVACTION_RETRACE - произошла
перетрассировка хостов списка
- NVACTION_ACTIVATE -приложение нетвью стало
активным или наоборот ушло в фон.
lparam равно wParam сообщения WM_ACTIVATE которое
получило окно NetView
- NVACTION_MENUPOPUP -сообщение о том что
нарисовалась меню, lparam:
- NVMENUFLAG_MAIN - появилось меню Plug-ins
- NVMENUFLAG_CONTEXT -всплыло контекстное меню
хостлиста
- NVMENUFLAG_TRAY -всплыло контекстное меню
иконки в области трея
- NVACTION_IMGEXPORT - произошел экспорт
визуальной карты с идентификатором lparam.
- Код события NMNP_HOSTMSG - это сообщение НВ
шлет активным плагинам и скриптам если
юзер кликнул 2 раза на хосте, у которого в
строке специальной команды указано hostmsg:N,
где N - произвольное число
- wparam - равен N
- lparam - равен идентификатору хоста
- Коды событий от $850 до $A00 можно
использовать для получения событий от
своих менюшек.
|