----- Original Message -----
> [TS-2329] Add a restructured text version of the header rewrite's README
> 
> 
> Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
> Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/0f45c068
> Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/0f45c068
> Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/0f45c068
> 
> Branch: refs/heads/master
> Commit: 0f45c0684164c74ffe73e430e080ec62193dc001
> Parents: b5494fd
> Author: Miles Libbey <mlib...@apache.org>
> Authored: Fri Dec 13 13:31:41 2013 -0800
> Committer: Miles Libbey <mlib...@apache.org>
> Committed: Fri Dec 13 13:31:41 2013 -0800
> 
> ----------------------------------------------------------------------
>  doc/reference/plugins/header_rewrite.en.rst | 174 +++++++++++++++++++++++
>  1 file changed, 174 insertions(+)
> ----------------------------------------------------------------------
> 
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0f45c068/doc/reference/plugins/header_rewrite.en.rst
> ----------------------------------------------------------------------
> diff --git a/doc/reference/plugins/header_rewrite.en.rst
> b/doc/reference/plugins/header_rewrite.en.rst
> new file mode 100644
> index 0000000..2069d26
> --- /dev/null
> +++ b/doc/reference/plugins/header_rewrite.en.rst
> @@ -0,0 +1,174 @@
> +.. _header_rewrite-plugin
> +
> +Header Rewrite Plugin
> +*********************
> +
> +.. Licensed to the Apache Software Foundation (ASF) under one
> +   or more contributor license agreements.  See the NOTICE file
> +  distributed with this work for additional information
> +  regarding copyright ownership.  The ASF licenses this file
> +  to you under the Apache License, Version 2.0 (the
> +  "License"); you may not use this file except in compliance
> +  with the License.  You may obtain a copy of the License at
> +
> +   http://www.apache.org/licenses/LICENSE-2.0
> +
> +  Unless required by applicable law or agreed to in writing,
> +  software distributed under the License is distributed on an
> +  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> +  KIND, either express or implied.  See the License for the
> +  specific language governing permissions and limitations
> +  under the License.
> +
> +
> +This is a plugin for Apache Traffic Server that allows you to
> +modify various headers based on defined rules (operations) on a request or
> +response. Currently, only one operation is supported.
> +
> +Using the plugin
> +----------------
> +
> +This plugin can be used as both a global plugin, enabled in plugin.config::
> +
> +  header_rewrite.so config_file_1.conf config_file_2.conf ...
> +
> +These are global rules, which would apply to all requests. Another option is
> +to use per remap rules in remap.config::
> +
> +  map http://a http://b @plugin=header_rewrite.so @pparam=rules1.conf ...
> +
> +In the second example, hooks which are not to be executed during the remap
> +phase (the default) causes a transaction hook to be instantiated and used
> +at a later time. This allows you to setup e.g. a rule that gets executed
> +during the origin response header parsing, using READ_RESPONSE_HDR_HOOK.
> +
> +Operators
> +---------
> +
> +The following operators are available::
> +
> +  rm-header header-name                 [flags]
> +  add-header header <value>             [flags]
> +  set-status <status-code>              [flags]
> +  set-status-reason <value>             [flags]
> +  set-config config <value>             [flags]
> +  no-op                                 [flags]
> +  counter counter-name                  [flags]
> +
> +The following operator(s) currently only works when instantiating the
> +plugin as a remap plugin::
> +
> +  set-destination [qual] value
> +
> +Where qual is one of the support URL qualifiers::
> +
> +  HOST
> +  PORT
> +  PATH
> +  QUERY
> +
> +For example (as a remap rule)::
> +
> +  cond %{HEADER:X-Mobile} = "foo"
> +  set-destination HOST foo.mobile.bar.com [L]
> +
> +Operator flags
> +--------------
> +::
> +
> +  [L]   Last rule, do not continue
> +
> +Variable expansion
> +------------------
> +Currently only limited variable expansion is supported in add-header.
> Supported
> +substitutions include::
> +
> +  %<proto>      Protocol
> +  %<port>       Port
> +  %<chi>        Client IP
> +  %<cqhl>       Client request length
> +  %<cqhm>       Client HTTP method
> +  %<cquup>      Client unmapped URI
> +
> +Conditions
> +----------
> +The conditions are used as qualifiers: The operators specified will
> +only be evaluated if the condition(s) are met::
> +
> +  cond %{STATUS} operand                        [flags]
> +  cond %{RANDOM:nn} operand                     [flags]
> +  cond %{ACCESS:file}                           [flags]
> +  cond %{TRUE}                                  [flags]
> +  cond %{FALSE}                                 [flags]
> +  cond %{HEADER:header-name} operand            [flags]
> +  cond %{COOKIE:cookie-name} operand            [flags]
> +  cond %{CLIENT-HEADER:header-name} operand     [flags]
> +  cond %{PROTOCOL} operand                      [flags]
> +  cond %{PORT} operand                          [flags]
> +  cond %{HOST} operand                          [flags]
> +  cond %{TOHOST} operand                        [false]
> +  cond %{FROMHOST} operand                      [false]
> +  cond %{PATH} operand                          [false]
> +  cond %{PARAMS} operand                        [false]
> +  cond %{QUERY} operand                         [false]
> +
> +The difference between HEADER and CLIENT-HEADER is that HEADER adapts to the
> +hook it's running in, whereas CLIENT-HEADER always applies to the client
> +request header. The %{TRUE} condition is also the default condition if no
> +other conditions are specified.
> +
> +These conditions have to be first in a ruleset, and you can only have one in
> +each rule. This implies that a new hook condition starts a new rule as
> well.::
> +
> +  cond %{READ_RESPONSE_HDR_HOOK}   (this is the default hook)
> +  cond %{READ_REQUEST_HDR_HOOK}
> +  cond %{SEND_REQUEST_HDR_HOOK}
> +  cond %{SEND_RESPONSE_HDR_HOOK}
> +
> +For remap.config plugin instanations, the default hook is named
> +REMAP_PSEUDO_HOOK. This can be useful if you are mixing other hooks in a

