<-
Apache > HTTP Server > Documentation > Version 2.0 > Modules

Apache Модуль mod_ext_filter

Description: передать тело ответа через внешнюю программу перед поставкой клиенту
Status: расширение
Module Identifier: ext_filter_module
Source File: mod_ext_filter.c

резюме

mod_ext_filter представляет простую и знакомую программную модель для filters . с этим модулем, программа, которая читает от stdin и пишет stdout (то есть, команда фильтра Стиля Unix) может быть фильтром для Apacheа. Этот механизм фильтрования намного медленнее чем использование фильтра, который особенно написан для Apacheского программного интерфейса приложения и бежит в Apacheском процессе сервера, но это действительно имеет следующие выгоды:

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

директивы

темы

см. также

top

Examples

производство HTML от некоторого другого типа ответа

# mod_ext_filter directive to define a filter
# to HTML-ize text/c files using the external
# program /usr/bin/enscript, with the type of
# the result set to text/html
ExtFilterDefine c-to-html mode=output \
intype=text/c outtype=text/html \
cmd="/usr/bin/enscript --color -W html -Ec -o - -"

<Directory "/export/home/trawick/apacheinst/htdocs/c">
# core directive to cause the new filter to
# be run on output
SetOutputFilter c-to-html

# mod_mime directive to set the type of .c
# files to text/c
AddType text/c .c

# mod_ext_filter directive to set the debug
# level just high enough to see a log message
# per request showing the configuration in force
ExtFilterOptions DebugLevel=1
</Directory>

осуществление довольного фильтра зашифровывания

отметить: этот gzip пример - только в целях иллюстрации. Пожалуйста обратитесь к mod_deflate для практического выполнения.

# mod_ext_filter directive to define the external filter
ExtFilterDefine gzip mode=output cmd=/bin/gzip

<Location /gzipped>
# core directive to cause the gzip filter to be
# run on output
SetOutputFilter gzip

# mod_header directive to add
# "Content-Encoding: gzip" header field
Header set Content-Encoding gzip
</Location>

замедление сервера

# mod_ext_filter directive to define a filter
# which runs everything through cat; cat doesn't
# modify anything; it just introduces extra pathlength
# and consumes more resources
ExtFilterDefine slowdown mode=output cmd=/bin/cat \
preservescontentlength

<Location />
# core directive to cause the slowdown filter to
# be run several times on output
#
SetOutputFilter slowdown;slowdown;slowdown
</Location>

Используя sed, чтобы заменить текст в ответе

# mod_ext_filter directive to define a filter which
# replaces text in the response
#
ExtFilterDefine fixtext mode=output intype=text/html \
cmd="/bin/sed s/verdana/arial/g"

<Location />
# core directive to cause the fixtext filter to
# be run on output
SetOutputFilter fixtext
</Location>

рассмотрение другого фильтра

# Trace the data read and written by mod_deflate
# for a particular client (IP 192.168.1.31)
# experiencing compression problems.
# This filter will trace what goes into mod_deflate.
ExtFilterDefine tracebefore \
cmd="/bin/tracefilter.pl /tmp/tracebefore" \
EnableEnv=trace_this_client

# This filter will trace what goes after mod_deflate.
# Note that without the ftype parameter, the default
# filter type of AP_FTYPE_RESOURCE would cause the
# filter to be placed *before* mod_deflate in the filter
# chain. Giving it a numeric value slightly higher than
# AP_FTYPE_CONTENT_SET will ensure that it is placed
# after mod_deflate.
ExtFilterDefine traceafter \
cmd="/bin/tracefilter.pl /tmp/traceafter" \
EnableEnv=trace_this_client ftype=21

<Directory /usr/local/docs>
SetEnvIf Remote_Addr 192.168.1.31 trace_this_client
SetOutputFilter tracebefore;deflate;traceafter
</Directory>

Here is the filter which traces the data:

#!/usr/local/bin/perl -w
use strict;

open(SAVE, ">$ARGV[0]")
or die "can't open $ARGV[0]: $?";

while (<STDIN>) {
print SAVE $_;
print $_;
}

close(SAVE);

top

ExtFilterDefine Directive

Description: определить внешний фильтр
Syntax: ExtFilterDefine filtername parameters
Context: сервер config
Status: расширение
Module: mod_ext_filter

ExtFilterDefine директива определяет особенности внешнего фильтра, включая программу, чтобы управлять и ее аргументами.

