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


Reply via email to