we should link to remap.config and the HOOK here.

> +configuration, but being the default it is also optional.
> +
> +---------------
> +Condition flags
> +---------------
> +::
> +
> +  [NC]  Not case sensitive condition (when applicable)
> +  [AND] AND with next condition (default)
> +  [OR]  OR with next condition
> +  [NOT] Invert this condition
> +
> +Operands to conditions
> +----------------------
> +::
> +
> +  /string/  # regular expression
> +  <string   # lexically lower
> +  >string   # lexically greater
> +  =string   # lexically equal
> +
> +The absence of a "matcher" means value exists).
> +
> +Values
> +------
> +Setting e.g. a header with a value can take the following formats:
> +
> +- Any of the cond definitions, that extracts a value from the request
> +- $N 0 <= N <= 9, as grouped in a regular expression
> +- string (which can contain the above)
> +- null
> +
> +Examples
> +--------
> +::
> +
> +  cond %{HEADER:X-Y-Foobar}
> +  cond %{COOKIE:X-DC}  =DC1
> +  add-header X-Y-Fiefum %{HEADER:X-Y-Foobar}
> +  add-header X-Forwarded-For %<chi>
> +  rm-header X-Y-Foobar
> +  rm-header Set-Cookie
> +  counter plugin.header_rewrite.x-y-foobar-dc1
> +  cond %{HEADER:X-Y-Foobar} "Some string" [AND,NC]
> +
> 
> 

-- 
Igor Galić

Tel: +43 (0) 664 886 22 883
Mail: i.ga...@brainsware.org
URL: http://brainsware.org/
GPG: 8716 7A9F 989B ABD5 100F  4008 F266 55D6 2998 1641

Reply via email to