Author: zwoop
Date: Tue Oct 12 01:49:10 2010
New Revision: 1021587
URL: http://svn.apache.org/viewvc?rev=1021587&view=rev
Log:
TS-434 UrlRewrite cleanup.
First checkpoint, with some nice cleanup.
Modified:
trafficserver/traffic/trunk/libinktomi++/ink_config.h.in
trafficserver/traffic/trunk/proxy/ReverseProxy.cc
trafficserver/traffic/trunk/proxy/ReverseProxy.h
trafficserver/traffic/trunk/proxy/http2/HttpTransact.cc
trafficserver/traffic/trunk/proxy/http2/remap/UrlRewrite.cc
trafficserver/traffic/trunk/proxy/http2/remap/UrlRewrite.h
trafficserver/traffic/trunk/proxy/mgmt2/RecordsConfig.cc
Modified: trafficserver/traffic/trunk/libinktomi++/ink_config.h.in
URL:
http://svn.apache.org/viewvc/trafficserver/traffic/trunk/libinktomi%2B%2B/ink_config.h.in?rev=1021587&r1=1021586&r2=1021587&view=diff
==============================================================================
--- trafficserver/traffic/trunk/libinktomi++/ink_config.h.in (original)
+++ trafficserver/traffic/trunk/libinktomi++/ink_config.h.in Tue Oct 12
01:49:10 2010
@@ -144,7 +144,6 @@
# define INK_NO_HOSTDB 1
# define INK_NO_ICP 1
# define INK_NO_LOG 1
-# define INK_NO_REMAP 1
# define INK_NO_REVERSE 1
# define INK_NO_SOCKS 1
# define INK_NO_STAT_PAGES 1
Modified: trafficserver/traffic/trunk/proxy/ReverseProxy.cc
URL:
http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/ReverseProxy.cc?rev=1021587&r1=1021586&r2=1021587&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/ReverseProxy.cc (original)
+++ trafficserver/traffic/trunk/proxy/ReverseProxy.cc Tue Oct 12 01:49:10 2010
@@ -74,21 +74,19 @@ int url_remap_mode;
int
init_reverse_proxy()
{
- // Do this before we create the table, which reads the value.
- RecRegisterConfigInt(RECT_CONFIG, backdoor_var, 0, RECU_RESTART_TS,
RECC_NULL, NULL);
-
ink_assert(rewrite_table == NULL);
reconfig_mutex = new_ProxyMutex();
- rewrite_table = NEW(new UrlRewrite(rewrite_var));
- REVERSE_RegisterConfigUpdateFunc(rewrite_var, url_rewrite_CB, (void *)
FILE_CHANGED);
- REVERSE_RegisterConfigUpdateFunc(tsname_var, url_rewrite_CB, (void *)
TSNAME_CHANGED);
- REVERSE_RegisterConfigUpdateFunc(reverse_var, url_rewrite_CB, (void *)
REVERSE_CHANGED);
- REVERSE_RegisterConfigUpdateFunc(ac_port_var, url_rewrite_CB, (void *)
AC_PORT_CHANGED);
- REVERSE_RegisterConfigUpdateFunc(default_to_pac_var, url_rewrite_CB, (void
*) DEFAULT_TO_PAC_CHANGED);
- REVERSE_RegisterConfigUpdateFunc(default_to_pac_port_var, url_rewrite_CB,
(void *) DEFAULT_TO_PAC_PORT_CHANGED);
- REVERSE_RegisterConfigUpdateFunc(pristine_hdr_var, url_rewrite_CB, (void *)
PRISTINE_HOST_HDR_CHANGED);
- REVERSE_RegisterConfigUpdateFunc(url_remap_mode_var, url_rewrite_CB, (void
*) URL_REMAP_MODE_CHANGED);
- REVERSE_RegisterConfigUpdateFunc(http_default_redirect_var, url_rewrite_CB,
(void *) HTTP_DEFAULT_REDIRECT_CHANGED);
+ rewrite_table = NEW(new UrlRewrite("proxy.config.url_remap.filename"));
+
+ REVERSE_RegisterConfigUpdateFunc("proxy.config.url_remap.filename",
url_rewrite_CB, (void *) FILE_CHANGED);
+ REVERSE_RegisterConfigUpdateFunc("proxy.config.proxy_name", url_rewrite_CB,
(void *) TSNAME_CHANGED);
+ REVERSE_RegisterConfigUpdateFunc("proxy.config.reverse_proxy.enabled",
url_rewrite_CB, (void *) REVERSE_CHANGED);
+ REVERSE_RegisterConfigUpdateFunc("proxy.config.admin.autoconf_port",
url_rewrite_CB, (void *) AC_PORT_CHANGED);
+
REVERSE_RegisterConfigUpdateFunc("proxy.config.url_remap.default_to_server_pac",
url_rewrite_CB, (void *) DEFAULT_TO_PAC_CHANGED);
+
REVERSE_RegisterConfigUpdateFunc("proxy.config.url_remap.default_to_server_pac_port",
url_rewrite_CB, (void *) DEFAULT_TO_PAC_PORT_CHANGED);
+ REVERSE_RegisterConfigUpdateFunc("proxy.config.url_remap.pristine_host_hdr",
url_rewrite_CB, (void *) PRISTINE_HOST_HDR_CHANGED);
+ REVERSE_RegisterConfigUpdateFunc("proxy.config.url_remap.url_remap_mode",
url_rewrite_CB, (void *) URL_REMAP_MODE_CHANGED);
+
REVERSE_RegisterConfigUpdateFunc("proxy.config.http.referer_default_redirect",
url_rewrite_CB, (void *) HTTP_DEFAULT_REDIRECT_CHANGED);
return 0;
}
@@ -99,22 +97,6 @@ request_url_remap(HttpTransact::State *
return rewrite_table ? rewrite_table->Remap(s, request_header, redirect_url,
orig_url, tag, filter_mask) : false;
}
-/**
- This function is used to figure out if a URL needs to be remapped
- according to the rules in remap.config.
-
-*/
-mapping_type
-request_url_remap_redirect(HTTPHdr * request_header, char **redirect_url, char
**orig_url, char *tag)
-{
- return rewrite_table ? rewrite_table->Remap_redirect(request_header,
redirect_url, orig_url, tag) : NONE;
-}
-
-bool
-response_url_remap(HTTPHdr * response_header, char *tag)
-{
- return rewrite_table ? rewrite_table->ReverseMap(response_header, tag) :
false;
-}
//
//
Modified: trafficserver/traffic/trunk/proxy/ReverseProxy.h
URL:
http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/ReverseProxy.h?rev=1021587&r1=1021586&r2=1021587&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/ReverseProxy.h (original)
+++ trafficserver/traffic/trunk/proxy/ReverseProxy.h Tue Oct 12 01:49:10 2010
@@ -62,11 +62,6 @@ bool request_url_remap(HttpTransact::Sta
char **redirect_url,
char **orig_url, char *tag = NULL, unsigned int
filter_mask = URL_REMAP_FILTER_NONE);
-mapping_type request_url_remap_redirect(HTTPHdr * request_header,
- char **redirect_url, char **orig_url,
char *tag = NULL);
-
-bool response_url_remap(HTTPHdr * response_header, char *tag = NULL);
-
// Reload Functions
void reloadUrlRewrite();
Modified: trafficserver/traffic/trunk/proxy/http2/HttpTransact.cc
URL:
http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/http2/HttpTransact.cc?rev=1021587&r1=1021586&r2=1021587&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/http2/HttpTransact.cc (original)
+++ trafficserver/traffic/trunk/proxy/http2/HttpTransact.cc Tue Oct 12 01:49:10
2010
@@ -465,7 +465,7 @@ does_method_require_cache_copy_deletion(
inline static
- HttpTransact::StateMachineAction_t
+HttpTransact::StateMachineAction_t
how_to_open_connection(HttpTransact::State * s)
{
HTTP_DEBUG_ASSERT(s->pending_work == NULL);
@@ -957,16 +957,6 @@ HttpTransact::EndRemapRequest(State * s)
s->state_machine->ua_session->get_netvc()->get_is_other_side_transparent();
done:
- /**
- * Since we don't want to return 404 Not Found error if there's
- * redirect rule, the function to do redirect is moved before
- * sending the 404 error.
- **/
- if (handleIfRedirect(s)) {
- Debug("http_trans", "END HttpTransact::RemapRequest");
- TRANSACT_RETURN(PROXY_INTERNAL_CACHE_NOOP, NULL);
- }
-
if (s->reverse_proxy) {
Debug("url_rewrite", "s->reverse_proxy is true");
} else {
@@ -1107,55 +1097,6 @@ HttpTransact::ModifyRequest(State * s)
TRANSACT_RETURN(HTTP_API_READ_REQUEST_PRE_REMAP,
HttpTransact::StartRemapRequest);
}
-// This function is supposed to figure out if this transaction is
-// susceptible to a redirection as specified by remap.config
-bool
-HttpTransact::handleIfRedirect(State * s)
-{
-#ifndef INK_NO_REMAP
- int answer;
- char *remap_redirect = NULL;
- if ((answer =
- request_url_remap_redirect(&s->hdr_info.client_request,
&remap_redirect, &s->unmapped_request_url)) == NONE)
- return false;
-
- if ((answer == PERMANENT_REDIRECT) || (answer == TEMPORARY_REDIRECT)) {
- if (answer == TEMPORARY_REDIRECT) {
- if ((s->client_info).http_version.m_version == HTTP_VERSION(1, 1)) {
- build_error_response(s, (HTTPStatus) 307
- /* which is HTTP/1.1 for
HTTP_STATUS_MOVED_TEMPORARILY */
- ,
- "Redirect", "redirect#moved_temporarily",
- "%s <a href=\"%s\">%s</a>. %s",
- "The document you requested is now",
- remap_redirect, remap_redirect, "Please update
your documents and bookmarks accordingly");
- } else {
- build_error_response(s,
- HTTP_STATUS_MOVED_TEMPORARILY,
- "Redirect",
- "redirect#moved_temporarily",
- "%s <a href=\"%s\">%s</a>. %s",
- "The document you requested is now",
- remap_redirect, remap_redirect, "Please update
your documents and bookmarks accordingly");
- }
- } else {
- build_error_response(s,
- HTTP_STATUS_MOVED_PERMANENTLY,
- "Redirect",
- "redirect#moved_permanently",
- "%s <a href=\"%s\">%s</a>. %s",
- "The document you requested is now",
- remap_redirect, remap_redirect, "Please update your
documents and bookmarks accordingly");
- }
- s->hdr_info.client_response.value_set(MIME_FIELD_LOCATION,
- MIME_LEN_LOCATION, remap_redirect,
strlen(remap_redirect));
- xfree(remap_redirect);
- return true;
- }
-#endif /* INK_NO_REMAP */
- return false;
-}
-
void
HttpTransact::HandleRequest(State * s)
{
@@ -8397,14 +8338,6 @@ HttpTransact::build_response(State * s,
HttpTransactHeaders::convert_response(outgoing_version, outgoing_response);
-#ifndef INK_NO_REMAP
- // process reverse mappings on the location header
- HTTPStatus outgoing_status = outgoing_response->status_get();
- if ((outgoing_status != 200) && (((outgoing_status >= 300) &&
(outgoing_status < 400)) || (outgoing_status == 201))) {
- response_url_remap(outgoing_response);
- }
-#endif //INK_NO_REMAP
-
if (s->http_config_param->enable_http_stats) {
if (s->hdr_info.server_response.valid() &&
s->http_config_param->wuts_enabled) {
int reason_len;
Modified: trafficserver/traffic/trunk/proxy/http2/remap/UrlRewrite.cc
URL:
http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/http2/remap/UrlRewrite.cc?rev=1021587&r1=1021586&r2=1021587&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/http2/remap/UrlRewrite.cc (original)
+++ trafficserver/traffic/trunk/proxy/http2/remap/UrlRewrite.cc Tue Oct 12
01:49:10 2010
@@ -522,7 +522,7 @@ UrlRewrite::UrlRewrite(const char *file_
}
this->ts_name = NULL;
- REVERSE_ReadConfigStringAlloc(this->ts_name, tsname_var);
+ REVERSE_ReadConfigStringAlloc(this->ts_name, "proxy.config.proxy_name");
if (this->ts_name == NULL) {
pmgmt->signalManager(MGMT_SIGNAL_CONFIG_ERROR, "Unable to read
proxy.config.proxy_name");
Warning("%s Unable to determine proxy name. Incorrect redirects could be
generated", modulePrefix);
@@ -530,20 +530,20 @@ UrlRewrite::UrlRewrite(const char *file_
}
this->http_default_redirect_url = NULL;
- REVERSE_ReadConfigStringAlloc(this->http_default_redirect_url,
http_default_redirect_var);
+ REVERSE_ReadConfigStringAlloc(this->http_default_redirect_url,
"proxy.config.http.referer_default_redirect");
if (this->http_default_redirect_url == NULL) {
pmgmt->signalManager(MGMT_SIGNAL_CONFIG_ERROR, "Unable to read
proxy.config.http.referer_default_redirect");
Warning("%s Unable to determine default redirect url for \"referer\"
filter.", modulePrefix);
this->http_default_redirect_url = xstrdup("http://www.apache.org");
}
- REVERSE_ReadConfigInteger(reverse_proxy, reverse_var);
- REVERSE_ReadConfigInteger(mgmt_autoconf_port, ac_port_var);
- REVERSE_ReadConfigInteger(default_to_pac, default_to_pac_var);
- REVERSE_ReadConfigInteger(default_to_pac_port, default_to_pac_port_var);
- REVERSE_ReadConfigInteger(pristine_host_hdr, pristine_hdr_var);
- REVERSE_ReadConfigInteger(url_remap_mode, url_remap_mode_var);
- REVERSE_ReadConfigInteger(backdoor_enabled, backdoor_var);
+ REVERSE_ReadConfigInteger(reverse_proxy,
"proxy.config.reverse_proxy.enabled");
+ REVERSE_ReadConfigInteger(mgmt_autoconf_port,
"proxy.config.admin.autoconf_port");
+ REVERSE_ReadConfigInteger(default_to_pac,
"proxy.config.url_remap.default_to_server_pac");
+ REVERSE_ReadConfigInteger(default_to_pac_port,
"proxy.config.url_remap.default_to_server_pac_port");
+ REVERSE_ReadConfigInteger(pristine_host_hdr,
"proxy.config.url_remap.pristine_host_hdr");
+ REVERSE_ReadConfigInteger(url_remap_mode,
"proxy.config.url_remap.url_remap_mode");
+ REVERSE_ReadConfigInteger(backdoor_enabled,
"proxy.config.url_remap.handle_backdoor_urls");
ink_strncpy(config_file_path, system_config_directory,
sizeof(config_file_path));
strncat(config_file_path, "/", sizeof(config_file_path) -
strlen(config_file_path) - 1);
@@ -944,66 +944,6 @@ UrlRewrite::DoRemap(HttpTransact::State
return retcode;
}
-/** Used to do the backwards lookups. */
-bool UrlRewrite::ReverseMap(HTTPHdr * response_header, char *tag)
-{
- const char *
- location_hdr;
- URL
- location_url;
- int
- loc_length;
- bool
- remap_found = false;
- const char *
- host;
- int
- host_len;
-
- char *
- new_loc_hdr;
- int
- new_loc_length;
-
- if (unlikely(num_rules_reverse == 0)) {
- ink_assert(reverse_mappings.empty());
- return false;
- }
-
- location_hdr = response_header->value_get(MIME_FIELD_LOCATION,
MIME_LEN_LOCATION, &loc_length);
-
- if (location_hdr == NULL) {
- Debug("url_rewrite", "Reverse Remap called with empty location header");
- return false;
- }
-
- location_url.create(NULL);
- location_url.parse(location_hdr, loc_length);
-
- host = location_url.host_get(&host_len);
- UrlMappingContainer reverse_mapping(response_header->m_heap);
- if (reverseMappingLookup(&location_url, location_url.port_get(), host,
host_len, reverse_mapping, tag)) {
- /* HDR FIX ME
- Debug("url_rewrite", "Location header
before rewrite: %s",
-
response_header->value_get(MIME_FIELD_LOCATION));
- */
-
- remap_found = true;
- DoRemap(NULL, NULL, reverse_mapping, &location_url);
-
- new_loc_hdr = location_url.string_get(NULL, &new_loc_length);
- response_header->value_set(MIME_FIELD_LOCATION, MIME_LEN_LOCATION,
new_loc_hdr, new_loc_length);
- xfree(new_loc_hdr);
-
- /* HDR FIX ME
- Debug("url_rewrite", "Location header after rewrite: %s",
- response_header->value_get(MIME_FIELD_LOCATION));
- */
- }
-
- location_url.destroy();
- return remap_found;
-}
/** Perform fast ACL filtering. */
void
Modified: trafficserver/traffic/trunk/proxy/http2/remap/UrlRewrite.h
URL:
http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/http2/remap/UrlRewrite.h?rev=1021587&r1=1021586&r2=1021587&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/http2/remap/UrlRewrite.h (original)
+++ trafficserver/traffic/trunk/proxy/http2/remap/UrlRewrite.h Tue Oct 12
01:49:10 2010
@@ -43,16 +43,6 @@
#define REVERSE_ReadConfigStringAlloc REC_ReadConfigStringAlloc
#define modulePrefix "[ReverseProxy]"
-#define tsname_var "proxy.config.proxy_name"
-#define rewrite_var "proxy.config.url_remap.filename"
-#define reverse_var "proxy.config.reverse_proxy.enabled"
-#define ac_port_var "proxy.config.admin.autoconf_port"
-#define default_to_pac_var "proxy.config.url_remap.default_to_server_pac"
-#define default_to_pac_port_var
"proxy.config.url_remap.default_to_server_pac_port"
-#define pristine_hdr_var "proxy.config.url_remap.pristine_host_hdr"
-#define url_remap_mode_var "proxy.config.url_remap.url_remap_mode"
-#define backdoor_var "proxy.config.url_remap.handle_backdoor_urls"
-#define http_default_redirect_var "proxy.config.http.referer_default_redirect"
#define BUILD_TABLE_MAX_ARGS 2048
/**
@@ -86,7 +76,6 @@ public:
bool Remap(HttpTransact::State * s, HTTPHdr * request_header, char
**redirect_url, char **orig_url,
char *tag = NULL, unsigned int filter_mask =
URL_REMAP_FILTER_NONE);
mapping_type Remap_redirect(HTTPHdr * request_header, char **redirect_url,
char **orig_url, char *tag = NULL);
- bool ReverseMap(HTTPHdr * response_header, char *tag = NULL);
void SetReverseFlag(int flag);
void SetPristineFlag(int flag);
void Print();
Modified: trafficserver/traffic/trunk/proxy/mgmt2/RecordsConfig.cc
URL:
http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/mgmt2/RecordsConfig.cc?rev=1021587&r1=1021586&r2=1021587&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/mgmt2/RecordsConfig.cc (original)
+++ trafficserver/traffic/trunk/proxy/mgmt2/RecordsConfig.cc Tue Oct 12
01:49:10 2010
@@ -2435,6 +2435,8 @@ RecordElement RecordsConfig[] = {
// # 2 - URL_REMAP_FOR_OS remap url's for requests to OS's only
{CONFIG, "proxy.config.url_remap.url_remap_mode", "", INK_INT, "1",
RU_RESTART_TS, RR_NULL, RC_INT, "[0-2]", RA_NULL}
,
+ {CONFIG, "proxy.config.url_remap.handle_backdoor_urls", "", INK_INT, "0",
RU_RESTART_TS, RR_NULL, RC_INT, NULL, RA_NULL}
+ ,
//##############################################################################
//#
//# SSL Termination