This is an automated email from the ASF dual-hosted git repository. rrm pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push: new 37ae0d3 Remove header_rewrite conditions deprecated in previous versions 37ae0d3 is described below commit 37ae0d34b2ad6a44e42c3fe88925f0f98682ba0c Author: Randall Meyer <r...@apache.org> AuthorDate: Mon Jul 15 17:09:59 2019 -0700 Remove header_rewrite conditions deprecated in previous versions --- doc/admin-guide/plugins/header_rewrite.en.rst | 50 +----------- plugins/header_rewrite/conditions.cc | 108 -------------------------- plugins/header_rewrite/conditions.h | 56 ------------- plugins/header_rewrite/factory.cc | 6 -- plugins/header_rewrite/header_rewrite_test.cc | 12 +-- 5 files changed, 7 insertions(+), 225 deletions(-) diff --git a/doc/admin-guide/plugins/header_rewrite.en.rst b/doc/admin-guide/plugins/header_rewrite.en.rst index 05267b5..e5951e7 100644 --- a/doc/admin-guide/plugins/header_rewrite.en.rst +++ b/doc/admin-guide/plugins/header_rewrite.en.rst @@ -323,7 +323,7 @@ This condition provides access to information about the inbound (client, user ag The data that can be checked is :: %{INBOUND:LOCAL-ADDR} The local (ATS) address for the connection. Equivalent to %{IP:INBOUND}. - %{INBOUND:LOCAL-PORT} The local (ATS) port for the connection. Equivalent to %{INCOMING-PORT}. + %{INBOUND:LOCAL-PORT} The local (ATS) port for the connection. %{INBOUND:REMOTE-ADDR} The client address for the connection. Equivalent to %{IP:CLIENT}. %{INBOUND:REMOTE-PORT} The client port for the connection. %{INBOUND:TLS} The TLS protocol if the connection is over TLS, otherwise the empty string. @@ -351,17 +351,6 @@ which is true when the connection is not TLS. The arguments ``H2``, ``IPV4``, an same way. -INCOMING-PORT -~~~~~~~~~~~~~ -:: - - cond %{INCOMING-PORT} <operand> - -TCP port, as a decimal integer, on which the incoming client connection was -made. - -This condition is *deprecated* as of ATS v8.0.x, please use ``%{INBOUND:LOCAL-PORT}`` instead. - IP ~~ :: @@ -387,8 +376,6 @@ actually as a value to an operator, e.g. :: set-header X-Server-IP %{IP:SERVER} set-header X-Outbound-IP %{IP:OUTBOUND} -Finally, this new condition replaces the old %{CLIENT-IP} condition, which is -now properly deprecated. It will be removed as of ATS v8.0.0. INTERNAL-TRANSACTION ~~~~~~~~~~~~~~~~~~~~ @@ -430,37 +417,6 @@ values, such as year, month etc. %{NOW:WEEKDAY} Current weekday (0-6, 0 == Sunday) %{NOW:YEARDAY} Current day of the year (0-365, 0 == Jan 1st) -PATH -~~~~ -:: - - cond %{PATH} <operand> - -The path component of the transaction. This does NOT include the leading ``/`` that -immediately follows the hostname and terminates prior to the ``?`` signifying -the beginning of query parameters (or the end of the URL, whichever occurs -first). - -Refer to `Requests vs. Responses`_ for more information on determining the -context in which the transaction's URL is evaluated. - -This condition is *deprecated* as of ATS v7.1.x, please use e.g. %{URL:PATH} -or %{CLIENT-URL:PATH} instead. - - -QUERY -~~~~~ -:: - - cond %{QUERY} <operand> - -The query parameters, if any, of the transaction. Refer to `Requests vs. -Responses`_ for more information on determining the context in which the -transaction's URL is evaluated. - -This condition is *deprecated* as of ATS v7.1.x, please use e.g. %{URL:QUERY} -or %{CLIENT-URL:QUERY} instead. - RANDOM ~~~~~~ @@ -998,10 +954,6 @@ evaluated and will adjust using request or response entities automatically: - `METHOD`_ -- `PATH`_ - -- `QUERY`_ - - `URL`_ Affected Operators diff --git a/plugins/header_rewrite/conditions.cc b/plugins/header_rewrite/conditions.cc index 92cac5d..380d270 100644 --- a/plugins/header_rewrite/conditions.cc +++ b/plugins/header_rewrite/conditions.cc @@ -248,83 +248,6 @@ ConditionHeader::eval(const Resources &res) return static_cast<const MatcherType *>(_matcher)->test(s); } -// ConditionPath -void -ConditionPath::initialize(Parser &p) -{ - Condition::initialize(p); - MatcherType *match = new MatcherType(_cond_op); - - match->set(p.get_arg()); - _matcher = match; -} - -void -ConditionPath::append_value(std::string &s, const Resources &res) -{ - TSMBuffer bufp; - TSMLoc url_loc; - - if (TSHttpTxnPristineUrlGet(res.txnp, &bufp, &url_loc) == TS_SUCCESS) { - int path_length; - const char *path = TSUrlPathGet(bufp, url_loc, &path_length); - - if (path && path_length) { - s.append(path, path_length); - } - - TSHandleMLocRelease(bufp, TS_NULL_MLOC, url_loc); - } -} - -bool -ConditionPath::eval(const Resources &res) -{ - std::string s; - - append_value(s, res); - TSDebug(PLUGIN_NAME, "Evaluating PATH()"); - - return static_cast<MatcherType *>(_matcher)->test(s); -} - -// ConditionQuery -void -ConditionQuery::initialize(Parser &p) -{ - Condition::initialize(p); - MatcherType *match = new MatcherType(_cond_op); - - match->set(p.get_arg()); - _matcher = match; -} - -void -ConditionQuery::append_value(std::string &s, const Resources &res) -{ - int query_len = 0; - const char *query = TSUrlHttpQueryGet(res._rri->requestBufp, res._rri->requestUrl, &query_len); - - TSDebug(PLUGIN_NAME, "Appending QUERY to evaluation value: %.*s", query_len, query); - s.append(query, query_len); -} - -bool -ConditionQuery::eval(const Resources &res) -{ - if (nullptr != res._rri) { - std::string s; - - append_value(s, res); - TSDebug(PLUGIN_NAME, "Evaluating QUERY()"); - - return static_cast<const MatcherType *>(_matcher)->test(s); - } - - TSDebug(PLUGIN_NAME, "\tQUERY requires remap initialization! Evaluating to false!"); - return false; -} - // ConditionUrl: request or response header. TODO: This is not finished, at all!!! void ConditionUrl::initialize(Parser &p) @@ -652,37 +575,6 @@ ConditionIp::append_value(std::string &s, const Resources &res) } } -void -ConditionIncomingPort::initialize(Parser &p) -{ - Condition::initialize(p); - - MatcherType *match = new MatcherType(_cond_op); - - match->set(static_cast<uint16_t>(strtoul(p.get_arg().c_str(), nullptr, 10))); - _matcher = match; -} - -bool -ConditionIncomingPort::eval(const Resources &res) -{ - uint16_t port = getPort(TSHttpTxnIncomingAddrGet(res.txnp)); - - TSDebug(PLUGIN_NAME, "Evaluating INCOMING-PORT()"); - return static_cast<MatcherType *>(_matcher)->test(port); -} - -void -ConditionIncomingPort::append_value(std::string &s, const Resources &res) -{ - std::ostringstream oss; - uint16_t port = getPort(TSHttpTxnIncomingAddrGet(res.txnp)); - - oss << port; - s += oss.str(); - TSDebug(PLUGIN_NAME, "Appending %d to evaluation value -> %s", port, s.c_str()); -} - // ConditionTransactCount void ConditionTransactCount::initialize(Parser &p) diff --git a/plugins/header_rewrite/conditions.h b/plugins/header_rewrite/conditions.h index 77ef595..927c823 100644 --- a/plugins/header_rewrite/conditions.h +++ b/plugins/header_rewrite/conditions.h @@ -266,44 +266,6 @@ private: bool _client; }; -// path -class ConditionPath : public Condition -{ - typedef Matchers<std::string> MatcherType; - -public: - explicit ConditionPath() { TSDebug(PLUGIN_NAME_DBG, "Calling CTOR for ConditionPath"); } - - // noncopyable - ConditionPath(const ConditionPath &) = delete; - void operator=(const ConditionPath &) = delete; - - void initialize(Parser &p) override; - void append_value(std::string &s, const Resources &res) override; - -protected: - bool eval(const Resources &res) override; -}; - -// query -class ConditionQuery : public Condition -{ - typedef Matchers<std::string> MatcherType; - -public: - explicit ConditionQuery() { TSDebug(PLUGIN_NAME_DBG, "Calling CTOR for ConditionQuery"); } - - // noncopyable - ConditionQuery(const ConditionQuery &) = delete; - void operator=(const ConditionQuery &) = delete; - - void initialize(Parser &p) override; - void append_value(std::string &s, const Resources &res) override; - -protected: - bool eval(const Resources &res) override; -}; - // url class ConditionUrl : public Condition { @@ -405,24 +367,6 @@ private: IpQualifiers _ip_qual = IP_QUAL_CLIENT; }; -class ConditionIncomingPort : public Condition -{ - typedef Matchers<uint16_t> MatcherType; - -public: - ConditionIncomingPort() { TSDebug(PLUGIN_NAME_DBG, "Calling CTOR for ConditionIncomingPort"); } - - // noncopyable - ConditionIncomingPort(const ConditionIncomingPort &) = delete; - void operator=(const ConditionIncomingPort &) = delete; - - void initialize(Parser &p) override; - void append_value(std::string &s, const Resources &res) override; - -protected: - bool eval(const Resources &res) override; -}; - // Transact Count class ConditionTransactCount : public Condition { diff --git a/plugins/header_rewrite/factory.cc b/plugins/header_rewrite/factory.cc index 028fc62..0d314e4 100644 --- a/plugins/header_rewrite/factory.cc +++ b/plugins/header_rewrite/factory.cc @@ -105,12 +105,8 @@ condition_factory(const std::string &cond) c = new ConditionCookie(); } else if (c_name == "HEADER") { // This condition adapts to the hook c = new ConditionHeader(); - } else if (c_name == "PATH") { - c = new ConditionPath(); } else if (c_name == "CLIENT-HEADER") { c = new ConditionHeader(true); - } else if (c_name == "QUERY") { - c = new ConditionQuery(); } else if (c_name == "CLIENT-URL") { // This condition adapts to the hook c = new ConditionUrl(ConditionUrl::CLIENT); } else if (c_name == "URL") { @@ -127,8 +123,6 @@ condition_factory(const std::string &cond) c = new ConditionInternalTxn(); } else if (c_name == "IP") { c = new ConditionIp(); - } else if (c_name == "INCOMING-PORT") { - c = new ConditionIncomingPort(); } else if (c_name == "METHOD") { c = new ConditionMethod(); } else if (c_name == "TXN-COUNT") { diff --git a/plugins/header_rewrite/header_rewrite_test.cc b/plugins/header_rewrite/header_rewrite_test.cc index 4237059..cd032f2 100644 --- a/plugins/header_rewrite/header_rewrite_test.cc +++ b/plugins/header_rewrite/header_rewrite_test.cc @@ -224,11 +224,11 @@ test_parsing() } { - ParserTest p(R"(cond %{PATH} /\/foo\/bar/ [OR])"); + ParserTest p(R"(cond %{CLIENT-URL:PATH} /\/foo\/bar/ [OR])"); CHECK_EQ(p.getTokens().size(), 4UL); CHECK_EQ(p.getTokens()[0], "cond"); - CHECK_EQ(p.getTokens()[1], "%{PATH}"); + CHECK_EQ(p.getTokens()[1], "%{CLIENT-URL:PATH}"); CHECK_EQ(p.getTokens()[2], R"(/\/foo\/bar/)"); CHECK_EQ(p.getTokens()[3], "[OR]"); @@ -422,10 +422,10 @@ test_processing() } { - ParserTest p(R"(cond %{PATH} /\.html|\.txt/)"); + ParserTest p(R"(cond %{CLIENT-URL:PATH} /\.html|\.txt/)"); CHECK_EQ(p.getTokens().size(), 3UL); - CHECK_EQ(p.get_op(), "PATH"); + CHECK_EQ(p.get_op(), "CLIENT-URL:PATH"); CHECK_EQ(p.get_arg(), R"(/\.html|\.txt/)"); CHECK_EQ(p.is_cond(), true); @@ -433,10 +433,10 @@ test_processing() } { - ParserTest p(R"(cond %{PATH} /\/foo\/bar/)"); + ParserTest p(R"(cond %{CLIENT-URL:PATH} /\/foo\/bar/)"); CHECK_EQ(p.getTokens().size(), 3UL); - CHECK_EQ(p.get_op(), "PATH"); + CHECK_EQ(p.get_op(), "CLIENT-URL:PATH"); CHECK_EQ(p.get_arg(), R"(/\/foo\/bar/)"); CHECK_EQ(p.is_cond(), true);