Обновил снифер для запуска пользовательских скриптов.
Скрипты на джава.
Папка со скриптами
script/ (Обновился конфиг, добавился путь к хмл описанию скриптов)
scripts.xml - описание скриптов....йд скрипта, класс и путь к файлу скрипта.
Для примера написаны 2 скрипта:
TestScript.java - имплеминирует два интерфейса
ScriptHandler и
Runnable, означает что у него будет вызван(и должен существовать) метод
initScript, Runnable - что скрипт будет запущен в другом потоке(будет выполнен метод
run). В самом методе ничего интересного нет: в цикле отображается системное время 5 раз с промежутком в одну секунду.
UiLogger.java - имплемениерует
PacketLogHandler - что означает, что данный класс будет добавлен в цепочку логеров на получение всех пакетов путем вызова метода:
Код:
public void onDecodePacket(NetworkChannel channel, Direction direction, Integer size,
Integer opcode, byte[] data, int frame);
Конкретно данный класс создает гуи окно, показывает счетчик пакетов и по нажатию на закрытие(крестик) окна - отключает снифер.
Скрипты загружаются из хмл, но компилируются все вместе. Из-за чего ошибка в одном скрипте может не дать работать остальным.
Для работы со скриптами, а именно компиляции в рантайме, необходимо наличие установленой JDK. Для тех у кого нет JDK - скрипты работать не будут и в логе будет предупреждение.