Author: sshafroi
Date: 2008-03-13 15:41:50 +0100 (Thu, 13 Mar 2008)
New Revision: 6256

Modified:
   branches/2.16/generic.sesam/war/src/main/conf/configuration.properties
   
branches/2.16/war/src/main/java/no/sesat/search/http/filters/MD5ProtectedParametersFilter.java
   branches/2.16/war/src/main/webapp/WEB-INF/web.xml
Log:
Fix for SEARCH-4366

Now reading parameters from configuration.properties via SiteConfiguration.


Modified: branches/2.16/generic.sesam/war/src/main/conf/configuration.properties
===================================================================
--- branches/2.16/generic.sesam/war/src/main/conf/configuration.properties      
2008-03-13 14:35:49 UTC (rev 6255)
+++ branches/2.16/generic.sesam/war/src/main/conf/configuration.properties      
2008-03-13 14:41:50 UTC (rev 6256)
@@ -48,3 +48,6 @@
 
 [EMAIL PROTECTED]@
 [EMAIL PROTECTED]@
+
+md5.secret=S3SAM rockz
+md5.protectedParameters=companyId,personId,emailTo,rssPartnerId

Modified: 
branches/2.16/war/src/main/java/no/sesat/search/http/filters/MD5ProtectedParametersFilter.java
===================================================================
--- 
branches/2.16/war/src/main/java/no/sesat/search/http/filters/MD5ProtectedParametersFilter.java
      2008-03-13 14:35:49 UTC (rev 6255)
+++ 
branches/2.16/war/src/main/java/no/sesat/search/http/filters/MD5ProtectedParametersFilter.java
      2008-03-13 14:41:50 UTC (rev 6256)
@@ -17,8 +17,11 @@
  */
 package no.sesat.search.http.filters;
 
+import no.sesat.search.datamodel.DataModel;
 import no.sesat.search.security.MD5Generator;
+import no.sesat.search.site.config.SiteConfiguration;
 
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.Enumeration;
@@ -38,28 +41,10 @@
  */
 public final class MD5ProtectedParametersFilter implements Filter {
 
-    private Map<String, Boolean> protectedParameters;
-    private MD5Generator digestGenerator;
-
     private static final Logger LOG = 
Logger.getLogger(MD5ProtectedParametersFilter.class);
 
     /** [EMAIL PROTECTED] **/
     public void init(final FilterConfig filterConfig) throws ServletException {
-
-        protectedParameters = new HashMap<String, Boolean>();
-
-        final String secret = filterConfig.getInitParameter("secret");
-        final String parameters = 
filterConfig.getInitParameter("protectedParameters");
-
-        final Boolean t = Boolean.TRUE;
-
-        final String[] p = parameters.split(",");
-        for (final String parameter : p) {
-            LOG.info("Adding " + parameter + " as protected parameter");
-            protectedParameters.put(parameter, t);
-        }
-
-        digestGenerator = new MD5Generator(secret);
     }
 
     /** [EMAIL PROTECTED] **/
@@ -69,33 +54,49 @@
             final FilterChain filterChain) throws IOException, 
ServletException {
 
         final Enumeration e = servletRequest.getParameterNames();
-
-        while (e.hasMoreElements()) {
-            final String parameterName = (String) e.nextElement();
-
-            if (LOG.isTraceEnabled()) {
-                LOG.trace("Checking to see if " + parameterName + " is 
protected");
+            
+        if(servletRequest instanceof HttpServletRequest) {
+               HttpServletRequest httpServletRequest = (HttpServletRequest) 
servletRequest;
+               
+               DataModel datamodel = 
(DataModel)httpServletRequest.getSession().getAttribute(DataModel.KEY);
+               SiteConfiguration siteConfig = 
datamodel.getSite().getSiteConfiguration();
+               
+               MD5Generator digestGenerator = new 
MD5Generator(siteConfig.getProperty("md5.secret"));
+                               
+               Map<String, Boolean> protectedParameters = new HashMap<String, 
Boolean>();
+               final String[] p = 
siteConfig.getProperty("md5.protectedParameters").split(",");
+            for (final String parameter : p) {
+                LOG.info("Adding " + parameter + " as protected parameter");
+                protectedParameters.put(parameter, Boolean.TRUE);
             }
-
-            if (protectedParameters.containsKey(parameterName)) {
-
-                if (LOG.isTraceEnabled()) {
-                    LOG.trace(parameterName + " is protected");
-                }
-
-                final String md5Parameter = 
servletRequest.getParameter(parameterName + "_x");
-
-                if (md5Parameter == null
-                        || 
!digestGenerator.validate(servletRequest.getParameter(parameterName), 
md5Parameter))
-                {
-                    final HttpServletResponse response = (HttpServletResponse) 
servletResponse;
-                    response.sendError(HttpServletResponse.SC_NOT_FOUND);
-                    return;
-                }
-            }
+        
+               while (e.hasMoreElements()) {
+                   final String parameterName = (String) e.nextElement();
+       
+                   if (LOG.isTraceEnabled()) {
+                       LOG.trace("Checking to see if " + parameterName + " is 
protected");
+                   }
+       
+                   if (protectedParameters.containsKey(parameterName)) {
+       
+                       if (LOG.isTraceEnabled()) {
+                           LOG.trace(parameterName + " is protected");
+                       }
+       
+                       final String md5Parameter = 
servletRequest.getParameter(parameterName + "_x");
+       
+                       if (md5Parameter == null
+                               || 
!digestGenerator.validate(servletRequest.getParameter(parameterName), 
md5Parameter))
+                       {
+                           final HttpServletResponse response = 
(HttpServletResponse) servletResponse;
+                           
response.sendError(HttpServletResponse.SC_NOT_FOUND);
+                           return;
+                       }
+                   }
+               }
+       
+               servletRequest.setAttribute("hashGenerator", digestGenerator);
         }
-
-        servletRequest.setAttribute("hashGenerator", digestGenerator);
         filterChain.doFilter(servletRequest, servletResponse);
     }
 

Modified: branches/2.16/war/src/main/webapp/WEB-INF/web.xml
===================================================================
--- branches/2.16/war/src/main/webapp/WEB-INF/web.xml   2008-03-13 14:35:49 UTC 
(rev 6255)
+++ branches/2.16/war/src/main/webapp/WEB-INF/web.xml   2008-03-13 14:41:50 UTC 
(rev 6256)
@@ -53,14 +53,6 @@
     <filter> <!-- TODO desparately needs sesat-ising. fortunately it's not a 
required secret anymore. SEARCH-4366 -->
         <filter-name>md5ProtectParameters</filter-name>
         
<filter-class>no.sesat.search.http.filters.MD5ProtectedParametersFilter</filter-class>
-        <init-param>
-            <param-name>secret</param-name>
-            <param-value>S3SAM rockz</param-value>
-        </init-param>
-        <init-param>
-            <param-name>protectedParameters</param-name>
-            <param-value>companyId,personId,emailTo,rssPartnerId</param-value>
-        </init-param>
     </filter>
 
     <filter>

_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits

Reply via email to