filtername определяет название определяемого фильтра. Это название может тогда использоваться в директивах SetOutputFilter. Это должно быть уникальным среди всех зарегистрированных фильтров. в настоящее время, ни о какой ошибке не сообщает программный интерфейс приложения фильтра регистра, таким образом о проблеме с двойными названиями не сообщают пользователю.

последующие параметры могут появиться в любом заказе и определить внешнюю команду, чтобы бежать и определенный другие особенности. Единственный необходимый параметр cmd= . эти параметры:

cmd= cmdline
cmd= ключевое слово позволяет Вам определять внешнюю команду, чтобы бежать. Если есть аргументы после того, как название программы, линия команды должна быть окружена в кавычках ( например. , cmd=" /bin/mypgm arg1 arg2 " . нормальное цитирование снаряда не необходимо, так как программой управляют непосредственно, обходя снаряд. Аргументы программы разграничены бланком. Наклонная черта влево может использоваться, чтобы избежать бланков, которые должны быть частью аргумента программы. Любых наклонных черт влево, которые являются частью аргумента, нужно избежать с наклонной чертой влево самостоятельно. В дополнение к стандартным переменным окружающей среды CGI, DOCUMENT_URI, DOCUMENT_PATH_INFO, и QUERY_STRING_UNESCAPED будут также установлены для программы.
mode= mode
mode должен быть output пока (неплатеж). В будущем, mode=input будет использоваться, чтобы определить фильтр для тел запроса.
intype= imt
этот параметр определяет интернет-вид средств рекламы ( то есть. , тип MIME) документов, которые должны быть фильтрованы. По умолчанию, все документы фильтрованы. Если intype= определен, фильтр будет инвалидами для документов относительно других типов.
outtype= imt
этот параметр определяет интернет-вид средств рекламы ( то есть. , тип MIME) фильтрованных документов. Полезно, когда фильтр изменяет интернет-вид средств рекламы как часть операции фильтрования. По умолчанию, интернет-вид средств рекламы неизменен.
PreservesContentLength
PreservesContentLength ключевое слово определяет, что фильтр сохраняет довольную длину. Это не неплатеж, поскольку большинство фильтров изменяет довольную длину. Когда фильтр не изменяет длину, это ключевое слово должно быть определено.
ftype= filtertype
этот параметр определяет числовую ценность для типа фильтра, что фильтр должен быть зарегистрирован как. Ценность по умолчанию, AP_FTYPE_RESOURCE, является достаточной в большинстве случаев. Если фильтр должен работать в различном пункте в цепи фильтра чем фильтры ресурса, то этот параметр будет необходим. См. определения AP_FTYPE_foo util_filter.h за соответствующие ценности.
disableenv= env
этот параметр определяет название переменной окружающей среды, которая, если установлено, повредит фильтр.
enableenv= env
этот параметр определяет название переменной окружающей среды, которая должна быть установлена, или фильтр будет инвалидами.
top

ExtFilterOptions Directive

Description: формировать mod_ext_filter варианты
Syntax: ExtFilterOptions option [ option ] ...
Default: ExtFilterOptions DebugLevel=0 NoLogStderr
Context: справочник
Status: расширение
Module: mod_ext_filter

ExtFilterOptions директива определяет специальные варианты обработки для mod_ext_filter . выбор может быть один из

DebugLevel= n
DebugLevel ключевое слово позволяет Вам определять уровень сообщений отладки, произведенных mod_ext_filter . по умолчанию, никакие сообщения отладки не произведены. Это эквивалентно DebugLevel=0 . с более высокими числами, произведено больше сообщений отладки, и работа сервера будет ухудшена. Фактические значения числовых ценностей описаны с определениями констант DBGLVL_ около начала mod_ext_filter.c .

отметить: основная директива LogLevel должен использоваться, чтобы заставить сообщения отладки быть сохраненными в Apacheской ошибочной регистрации.

LogStderr | NoLogStderr
LogStderr ключевое слово определяет, что сообщения, написанные стандартной ошибке в соответствии с внешней программой фильтра будут спасены в Apacheской ошибочной регистрации. NoLogStderr повреждает эту особенность.

Example

ExtFilterOptions LogStderr DebugLevel=0

сообщения, написанные стандартной ошибке фильтра будут сохранены в Apacheской ошибочной регистрации. Никакие сообщения отладки не будут произведены mod_ext_filter .