andy_68 (andy_68) wrote,
andy_68
andy_68

контент-фильтр под netgraph

Так случилось, что в последнее время я несколько озаботился задачами контент-фильтрации, при этом с одной стороны создающий минимальный геморрой пользователю, а с другой стоящей все же разумных денег. В процессе анализа задачи пришел к выводу, что жизнь мне облегчил бы стейтлесс фильтр содержимого tcp пакетов. Именно tcp, и именно стетлесс.
Воодушевленный коллегой tarkhil (ну так тебе надо, возьми и напиши), а так же его рассказами про то, какая классная штука нетграф, я подумал "а почему бы и не?" На и начал...
Большое человеческое спасибо  nuclight за его старые посты http://nuclight.livejournal.com/126612.html и http://nuclight.livejournal.com/122098.html, а так же ospf_ripe за http://ospf-ripe.livejournal.com/2194.html , однако изложенный в последнем подход (использование bpf c предварительной компиляцией условий фильтрации) показался мне слабоприемлемым для моих задач.
В итоге я сочинил вот это http://nest.ahome.ru/pub/ng_grep-alpha-01.tgz
имеет 3 хука
in -- входящий
meet -- сюда попадют пакеты, соответствущие одному из паттернов
miss -- а сюда не соответствующие ни одному (а так же нулевые, ошибки и так далее)
таблица паттернов заполняется через msg, соответственно команды
add -- добавить паттерн в таблицу
del -- удалить паттерн из таблицы
check -- проверить наличие паттерна в таблице (если есть, то нет ошибки. Если нет -- соответсвенно есть)
пакет проверяется тупо на совпадение со всеми паттернами по очереди, с ignore case. Ну то есть вообще-то флаг предусмотрен и для case, но игнорируется (пока) и тупо присваивается ignore case. Сравнение -- strncasecmp, по длинне паттерна.
на FreeBSD 10.0 amd64 компилится без ворнингов, проблем при запуске нет.
Tags: ng_grep, работа
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 12 comments