Author: supun
Date: Tue May 10 06:39:01 2011
New Revision: 1101337

URL: http://svn.apache.org/viewvc?rev=1101337&view=rev
Log:
adding a feature to block the service listing

Modified:
    
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/DefaultHttpGetProcessor.java
    
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NHttpConfiguration.java

Modified: 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/DefaultHttpGetProcessor.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/DefaultHttpGetProcessor.java?rev=1101337&r1=1101336&r2=1101337&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/DefaultHttpGetProcessor.java
 (original)
+++ 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/DefaultHttpGetProcessor.java
 Tue May 10 06:39:01 2011
@@ -111,7 +111,10 @@ public class DefaultHttpGetProcessor imp
             msgContext.setTo(new EndpointReference(uri));
         }
 
-        if (uri.equals("/favicon.ico")) {
+        if (isServiceListBlocked(uri)) {
+            response.setStatusCode(HttpStatus.SC_FORBIDDEN);
+            serverHandler.commitResponseHideExceptions(conn,  response);
+        } else if (uri.equals("/favicon.ico")) {
             response.setStatusCode(HttpStatus.SC_MOVED_PERMANENTLY);
             response.addHeader(LOCATION, "http://ws.apache.org/favicon.ico";);
             serverHandler.commitResponseHideExceptions(conn, response);
@@ -150,6 +153,20 @@ public class DefaultHttpGetProcessor imp
     }
 
     /**
+     * Is the incoming URI is requesting service list and 
http.block_service_list=true in
+     * nhttp.properties
+     * @param incomingURI incoming URI
+     * @return whether to proceed with incomingURI
+
+     */
+    protected boolean isServiceListBlocked(String incomingURI) {
+        String isBlocked = 
NHttpConfiguration.getInstance().isServiceListBlocked();
+
+        return (("/services").equals(incomingURI) || ("/services" + 
"/").equals(incomingURI)) &&
+               Boolean.parseBoolean(isBlocked);
+    }
+
+    /**
      * Returns the service name.
      *
      * @param request HttpRequest

Modified: 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NHttpConfiguration.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NHttpConfiguration.java?rev=1101337&r1=1101336&r2=1101337&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NHttpConfiguration.java
 (original)
+++ 
synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NHttpConfiguration.java
 Tue May 10 06:39:01 2011
@@ -63,6 +63,11 @@ public final class NHttpConfiguration {
     private Properties props;
     List<String> methods;
 
+    /** Comma separated list of blocked uris*/
+    public static final String BLOCK_SERVICE_LIST = "http.block_service_list";
+    /** Default value for BLOCK_SERVICE_LIST*/
+    public static final String BLOCK_SERVICE_LIST_DEFAULT = "false";
+    
     private NHttpConfiguration() {
         try {
             props = MiscellaneousUtil.loadProperties("nhttp.properties");
@@ -134,6 +139,10 @@ public final class NHttpConfiguration {
         return getBooleanValue(NhttpConstants.COUNT_CONNECTIONS, false);
     }
 
+    public String isServiceListBlocked() {
+        return getStringValue(BLOCK_SERVICE_LIST, BLOCK_SERVICE_LIST_DEFAULT);
+    }
+
     /**
      * Get properties that tune nhttp transport. Preference to system 
properties
      * @param name name of the system/config property


Reply via email to