Repository: trafficserver Updated Branches: refs/heads/master 115eabd1e -> c61e7d2a3
Header-rewrite update Add support for URL and SCHEME set-destination qualifiers Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/c61e7d2a Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/c61e7d2a Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/c61e7d2a Branch: refs/heads/master Commit: c61e7d2a3c6796543dfabcd5b9ea47f193d2ca8f Parents: 115eabd Author: Thomas Jackson <[email protected]> Authored: Thu Feb 26 13:31:36 2015 -0800 Committer: Thomas Jackson <[email protected]> Committed: Thu Feb 26 13:33:42 2015 -0800 ---------------------------------------------------------------------- doc/reference/plugins/header_rewrite.en.rst | 6 ++++-- plugins/header_rewrite/operators.cc | 24 +++++++++++++++++++++++- 2 files changed, 27 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/c61e7d2a/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 index 6a7e47c..f17a1a1 100644 --- a/doc/reference/plugins/header_rewrite.en.rst +++ b/doc/reference/plugins/header_rewrite.en.rst @@ -10,9 +10,9 @@ Header Rewrite Plugin 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 @@ -76,6 +76,8 @@ Where qual is one of the support URL qualifiers:: PORT PATH QUERY + SCHEME + URL For example (as a remap rule):: http://git-wip-us.apache.org/repos/asf/trafficserver/blob/c61e7d2a/plugins/header_rewrite/operators.cc ---------------------------------------------------------------------- diff --git a/plugins/header_rewrite/operators.cc b/plugins/header_rewrite/operators.cc index 22aceee..c1484a8 100644 --- a/plugins/header_rewrite/operators.cc +++ b/plugins/header_rewrite/operators.cc @@ -234,9 +234,31 @@ OperatorSetDestination::exec(const Resources& res) const } break; case URL_QUAL_URL: - // TODO: Implement URL parser. + if (_value.empty()){ + TSDebug(PLUGIN_NAME, "Would set destination URL to an empty value, skipping"); + } else { + const char *start = _value.get_value().c_str(); + const char *end = _value.get_value().size() + start; + TSMLoc new_url_loc; + if (TSUrlCreate(bufp, &new_url_loc) == TS_SUCCESS && + TSUrlParse(bufp, new_url_loc, &start, end) == TS_PARSE_DONE && + TSHttpHdrUrlSet(bufp, res.hdr_loc, new_url_loc) == TS_SUCCESS){ + TSDebug(PLUGIN_NAME, "Set destination URL to %s", _value.get_value().c_str()); + } else { + TSDebug(PLUGIN_NAME, "Failed to set URL %s", _value.get_value().c_str()); + } + } + break; + case URL_QUAL_SCHEME: + if (_value.empty()){ + TSDebug(PLUGIN_NAME, "Would set destination SCHEME to an empty value, skipping"); + } else { + TSUrlSchemeSet(bufp, url_m_loc, _value.get_value().c_str(), _value.get_value().length()); + TSDebug(PLUGIN_NAME, "OperatorSetDestination::exec() invoked with SCHEME: %s", _value.get_value().c_str()); + } break; default: + TSDebug(PLUGIN_NAME, "Set destination %i has no handler", _url_qual); break; } } else {
