### Плагин регулярных выражений совместимых с Perl (PCRE) для 3proxy

Фильтрующий плагин используется для создания правил поиска и замены регулярных выражений в запросе, заголовков запроса и ответа и данных. Добавляет поддержку 3х новых команд в файле конфигурации:

    pcre TYPE FILTER_ACTION REGEXP [ACE]
    pcre_rewrite TYPE FILTER_ACTION REGEXP REWRITE_EXPRESSION [ACE]
    pcre_extend FILTER_ACTION [ACE]
    pcre_options OPTION1 [...]

pcre - позволяет искать совпадения
pcre_rewrite - дополнительно позволяет производить замену подстрок
pcre_extend - расширяет ACL последней команды pcre или pcre_rewrite путем добавления еще одной ACE (аналогично списку правил allow/deny).
pcre_options - позволяет устанавливать опции поиска, доступны следующие опции: PCRE_CASELESS, PCRE_MULTILINE, PCRE_DOTALL, PCRE_EXTENDED, PCRE_ANCHORED, PCRE_DOLLAR_ENDONLY, PCRE_EXTRA, PCRE_NOTBOL, PCRE_NOTEOL, PCRE_UNGREEDY, PCRE_NOTEMPTY, PCRE_UTF8, PCRE_NO_AUTO_CAPTURE, PCRE_NO_UTF8_CHECK, PCRE_AUTO_CALLOUT, PCRE_PARTIAL, PCRE_DFA_SHORTEST, PCRE_DFA_RESTART, PCRE_FIRSTLINE, PCRE_DUPNAMES, PCRE_NEWLINE_CR, PCRE_NEWLINE_LF, PCRE_NEWLINE_CRLF, PCRE_NEWLINE_ANY, PCRE_NEWLINE_ANYCRLF, PCRE_BSR_ANYCRLF, PCRE_BSR_UNICODE

- TYPE - тип фильтруемых данных. Может содержать одно или несколько (список через запятую) значений:
  - request - содержимое запроса клиента (например строка HTTP GET-запроса). (в настоящий момент изменение запроса не приводит к изменению адреса запрашиваемого хоста)
  - cliheader - содержимое заголовков запроса клиента, например заголовки HTTP
  - srvheader - содержимое заголовков ответа сервера, например заголовки HTTP
  - clidata - данные полученные от клиента, например данные POST-запроса
  - srvdata - данные полученные от сервера, например содержимое HTML-страницы
- FILTER_ACTION - действие при совпадении. Может принимать значение
  allow - разрешить данный запрос без просмотра дальнейших правил
  - deny - запретить данный запрос без просмотра дальнейших правил
  - dunno - продолжить анализ правил (полезно для pcre_rewrite)
- REGEXP - регулярное выражение в формате PCRE (perl). Используйте * если не требуется проерка регулярного выражения.
- REWRITE_EXPRESSION - строка замены. Может содержать макроподстановки (не тестировалось) $1, $2 и т.д. аналогично perl. $0 - полная найденная подстрока. В строке замены можно использовать сочетания \r, \n для вставки новых строк. Строка может быть пустой ("").
- ACE - Список контроля доступа (имя пользователя, IP источника, IP назначения, порт и т.д.), полностью аналогичный ACE в командах allow, deny, bandlimin и т.п. Регулярное выражение проверяется только при совпадении ACE с запросом. ВНИМАНИЕ: использование регулярных выражений не требует авторизации и не заменяет ее. Авторизацию необходимо конфигурировать отдельно.

#### Пример:

    plugin PCREPlugin.dll pcre_plugin
    pcre request deny "porn|sex" user1,user2,user3 192.168.0.0/16
    pcre srvheader deny "Content-type: application"
    pcre_rewrite clidata,srvdata dunno "porn|sex|pussy" "***" baduser
    pcre_extend deny * 192.168.0.1/16

#### Загрузить:

- Плагин включен в дистрибутив 3proxy 0.6
- Пример конфигурации (by Dennis Garber): NoPornLitest.cfg