mod_ext_filter.xml.ja revision b244bbf442a0aea3dc397b4d0d751f4716c5891d
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<?xml version="1.0" encoding="UTF-8" ?>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<!DOCTYPE modulesynopsis SYSTEM "/style/modulesynopsis.dtd">
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<?xml-stylesheet type="text/xsl" href="/style/manual.ja.xsl"?>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<!-- English Revision: 420990:1561569 (outdated) -->
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<!--
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose Licensed to the Apache Software Foundation (ASF) under one or more
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose contributor license agreements. See the NOTICE file distributed with
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose this work for additional information regarding copyright ownership.
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose The ASF licenses this file to You under the Apache License, Version 2.0
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose (the "License"); you may not use this file except in compliance with
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose the License. You may obtain a copy of the License at
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose http://www.apache.org/licenses/LICENSE-2.0
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose Unless required by applicable law or agreed to in writing, software
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose distributed under the License is distributed on an "AS IS" BASIS,
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose See the License for the specific language governing permissions and
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose limitations under the License.
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose-->
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<modulesynopsis metafile="mod_ext_filter.xml.meta">
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<name>mod_ext_filter</name>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<description>レスポンスのボディをクライアントに送る前に外部プログラムで処理する</description>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<status>Extension</status>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<sourcefile>mod_ext_filter.c</sourcefile>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<identifier>ext_filter_module</identifier>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<summary>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <p><module>mod_ext_filter</module> では <a href="/filter.html">フィルタ</a>
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose の慣れ親しんだ単純なプログラミングモデルが提供されます。このモジュールを
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose 使えば、標準入力から読み込んで、標準出力に書き出すプログラム
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose (すなわち Unix 形式のフィルタコマンド) を Apache のフィルタにすることが
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose できます。このフィルタの機構は、Apache API 向けに書かれた Apache
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose サーバプロセス内で実行される専用のフィルタよりもずっと遅いですが、
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 以下のような利点もあります。</p>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose <ul>
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose <li>ずっとシンプルなプログラミングモデル</li>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <li>プログラムが標準入力から読んで標準出力に書くものである限り、
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose どんなプログラム言語やスクリプト言語でも使うことができる</li>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <li>既存のプログラムを変更することなく Apache のフィルタとして
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 使うことができる</li>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </ul>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <p>性能の問題により実運用に適さないとしても、フィルタのプロトタイプ用の
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 環境としては <module>mod_ext_filter</module> は使えます。</p>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose</summary>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<seealso><a href="/filter.html">フィルタ</a></seealso>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<section id="examples"><title>例</title>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <section><title>他のタイプのレスポンスから HTML を生成する</title>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <example>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # mod_ext_filter directive to define a filter<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # to HTML-ize text/c files using the external<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # program /usr/bin/enscript, with the type of<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # the result set to text/html<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose ExtFilterDefine c-to-html mode=output \<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose intype=text/c outtype=text/html \<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose cmd="/usr/bin/enscript --color -W html -Ec -o - -"<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose &lt;Directory "/export/home/trawick/apacheinst/htdocs/c"&gt;<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # core directive to cause the new filter to<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # be run on output<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose SetOutputFilter c-to-html<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # mod_mime directive to set the type of .c<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # files to text/c<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose AddType text/c .c<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # mod_ext_filter directive to set the debug<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # level just high enough to see a log message<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # per request showing the configuration in force<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose ExtFilterOptions DebugLevel=1<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose &lt;/Directory&gt;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </example>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </section>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <section><title>コンテントエンコーディングのフィルタを実装する</title>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <p>注: この gzip の例はデモ用です。実用的な実装は
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <module>mod_deflate</module> を参照してください。</p>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <example>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # mod_ext_filter directive to define the external filter<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose ExtFilterDefine gzip mode=output cmd=/bin/gzip<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose &lt;Location /gzipped&gt;<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # core directive to cause the gzip filter to be<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # run on output<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose SetOutputFilter gzip<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # mod_header directive to add<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # "Content-Encoding: gzip" header field<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose Header set Content-Encoding gzip<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose &lt;/Location&gt;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </example>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </section>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <section><title>サーバを遅くする</title>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <example>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # mod_ext_filter directive to define a filter<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # which runs everything through cat; cat doesn't<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # modify anything; it just introduces extra pathlength<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # and consumes more resources<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose ExtFilterDefine slowdown mode=output cmd=/bin/cat \<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose preservescontentlength<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose &lt;Location /&gt;<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # core directive to cause the slowdown filter to<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # be run several times on output<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose #<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose SetOutputFilter slowdown;slowdown;slowdown<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose &lt;/Location&gt;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </example>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </section>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <section><title>sed を使って応答中のテキストを置換する</title>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <example>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # mod_ext_filter directive to define a filter which<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # replaces text in the response<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose #<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose ExtFilterDefine fixtext mode=output intype=text/html \<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose cmd="/bin/sed s/verdana/arial/g"<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose &lt;Location /&gt;<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # core directive to cause the fixtext filter to<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # be run on output<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose SetOutputFilter fixtext<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose &lt;/Location&gt;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </example>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </section>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <section><title>別のフィルタのトレース</title>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <example>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # Trace the data read and written by mod_deflate<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # for a particular client (IP 192.168.1.31)<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # experiencing compression problems.<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # This filter will trace what goes into mod_deflate.<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose ExtFilterDefine tracebefore \<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose cmd="/bin/tracefilter.pl /tmp/tracebefore" \<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose EnableEnv=trace_this_client<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # This filter will trace what goes after mod_deflate.<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # Note that without the ftype parameter, the default<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # filter type of AP_FTYPE_RESOURCE would cause the<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # filter to be placed *before* mod_deflate in the filter<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # chain. Giving it a numeric value slightly higher than<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # AP_FTYPE_CONTENT_SET will ensure that it is placed<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose # after mod_deflate.<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose ExtFilterDefine traceafter \<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose cmd="/bin/tracefilter.pl /tmp/traceafter" \<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose EnableEnv=trace_this_client ftype=21<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose &lt;Directory /usr/local/docs&gt;<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose SetEnvIf Remote_Addr 192.168.1.31 trace_this_client<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose SetOutputFilter tracebefore;deflate;traceafter<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose &lt;/Directory&gt;
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </example>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <example><title>データをトレースするフィルタ:</title>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose #!/usr/local/bin/perl -w<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose use strict;<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose open(SAVE, "&gt;$ARGV[0]")<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose or die "can't open $ARGV[0]: $?";<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose while (&lt;STDIN&gt;) {<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose print SAVE $_;<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose print $_;<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </indent>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose }<br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <br />
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose close(SAVE);
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </example>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </section>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose</section> <!-- /Examples -->
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<directivesynopsis>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<name>ExtFilterDefine</name>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<description>外部フィルタを定義</description>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<syntax>ExtFilterDefine <var>filtername</var> <var>parameters</var></syntax>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<contextlist><context>server config</context></contextlist>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<usage>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <p><directive>ExtFilterDefine</directive> は、実行するプログラムや
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 引数など、外部フィルタの特性を定義します。</p>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <p><var>filtername</var> は定義するフィルタの名前を指定します。
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose この名前は後で <directive module="core">SetOutputFilter</directive>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose ディレクティブで指定できます。名前は登録されるすべてのフィルタで
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 一意でなくてはなりません。<em>現時点では、フィルタの登録 API からは
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose エラーは報告されません。ですから、重複する名前を使ってしまったときでも
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose ユーザにはそのことは報告されません。</em></p>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <p>続くパラメータの順番は関係無く、それらは実行する外部コマンドと、
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 他の特性を定義します。<code>cmd=</code> だけが必須のパラメータです。
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 指定可能なパラメータは:</p>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <dl>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <dt><code>cmd=<var>cmdline</var></code></dt>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <dd><code>cmd=</code> キーワードは実行する外部コマンドを指定します。
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose プログラム名の後に引数がある場合は、コマンド行は引用符で囲む
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 必要があります (<em>例えば</em>、<code>cmd="<var>/bin/mypgm</var>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <var>arg1</var> <var>arg2</var>"</code> のように)。プログラムは
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose シェル経由でなく、直接実行されますので、通常のシェル用の
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose エスケープは必要ありません。プログラムの引数は空白で区切られます。
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose プログラムの引数の一部となる必要のある空白はバックスペースでエスケープ
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose できます。引数の一部になるバックスラッシュはバックスラッシュで
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose エスケープする必要があります。標準の CGI 環境変数に加えて、
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 環境変数 DOCUMENT_URI, DOCUMENT_PATH_INFO, and
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose QUERY_STRING_UNESCAPED がプログラムのために設定されます。</dd>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <dt><code>mode=<var>mode</var></code></dt>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <dd>応答を処理するフィルタには <code>mode=output</code> (デフォルト)
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose を使います。リクエストを処理するフィルタには <code>mode=input</code>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose を使います。<code>mode=input</code> は Apache 2.1 以降で利用可能です。</dd>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <dt><code>intype=<var>imt</var></code></dt>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <dd>このパラメータはフィルタされるべきドキュメントの
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose インターネットメディアタイプ (<em>すなわち</em>、MIME タイプ) を
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 指定します。デフォルトではすべてのドキュメントがフィルタされます。
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <code>intype=</code> が指定されていれば、フィルタは指定されていない
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose ドキュメントには適用されなくなります。</dd>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <dt><code>outtype=<var>imt</var></code></dt>
4537e95f6741ae05ec620e5b46ca1d4a3a1ceae5Pavel Březina
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <dd>このパラメータはフィルタされたドキュメントの
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose インターネットメディアタイプ (<em>すなわち</em>、MIME タイプ) を
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 指定します。フィルタ動作にともなってインターネットメディアタイプが
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 変わる場合に有用です。デフォルトではインターネットメディアタイプは
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 変更されません。</dd>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <dt><code>PreservesContentLength</code></dt>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <dd><code>PreservesContentLength</code> キーワードはフィルタが
4537e95f6741ae05ec620e5b46ca1d4a3a1ceae5Pavel Březina content length <transnote>コンテントの長さ</transnote>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose を変更しないということを指定します。ほとんどのフィルタは
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose content length を変更するため、これはデフォルトではありません。
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose フィルタが長さを変えないときは、このキーワードを指定すると
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose よいでしょう。</dd>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <dt><code>ftype=<var>filtertype</var></code></dt>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <dd>このパラメータはフィルタが登録されるべきフィルタタイプの
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 数値を指定します。ほとんどの場合は、デフォルトの AP_FTYPE_RESOURCE で
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 十分です。フィルタがフィルタチェーンの別の場所で動作する必要がある
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 場合は、このパラメータを指定する必要があります。指定可能な値は
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose util_filter.h の AP_FTYPE_foo 定義を参照してください。</dd>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <dt><code>disableenv=<var>env</var></code></dt>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <dd>設定されていた場合にフィルタを無効にするための環境変数を
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 指定します。</dd>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <dt><code>enableenv=<var>env</var></code></dt>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <dd>このパラメータはフィルタが有効になるために設定されていなければ
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose ならない環境変数を指定します。</dd>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </dl>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose</usage>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose</directivesynopsis>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<directivesynopsis>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<name>ExtFilterOptions</name>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<description><module>mod_ext_filter</module> のオプションを設定</description>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<syntax>ExtFilterOptions <var>option</var> [<var>option</var>] ...</syntax>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<default>ExtFilterOptions DebugLevel=0 NoLogStderr</default>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<contextlist><context>directory</context></contextlist>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose<usage>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <p><directive>ExtFilterOptions</directive> ディレクティブは
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <module>mod_ext_filter</module> の特別な処理用のオプションを
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 指定します。<var>Option</var> には以下のどれかを指定します。</p>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <dl>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <dt><code>DebugLevel=<var>n</var></code></dt>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <dd>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <code>DebugLevel</code> で <module>mod_ext_filter</module>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose の生成するデバッグメッセージのレベルを設定できます。
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose デフォルトでは、デバッグメッセージは生成されません。
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose これは <code>DebugLevel=0</code> と設定するのと同じです。
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 数字が大きくなればなるほど、より多くのデバッグメッセージが
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 生成され、サーバの性能は落ちます。数値の実際の意味は
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <code>mod_ext_filter.c</code> の先頭近くの DBGLVL_ 定数の
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 定義で説明されています。
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <p>注: デバッグメッセージを Apache のエラーログに
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 保存するようにするためには、core のディレクティブ
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <directive module="core">LogLevel</directive>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose を使う必要があります。</p>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </dd>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <dt><code>LogStderr | NoLogStderr</code></dt>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <dd><code>LogStderr</code> キーワードは外部フィルタプログラムにより
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 標準エラー <transnote>stderr</transnote> に書かれたメッセージを
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose Apache のエラーログに保存するようにします。<code>NoLogStderr</code> は
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose 逆に保存しないようにします。</dd>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </dl>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <example><title>例</title>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose ExtFilterOptions LogStderr DebugLevel=0
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose </example>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose <p>この例では、フィルタの標準出力に書かれたメッセージは
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose Apache のエラーログに保存されます。<module>mod_ext_filter</module> からは
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose デバッグメッセージは生成されません。</p>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose</usage>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose</directivesynopsis>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose</modulesynopsis>
d064fef06dcbcb5f6c1be03e286b1a3433d6dfd7Sumit Bose