You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by am...@apache.org on 2017/08/25 16:16:02 UTC
[trafficserver] branch master updated: Fix map_with_refer to work
and add tests for it.
This is an automated email from the ASF dual-hosted git repository.
amc 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 f6f41f2 Fix map_with_refer to work and add tests for it.
f6f41f2 is described below
commit f6f41f2b9898dbb921a2db70ede67a208e978cfd
Author: Alan M. Carroll <am...@apache.org>
AuthorDate: Fri Aug 25 06:57:05 2017 -0500
Fix map_with_refer to work and add tests for it.
---
proxy/http/HttpTransact.cc | 6 ++++
proxy/http/remap/RemapProcessor.cc | 3 +-
tests/gold_tests/remap/gold/remap-redirect.gold | 15 ++++++++++
tests/gold_tests/remap/gold/remap-referer-hit.gold | 14 +++++++++
.../gold_tests/remap/gold/remap-referer-miss.gold | 15 ++++++++++
tests/gold_tests/remap/remap_http.test.py | 33 ++++++++++++++++++++--
6 files changed, 82 insertions(+), 4 deletions(-)
diff --git a/proxy/http/HttpTransact.cc b/proxy/http/HttpTransact.cc
index ce415f9..67e9247 100644
--- a/proxy/http/HttpTransact.cc
+++ b/proxy/http/HttpTransact.cc
@@ -660,6 +660,12 @@ HttpTransact::StartRemapRequest(State *s)
obj_describe(s->hdr_info.client_request.m_http, true);
}
+ if (s->http_config_param->referer_filter_enabled) {
+ s->filter_mask = URL_REMAP_FILTER_REFERER;
+ if (s->http_config_param->referer_format_redirect)
+ s->filter_mask |= URL_REMAP_FILTER_REDIRECT_FMT;
+ }
+
DebugTxn("http_trans", "END HttpTransact::StartRemapRequest");
TRANSACT_RETURN(SM_ACTION_API_PRE_REMAP, HttpTransact::PerformRemap);
}
diff --git a/proxy/http/remap/RemapProcessor.cc b/proxy/http/remap/RemapProcessor.cc
index ff622f0..767df83 100644
--- a/proxy/http/remap/RemapProcessor.cc
+++ b/proxy/http/remap/RemapProcessor.cc
@@ -227,7 +227,8 @@ RemapProcessor::finish_remap(HttpTransact::State *s)
if (*redirect_url == nullptr) {
*redirect_url = ats_strdup(map->filter_redirect_url ? map->filter_redirect_url : rewrite_table->http_default_redirect_url);
}
-
+ if (HTTP_STATUS_NONE == s->http_return_code)
+ s->http_return_code = HTTP_STATUS_MOVED_TEMPORARILY;
return false;
}
}
diff --git a/tests/gold_tests/remap/gold/remap-redirect.gold b/tests/gold_tests/remap/gold/remap-redirect.gold
new file mode 100644
index 0000000..51fdfc4
--- /dev/null
+++ b/tests/gold_tests/remap/gold/remap-redirect.gold
@@ -0,0 +1,15 @@
+``
+> GET http://test3.com``
+> Host: test3.com``
+> User-Agent: curl/``
+> Accept: */*
+``
+< HTTP/1.1 301 Redirect
+< Date: ``
+< Proxy-Connection: ``
+< Server: ATS/``
+< Cache-Control: ``
+< Location: http://httpbin.org/
+``
+< Content-Length: ``
+``
diff --git a/tests/gold_tests/remap/gold/remap-referer-hit.gold b/tests/gold_tests/remap/gold/remap-referer-hit.gold
new file mode 100644
index 0000000..1263973
--- /dev/null
+++ b/tests/gold_tests/remap/gold/remap-referer-hit.gold
@@ -0,0 +1,14 @@
+``
+> GET http://test4.com``
+> Host: test4.com``
+> User-Agent: curl/``
+> Accept: */*
+``
+< HTTP/1.1 200 OK
+< Date: ``
+< Age: ``
+< Transfer-Encoding: chunked
+< Proxy-Connection: keep-alive
+< Server: ATS/``
+<
+``
diff --git a/tests/gold_tests/remap/gold/remap-referer-miss.gold b/tests/gold_tests/remap/gold/remap-referer-miss.gold
new file mode 100644
index 0000000..cef630e
--- /dev/null
+++ b/tests/gold_tests/remap/gold/remap-referer-miss.gold
@@ -0,0 +1,15 @@
+``
+> GET http://test4.com``
+> Host: test4.com``
+> User-Agent: curl/``
+> Accept: */*
+``
+< HTTP/1.1 302 Redirect
+< Date: ``
+< Proxy-Connection: ``
+< Server: ATS/``
+< Cache-Control: ``
+< Location: http://httpbin.org
+``
+< Content-Length: ``
+``
diff --git a/tests/gold_tests/remap/remap_http.test.py b/tests/gold_tests/remap/remap_http.test.py
index 9221e26..1f840df 100644
--- a/tests/gold_tests/remap/remap_http.test.py
+++ b/tests/gold_tests/remap/remap_http.test.py
@@ -39,6 +39,7 @@ server.addResponse("sessionfile.log", request_header, response_header)
ts.Disk.records_config.update({
'proxy.config.diags.debug.enabled': 1,
'proxy.config.diags.debug.tags': 'url.*',
+ 'proxy.config.http.referer_filter': 1,
})
ts.Disk.remap_config.AddLine(
@@ -47,6 +48,12 @@ ts.Disk.remap_config.AddLine(
ts.Disk.remap_config.AddLine(
'map http://www.example.com:8080 http://127.0.0.1:{0}'.format(server.Variables.Port)
)
+ts.Disk.remap_config.AddLine(
+ 'redirect http://test3.com http://httpbin.org'.format(server.Variables.Port)
+)
+ts.Disk.remap_config.AddLine(
+ 'map_with_referer http://test4.com http://127.0.0.1:{0} http://httpbin.org (.*[.])?persia[.]com'.format(server.Variables.Port)
+)
# call localhost straight
tr = Test.AddTestRun()
@@ -86,9 +93,29 @@ tr.Processes.Default.Command = 'curl --proxy 127.0.0.1:{0} "http://www.test.com
tr.Processes.Default.ReturnCode = 0
tr.Processes.Default.Streams.stderr = "gold/remap-404.gold"
-# bad port
+# redirect result
tr = Test.AddTestRun()
-tr.Processes.Default.Command = 'curl --proxy 127.0.0.1:{0} "http://www.example.com:1234/" -H "Proxy-Connection: keep-alive" --verbose'.format(
+tr.Processes.Default.Command = 'curl --proxy 127.0.0.1:{0} "http://test3.com" --verbose'.format(ts.Variables.port)
+tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.Streams.stderr = "gold/remap-redirect.gold"
+
+# referer hit
+tr = Test.AddTestRun()
+tr.Processes.Default.Command = 'curl --proxy 127.0.0.1:{0} "http://test4.com" --header "Referer: persia.com" --verbose'.format(
ts.Variables.port)
tr.Processes.Default.ReturnCode = 0
-tr.Processes.Default.Streams.stderr = "gold/remap-404.gold"
+tr.Processes.Default.Streams.stderr = "gold/remap-referer-hit.gold"
+
+# referer miss
+tr = Test.AddTestRun()
+tr.Processes.Default.Command = 'curl --proxy 127.0.0.1:{0} "http://test4.com" --header "Referer: monkey.com" --verbose'.format(
+ ts.Variables.port)
+tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.Streams.stderr = "gold/remap-referer-miss.gold"
+
+# referer hit
+tr = Test.AddTestRun()
+tr.Processes.Default.Command = 'curl --proxy 127.0.0.1:{0} "http://test4.com" --header "Referer: www.persia.com" --verbose'.format(
+ ts.Variables.port)
+tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.Streams.stderr = "gold/remap-referer-hit.gold"
--
To stop receiving notification emails like this one, please contact
['"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>'].