Apache Версия 2.0 Сервера HTTP
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
может использоваться как окружающая среда опытного образца для фильтров.
# 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>
# 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>
#!/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);
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
intype=
определен, фильтр будет инвалидами для документов относительно других типов.
outtype=
imt
PreservesContentLength
PreservesContentLength
ключевое слово определяет, что фильтр сохраняет довольную длину. Это не неплатеж, поскольку большинство фильтров изменяет довольную длину. Когда фильтр не изменяет длину, это ключевое слово должно быть определено.
ftype=
filtertype
disableenv=
env
enableenv=
env
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
повреждает эту особенность.
ExtFilterOptions LogStderr DebugLevel=0
сообщения, написанные стандартной ошибке фильтра будут сохранены в Apacheской ошибочной регистрации. Никакие сообщения отладки не будут произведены
mod_ext_filter
.