You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ra...@apache.org on 2015/08/22 05:45:56 UTC

stratos git commit: Adding Carbon kernel patch0012

Repository: stratos
Updated Branches:
  refs/heads/master 4118b564b -> bef7f66df


Adding Carbon kernel patch0012


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/bef7f66d
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/bef7f66d
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/bef7f66d

Branch: refs/heads/master
Commit: bef7f66df80eb2ff6f89dfb3c8230b64f8711998
Parents: 4118b56
Author: Akila Perera <ra...@gmail.com>
Authored: Sat Aug 22 09:14:12 2015 +0530
Committer: Akila Perera <ra...@gmail.com>
Committed: Sat Aug 22 09:14:12 2015 +0530

----------------------------------------------------------------------
 .../org/wso2/carbon/ui/CarbonUILoginUtil.java   |  15 +-
 .../org/wso2/carbon/ui/valve/CSRFValve.java     |  49 ++--
 .../java/org/wso2/carbon/ui/valve/XSSValve.java | 123 ++++++++-
 .../modules/distribution/src/assembly/bin.xml   |  34 ++-
 products/stratos/modules/p2-profile-gen/pom.xml | 254 ++++++++-----------
 5 files changed, 272 insertions(+), 203 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/bef7f66d/dependencies/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CarbonUILoginUtil.java
----------------------------------------------------------------------
diff --git a/dependencies/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CarbonUILoginUtil.java b/dependencies/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CarbonUILoginUtil.java
index 1df9e7a..6dbd789 100644
--- a/dependencies/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CarbonUILoginUtil.java
+++ b/dependencies/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/CarbonUILoginUtil.java
@@ -356,7 +356,14 @@ public final class CarbonUILoginUtil {
 //            	response.sendRedirect("../../carbon/admin/login.jsp?loginStatus=false&errorCode=domain.not.specified");
 //            	return false;
 //        	}
-        	
+            String relayState = request.getParameter("RelayState");
+            if (relayState != null && relayState.endsWith("-logout")) {
+                session.setAttribute(CarbonSecuredHttpContext.LOGGED_USER, request.getParameter("username"));
+                session.setAttribute("idpSessionIndex", request.getParameter("idpSessionIndex"));
+                response.sendRedirect("/carbon/sso-acs/redirect_ajaxprocessor.jsp?logout=true");
+                return false;
+            }
+
             authenticator.authenticate(request);
             session = request.getSession();
             session.setAttribute(CarbonSecuredHttpContext.CARBON_AUTHNETICATOR, authenticator);
@@ -413,11 +420,7 @@ public final class CarbonUILoginUtil {
 				}
                 return false;
             }
-            String relayState = request.getParameter("RelayState");
-            if(relayState!= null && relayState.endsWith("-logout")){
-                response.sendRedirect("/carbon/admin/logout_action.jsp");
-                return false;
-            }
+
             if (contextPath != null) {
                 if (indexPageURL.startsWith("../..")) {
                     indexPageURL = indexPageURL.substring(5);

http://git-wip-us.apache.org/repos/asf/stratos/blob/bef7f66d/dependencies/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/valve/CSRFValve.java
----------------------------------------------------------------------
diff --git a/dependencies/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/valve/CSRFValve.java b/dependencies/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/valve/CSRFValve.java
index 5343333..2207f69 100644
--- a/dependencies/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/valve/CSRFValve.java
+++ b/dependencies/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/valve/CSRFValve.java
@@ -25,7 +25,6 @@ import org.wso2.carbon.base.ServerConfiguration;
 
 import javax.servlet.ServletException;
 import java.io.IOException;
-import java.util.Arrays;
 
 public class CSRFValve extends ValveBase {
 
@@ -37,9 +36,9 @@ public class CSRFValve extends ValveBase {
     private static String RULE_PROPERTY = CSRF_VALVE_PROPERTY + ".Rule";
     private static String RULE_ALLOW = "allow";
     private static String RULE_DENY = "deny";
-    private static String[] patternList;
+    private static String[] csrfPatternList;
     private static String[] whiteList;
-    private static String rule;
+    private static String csrfRule;
     private static boolean csrfEnabled = false;
 
     /**
@@ -49,9 +48,9 @@ public class CSRFValve extends ValveBase {
 
         ServerConfiguration serverConfiguration = ServerConfiguration.getInstance();
         whiteList = serverConfiguration.getProperties(WHITE_LIST_PROPERTY);
-        patternList = serverConfiguration.getProperties(RULE_PATTERN_PROPERTY);
-        rule = serverConfiguration.getFirstProperty(RULE_PROPERTY);
-        if (whiteList.length > 0 && patternList.length > 0 && rule != null
+        csrfPatternList = serverConfiguration.getProperties(RULE_PATTERN_PROPERTY);
+        csrfRule = serverConfiguration.getFirstProperty(RULE_PROPERTY);
+        if (whiteList.length > 0 && csrfPatternList.length > 0 && csrfRule != null
                 && serverConfiguration.getFirstProperty(ENABLED_PROPERTY) != null && Boolean
                 .parseBoolean(serverConfiguration.getFirstProperty(ENABLED_PROPERTY))) {
             csrfEnabled = true;
@@ -76,30 +75,38 @@ public class CSRFValve extends ValveBase {
 
     /**
      * Validate request context with pattern
-     * @param request  Http Request
+     *
+     * @param request Http Request
      * @throws ServletException
      */
     private void validatePatterns(Request request) throws ServletException {
 
-        String context;
+        String context = request.getRequestURI().substring(request.getRequestURI().indexOf("/") + 1);
 
-        if (request.getRequestURI().indexOf("/", 2) == -1) {
-            context = request.getRequestURI().substring(request.getRequestURI().indexOf("/") + 1);
-        } else {
-            context = request.getRequestURI()
-                    .substring(request.getRequestURI().indexOf("/") + 1, request.getRequestURI().indexOf(
-                            "/", 2));
+        if (RULE_ALLOW.equals(csrfRule) && !isContextStartWithGivenPatterns(context)) {
+            validateRefererHeader(request);
+        } else if (RULE_DENY.equals(csrfRule) && isContextStartWithGivenPatterns(context)) {
+            validateRefererHeader(request);
         }
+    }
 
-        if (RULE_ALLOW.equals(rule)) {
-            if (!Arrays.asList(patternList).contains(context)) {
-                validateRefererHeader(request);
-            }
-        } else if (RULE_DENY.equals(rule)) {
-            if (Arrays.asList(patternList).contains(context)) {
-                validateRefererHeader(request);
+    /**
+     * Check whether context starts with defined pattern
+     *
+     * @param context
+     * @return
+     */
+    private boolean isContextStartWithGivenPatterns(String context) {
+
+        boolean patternMatched = false;
+
+        for (String pattern : csrfPatternList) {
+            if (context.startsWith(pattern)) {
+                patternMatched = true;
+                break;
             }
         }
+        return patternMatched;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/stratos/blob/bef7f66d/dependencies/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/valve/XSSValve.java
----------------------------------------------------------------------
diff --git a/dependencies/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/valve/XSSValve.java b/dependencies/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/valve/XSSValve.java
index 4ce9977..ce30bec 100644
--- a/dependencies/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/valve/XSSValve.java
+++ b/dependencies/org.wso2.carbon.ui/src/main/java/org/wso2/carbon/ui/valve/XSSValve.java
@@ -21,11 +21,21 @@ import org.apache.catalina.LifecycleException;
 import org.apache.catalina.connector.Request;
 import org.apache.catalina.connector.Response;
 import org.apache.catalina.valves.ValveBase;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.wso2.carbon.base.ServerConfiguration;
+import org.wso2.carbon.utils.CarbonUtils;
 
 import javax.servlet.ServletException;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Enumeration;
+import java.util.Properties;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -33,7 +43,19 @@ public class XSSValve extends ValveBase {
 
     private static String XSS_VALVE_PROPERTY = "Security.XSSPreventionConfig";
     private static String ENABLED_PROPERTY = XSS_VALVE_PROPERTY + ".Enabled";
+    private static String RULE_PATTERN_PROPERTY = XSS_VALVE_PROPERTY + ".Patterns.Pattern";
+    private static String RULE_PROPERTY = XSS_VALVE_PROPERTY + ".Rule";
+    private static String XSS_EXTENSION_FILE_NAME = "xss-patterns.properties";
     private static boolean xssEnabled = false;
+    private static String RULE_ALLOW = "allow";
+    private static String RULE_DENY = "deny";
+    private static String[] xssURIPatternList;
+    private static String xssRule;
+    private static String patterPath = "";
+    private static ArrayList<Pattern> patternList;
+
+    protected static final Log log = LogFactory.getLog(XSSValve.class);
+
 
     private static Pattern[] patterns = new Pattern[] {
             Pattern.compile("<input", Pattern.CASE_INSENSITIVE),
@@ -52,6 +74,8 @@ public class XSSValve extends ValveBase {
             Pattern.compile("<img", Pattern.CASE_INSENSITIVE),
             Pattern.compile("javascript:", Pattern.CASE_INSENSITIVE),
             Pattern.compile("vbscript:", Pattern.CASE_INSENSITIVE),
+            Pattern.compile("alert(.*)", Pattern.CASE_INSENSITIVE),
+            Pattern.compile("onMouse", Pattern.CASE_INSENSITIVE),
             Pattern.compile("onload(.*?)=", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL)
     };
 
@@ -71,30 +95,101 @@ public class XSSValve extends ValveBase {
                 serverConfiguration.getFirstProperty(ENABLED_PROPERTY))) {
             xssEnabled = true;
         }
+        xssURIPatternList = serverConfiguration.getProperties(RULE_PATTERN_PROPERTY);
+        xssRule = serverConfiguration.getFirstProperty(RULE_PROPERTY);
+        patterPath = CarbonUtils.getCarbonSecurityConfigDirPath() + "/" + XSS_EXTENSION_FILE_NAME;
+        buildScriptPatterns();
     }
 
     @Override
     public void invoke(Request request, Response response) throws IOException, ServletException {
 
         if (xssEnabled) {
-            Enumeration<String> parameterNames = request.getParameterNames();
-
-            while (parameterNames.hasMoreElements()) {
-
-                String paramName = parameterNames.nextElement();
-                String paramValue = request.getParameter(paramName);
-                if (paramValue != null) {
-                    paramValue = paramValue.replaceAll("\0", "");
-                    for (Pattern scriptPattern : patterns) {
-                        Matcher matcher = scriptPattern.matcher(paramValue);
-                        if (matcher.find()) {
-                            throw new ServletException(
-                                    "Possible XSS Attack. Suspicious code : " + matcher.toMatchResult().group());
+            String context = request.getRequestURI().substring(request.getRequestURI().indexOf("/") + 1);
+            if (RULE_ALLOW.equals(xssRule) && !isContextStartWithGivenPatterns(context)) {
+                validateParameters(request);
+            } else if (RULE_DENY.equals(xssRule) && isContextStartWithGivenPatterns(context)) {
+                validateParameters(request);
+            } else if(!(RULE_ALLOW.equals(xssRule) || RULE_DENY.equals(xssRule))){
+                validateParameters(request);
+            }
+
+        }
+        getNext().invoke(request, response);
+    }
+
+    private void validateParameters(Request request) throws ServletException{
+
+        Enumeration<String> parameterNames = request.getParameterNames();
+
+        while (parameterNames.hasMoreElements()) {
+
+            String paramName = parameterNames.nextElement();
+            String paramValue = request.getParameter(paramName);
+            if (paramValue != null) {
+                paramValue = paramValue.replaceAll("\0", "");
+                for (Pattern scriptPattern : patternList) {
+                    Matcher matcher = scriptPattern.matcher(paramValue);
+                    if (matcher.find()) {
+                        throw new ServletException(
+                                "Possible XSS Attack. Suspicious code : " + matcher.toMatchResult().group());
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Check whether context starts with defined pattern
+     *
+     * @param context
+     * @return
+     */
+    private boolean isContextStartWithGivenPatterns(String context) {
+
+        boolean patternMatched = false;
+
+        for (String pattern : xssURIPatternList) {
+            if (context.startsWith(pattern)) {
+                patternMatched = true;
+                break;
+            }
+        }
+        return patternMatched;
+    }
+
+    private void buildScriptPatterns() {
+        patternList = new ArrayList<Pattern>(Arrays.asList(patterns));
+        if (patterPath != null && !patterPath.isEmpty()) {
+            InputStream inStream = null;
+            File xssPatternConfigFile = new File(patterPath);
+            Properties properties = new Properties();
+            if (xssPatternConfigFile.exists()) {
+                try {
+                    inStream = new FileInputStream(xssPatternConfigFile);
+                    properties.load(inStream);
+                } catch (FileNotFoundException e) {
+                    log.error("Can not load xssPatternConfig properties file ", e);
+                } catch (IOException e) {
+                    log.error("Can not load xssPatternConfigFile properties file ", e);
+                } finally {
+                    if (inStream != null) {
+                        try {
+                            inStream.close();
+                        } catch (IOException e) {
+                            log.error("Error while closing stream ", e);
                         }
                     }
                 }
             }
+            if (!properties.isEmpty()) {
+                for (String key : properties.stringPropertyNames()) {
+                    String value = properties.getProperty(key);
+                    patternList.add(Pattern.compile(value, Pattern.CASE_INSENSITIVE));
+                }
+            }
+
         }
-        getNext().invoke(request, response);
     }
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/bef7f66d/products/stratos/modules/distribution/src/assembly/bin.xml
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/assembly/bin.xml b/products/stratos/modules/distribution/src/assembly/bin.xml
index 31b84c7..c74d80a 100755
--- a/products/stratos/modules/distribution/src/assembly/bin.xml
+++ b/products/stratos/modules/distribution/src/assembly/bin.xml
@@ -202,11 +202,12 @@
             <outputDirectory>${pom.artifactId}-${pom.version}/dbscripts</outputDirectory>
             <excludes>
                 <exclude>**/identity/**</exclude>
-                <!-- Patched in WSO2-CARBON-PATCH-4.2.0-0001 and WSO2-CARBON-PATCH-4.2.0-0003
+                <!-- Patched in WSO2-CARBON-PATCH-4.2.0-0001, WSO2-CARBON-PATCH-4.2.0-0012 and WSO2-CARBON-PATCH-4.2.0-0003
                 Excluding since overwriting is not supported in assembly plugin -->
                 <exclude>mysql.sql</exclude>
                 <exclude>db2.sql</exclude>
                 <exclude>mysql_cluster.sql</exclude>
+                <exclude>oracle_rac.sql</exclude>
             </excludes>
             <includes>
                 <include>**/**.sql</include>
@@ -343,6 +344,16 @@
                 <include>**/patch0011/*.*</include>
             </includes>
         </fileSet>
+        <fileSet>
+            <directory>../p2-profile-gen/target/WSO2-CARBON-PATCH-4.2.0-0012</directory>
+            <outputDirectory>${pom.artifactId}-${pom.version}/repository/components/patches</outputDirectory>
+            <excludes>
+                <exclude>**/org.wso2.carbon.ui_4.2.0.jar</exclude>
+            </excludes>
+            <includes>
+                <include>**/patch0012/*.*</include>
+            </includes>
+        </fileSet>
 
         <!-- Additional configuration for kernel patches -->
         <fileSet>
@@ -361,13 +372,6 @@
             </includes>
         </fileSet>
         <fileSet>
-            <directory>../p2-profile-gen/target/WSO2-CARBON-PATCH-4.2.0-0009/lib</directory>
-            <outputDirectory>${pom.artifactId}-${pom.version}/lib</outputDirectory>
-            <includes>
-                <include>**/org.wso2.carbon.server-4.2.0.jar</include>
-            </includes>
-        </fileSet>
-        <fileSet>
             <directory>../p2-profile-gen/target/WSO2-CARBON-PATCH-4.2.0-0009/bin</directory>
             <outputDirectory>${pom.artifactId}-${pom.version}/bin</outputDirectory>
             <includes>
@@ -381,6 +385,20 @@
                 <include>**/org.wso2.ciphertool-1.0.0-wso2v2.jar</include>
             </includes>
         </fileSet>
+        <fileSet>
+            <directory>../p2-profile-gen/target/WSO2-CARBON-PATCH-4.2.0-0012/lib</directory>
+            <outputDirectory>${pom.artifactId}-${pom.version}/lib</outputDirectory>
+            <includes>
+                <include>**/org.wso2.carbon.server-4.2.0.jar</include>
+            </includes>
+        </fileSet>
+        <fileSet>
+            <directory>../p2-profile-gen/target/WSO2-CARBON-PATCH-4.2.0-0012/dbscripts</directory>
+            <outputDirectory>${pom.artifactId}-${pom.version}/dbscripts</outputDirectory>
+            <includes>
+                <include>**/oracle_rac.sql</include>
+            </includes>
+        </fileSet>
 
         <!-- Jaggery modules -->
         <fileSet>

http://git-wip-us.apache.org/repos/asf/stratos/blob/bef7f66d/products/stratos/modules/p2-profile-gen/pom.xml
----------------------------------------------------------------------
diff --git a/products/stratos/modules/p2-profile-gen/pom.xml b/products/stratos/modules/p2-profile-gen/pom.xml
index f00a6a8..71ebd0c 100644
--- a/products/stratos/modules/p2-profile-gen/pom.xml
+++ b/products/stratos/modules/p2-profile-gen/pom.xml
@@ -267,7 +267,7 @@
                             </artifactItems>
                         </configuration>
                     </execution>
-                    <!--execution>
+                    <execution>
                         <id>unpack-kernel-patch-0012</id>
                         <phase>test</phase>
                         <goals>
@@ -285,7 +285,7 @@
                                 </artifactItem>
                             </artifactItems>
                         </configuration>
-                    </execution-->
+                    </execution>
                     <execution>
                         <id>unpack-equinox-executable</id>
                         <phase>test</phase>
@@ -324,8 +324,6 @@
                             <publishArtifacts>true</publishArtifacts>
                             <publishArtifactRepository>true</publishArtifactRepository>
                             <featureArtifacts>
-                                <!--featureArtifactDef>org.wso2.carbon:org.wso2.carbon.logaggregator.feature:1.0.0
-                                </featureArtifactDef-->
                                 <featureArtifactDef>
                                     org.wso2.carbon:org.wso2.carbon.core.feature:${carbon.platform.version}
                                 </featureArtifactDef>
@@ -348,20 +346,8 @@
                                     org.wso2.carbon:org.wso2.carbon.registry.ui.menu.feature:${carbon.version}
                                 </featureArtifactDef>
                                 <featureArtifactDef>
-                                    org.apache.stratos:org.apache.stratos.common.feature:${project.version}
-                                </featureArtifactDef>
-                                <featureArtifactDef>
-                                    org.apache.stratos:org.apache.stratos.manager.styles.feature:${project.version}
-                                </featureArtifactDef>
-                                <featureArtifactDef>
-                                    org.apache.stratos:org.apache.stratos.tenant.activity.server.feature:${project.version}
-                                </featureArtifactDef>
-                                <featureArtifactDef>
                                     org.wso2.carbon:org.wso2.carbon.throttle.server.feature:${carbon.version}
                                 </featureArtifactDef>
-                                <!--featureArtifactDef>
-                                    org.apache.stratos:org.apache.stratos.logging.mgt.feature:${project.version}
-                                </featureArtifactDef-->
                                 <featureArtifactDef>
                                     org.wso2.carbon:org.wso2.carbon.security.mgt.feature:${carbon.platform.patch.version.4.2.4}
                                 </featureArtifactDef>
@@ -369,24 +355,13 @@
                                     org.wso2.carbon.deployment:org.wso2.carbon.webapp.mgt.feature:${carbon.deployment.version}
                                 </featureArtifactDef>
                                 <featureArtifactDef>
-                                    org.wso2.carbon.deployment:org.wso2.carbon.webapp.mgt.server.feature:${carbon.deployment.version}
+                                    org.wso2.carbon:org.wso2.carbon.jaxws.webapp.mgt.feature:${carbon.platform.version}
                                 </featureArtifactDef>
-                                <featureArtifactDef>org.wso2.carbon:org.wso2.carbon.jaxws.webapp.mgt.server.feature:${carbon.platform.version}</featureArtifactDef>
-                                <featureArtifactDef>org.wso2.carbon:org.wso2.carbon.jaxws.webapp.mgt.feature:${carbon.platform.version}</featureArtifactDef>
                                 <featureArtifactDef>org.wso2.store:org.wso2.store.feature:${store.version}
                                 </featureArtifactDef>
-                                <!--featureArtifactDef>
-                                    org.wso2.carbon:org.wso2.carbon.task.server.feature:${carbon.version}
-                                </featureArtifactDef-->
                                 <featureArtifactDef>
                                     org.wso2.carbon:org.wso2.carbon.captcha.mgt.server.feature:${carbon.version}
                                 </featureArtifactDef>
-                                <!--featureArtifactDef>
-                                    org.wso2.carbon:org.wso2.carbon.datasource.server.feature:${carbon.platform.patch.version.4.2.1}
-                                </featureArtifactDef>
-                                <featureArtifactDef>
-                                    org.wso2.carbon:org.wso2.carbon.transaction.manager.feature:${carbon.platform.patch.version.4.2.1}
-                                </featureArtifactDef-->
                                 <featureArtifactDef>
                                     org.wso2.carbon:org.wso2.carbon.service.mgt.server.feature:${carbon.platform.patch.version.4.2.1}
                                 </featureArtifactDef>
@@ -414,19 +389,6 @@
                                     org.wso2.carbon:org.wso2.carbon.rm.server.feature:${carbon.version}
                                 </featureArtifactDef>
                                 <featureArtifactDef>
-                                    org.apache.stratos:org.apache.stratos.manager.feature:${project.version}
-                                </featureArtifactDef>
-                                <featureArtifactDef>
-                                    org.apache.stratos:org.apache.stratos.rest.endpoint.feature:${project.version}
-                                </featureArtifactDef>
-                                <!-- Mock IaaS features -->
-                                <featureArtifactDef>
-                                    org.apache.stratos:org.apache.stratos.mock.iaas.api.feature:${project.version}
-                                </featureArtifactDef>
-                                <featureArtifactDef>
-                                    org.apache.stratos:org.apache.stratos.metadata.service.feature:${project.version}
-                                </featureArtifactDef>
-                                <featureArtifactDef>
                                     org.wso2.carbon:org.wso2.carbon.identity.authenticator.saml2.sso.server.feature:${carbon.platform.patch.version.4.2.1}
                                 </featureArtifactDef>
                                 <featureArtifactDef>
@@ -463,44 +425,16 @@
                                 <featureArtifactDef>org.jaggeryjs:org.jaggeryjs.feature:0.9.0.ALPHA4.wso2v3
                                 </featureArtifactDef>
                                 <featureArtifactDef>caramel:caramel.feature:1.0.1</featureArtifactDef>
-
                                 <featureArtifactDef>
                                     org.wso2.carbon:org.wso2.carbon.identity.application.authenticator.basicauth.server.feature:4.2.1
                                 </featureArtifactDef>
                                 <featureArtifactDef>
-                                    org.apache.stratos:org.apache.stratos.messaging.feature:${project.version}
-                                </featureArtifactDef>
-                                <featureArtifactDef>
-                                    org.apache.stratos:org.apache.stratos.autoscaler.feature:${project.version}
-                                </featureArtifactDef>
-                                <featureArtifactDef>
                                     org.wso2.carbon:org.wso2.carbon.logging.mgt.feature:${carbon.platform.patch.version.4.2.2}
                                 </featureArtifactDef>
                                 <featureArtifactDef>
-                                    org.apache.stratos:org.apache.stratos.cloud.controller.feature:${project.version}
-                                </featureArtifactDef>
-                                <!--featureArtifactDef>
-                                    org.wso2.carbon:org.wso2.carbon.datasource.server.feature:${carbon.version}
-                                </featureArtifactDef-->
-                                <!--featureArtifactDef>
-                                    org.wso2.carbon:org.wso2.carbon.mediation.initializer.feature:${carbon.version}
-                                </featureArtifactDef>
-                                <featureArtifactDef>
-                                    org.wso2.carbon:org.wso2.carbon.endpoint.server.feature:${carbon.version}
-                                </featureArtifactDef>
-                                <featureArtifactDef>
-                                    org.wso2.carbon:org.wso2.carbon.sequences.server.feature:${carbon.version}
-                                </featureArtifactDef>
-                                <featureArtifactDef>
-                                    org.wso2.carbon:org.wso2.carbon.mediators.server.feature:${carbon.version}
-                                </featureArtifactDef>
-                                <featureArtifactDef>
-                                    org.wso2.carbon:org.wso2.carbon.relay.server.feature:${carbon.version}
-                                </featureArtifactDef-->
-                                <!--User Management-->
-                                <featureArtifactDef>
                                     org.wso2.carbon:org.wso2.carbon.user.mgt.feature:${carbon.platform.patch.version.4.2.1}
                                 </featureArtifactDef>
+
                                 <!--CEP-->
                                 <featureArtifactDef>org.wso2.carbon:org.wso2.carbon.event.input.adaptor.feature:1.0.0
                                 </featureArtifactDef>
@@ -510,9 +444,6 @@
                                 </featureArtifactDef>
                                 <featureArtifactDef>org.wso2.carbon:org.wso2.carbon.event.formatter.feature:1.0.0
                                 </featureArtifactDef>
-                                <featureArtifactDef>
-                                    org.apache.stratos:org.apache.stratos.event.processor.feature:${project.version}
-                                </featureArtifactDef>
                                 <featureArtifactDef>org.wso2.carbon:org.wso2.carbon.event.tracer.feature:1.0.0
                                 </featureArtifactDef>
                                 <featureArtifactDef>org.wso2.carbon:org.wso2.carbon.event.statistics.feature:1.0.0
@@ -525,6 +456,7 @@
                                 <featureArtifactDef>
                                     org.wso2.carbon:org.wso2.carbon.databridge.streamdefn.registry.server.feature:${carbon.platform.version}
                                 </featureArtifactDef>
+
                                 <!--Cassandra-->
                                 <featureArtifactDef>
                                     org.wso2.carbon:org.wso2.carbon.cassandra.server.feature:${carbon.platform.version}
@@ -538,13 +470,48 @@
                                 <featureArtifactDef>
                                     org.wso2.carbon:org.wso2.carbon.cassandra.common.feature:${carbon.platform.version}
                                 </featureArtifactDef>
-                                <!-- Common features -->
+
+                                <!-- Stratos features -->
                                 <featureArtifactDef>
                                     org.apache.stratos:org.apache.stratos.metadata.client.feature:${project.version}
                                 </featureArtifactDef>
                                 <featureArtifactDef>
                                     org.apache.stratos:org.apache.stratos.custom.handlers.feature:${project.version}
                                 </featureArtifactDef>
+                                <featureArtifactDef>
+                                    org.apache.stratos:org.apache.stratos.event.processor.feature:${project.version}
+                                </featureArtifactDef>
+                                <featureArtifactDef>
+                                    org.apache.stratos:org.apache.stratos.messaging.feature:${project.version}
+                                </featureArtifactDef>
+                                <featureArtifactDef>
+                                    org.apache.stratos:org.apache.stratos.autoscaler.feature:${project.version}
+                                </featureArtifactDef>
+                                <featureArtifactDef>
+                                    org.apache.stratos:org.apache.stratos.cloud.controller.feature:${project.version}
+                                </featureArtifactDef>
+                                <featureArtifactDef>
+                                    org.apache.stratos:org.apache.stratos.manager.feature:${project.version}
+                                </featureArtifactDef>
+                                <featureArtifactDef>
+                                    org.apache.stratos:org.apache.stratos.rest.endpoint.feature:${project.version}
+                                </featureArtifactDef>
+                                <featureArtifactDef>
+                                    org.apache.stratos:org.apache.stratos.common.feature:${project.version}
+                                </featureArtifactDef>
+                                <featureArtifactDef>
+                                    org.apache.stratos:org.apache.stratos.manager.styles.feature:${project.version}
+                                </featureArtifactDef>
+                                <featureArtifactDef>
+                                    org.apache.stratos:org.apache.stratos.tenant.activity.server.feature:${project.version}
+                                </featureArtifactDef>
+                                <!-- Mock IaaS features -->
+                                <featureArtifactDef>
+                                    org.apache.stratos:org.apache.stratos.mock.iaas.api.feature:${project.version}
+                                </featureArtifactDef>
+                                <featureArtifactDef>
+                                    org.apache.stratos:org.apache.stratos.metadata.service.feature:${project.version}
+                                </featureArtifactDef>
                             </featureArtifacts>
                         </configuration>
                     </execution>
@@ -669,10 +636,6 @@
                                     <id>org.wso2.carbon.identity.sso.saml.feature.group</id>
                                     <version>${carbon.platform.patch.version.4.2.3}</version>
                                 </feature>
-                                <!--feature>
-                                    <id>org.apache.stratos.logging.mgt.feature.group</id>
-                                    <version>${carbon.platform.patch.version.4.2.2}</version>
-                                </feature-->
                                 <feature>
                                     <id>org.wso2.carbon.databridge.datapublisher.feature.group</id>
                                     <version>${carbon.platform.patch.version.4.2.1}</version>
@@ -746,6 +709,10 @@
                                     <version>${carbon.platform.patch.version.4.2.2}</version>
                                 </feature>
                                 <feature>
+                                    <id>org.wso2.carbon.identity.authenticator.saml2.sso.server.feature.group</id>
+                                    <version>${carbon.platform.patch.version.4.2.1}</version>
+                                </feature>
+                                <feature>
                                     <id>org.jaggeryjs.feature.group</id>
                                     <version>0.9.0.ALPHA4.wso2v3</version>
                                 </feature>
@@ -844,10 +811,6 @@
                                     <version>${project.version}</version>
                                 </feature>
                                 <feature>
-                                    <id>org.wso2.carbon.core.feature.group</id>
-                                    <version>${carbon.version}</version>
-                                </feature>
-                                <feature>
                                     <id>org.wso2.carbon.registry.core.feature.group</id>
                                     <version>${carbon.platform.patch.version.4.2.2}</version>
                                 </feature>
@@ -918,10 +881,6 @@
                                     <id>org.apache.stratos.cloud.controller.feature.group</id>
                                     <version>${project.version}</version>
                                 </feature>
-                                <!--feature>
-                                    <id>org.wso2.carbon.datasource.server.feature.group</id>
-                                    <version>${carbon.version}</version>
-                                </feature-->
                                 <feature>
                                     <id>org.wso2.carbon.service.mgt.server.feature.group</id>
                                     <version>${carbon.platform.patch.version.4.2.1}</version>
@@ -1036,10 +995,6 @@
                                     <id>org.wso2.store.feature.group</id>
                                     <version>${store.version}</version>
                                 </feature>
-                                <!--feature>
-                                    <id>org.wso2.carbon.logaggregator.feature.group</id>
-                                    <version>1.0.0</version>
-                                </feature-->
                                 <feature>
                                     <id>org.wso2.carbon.webapp.mgt.feature.group</id>
                                     <version>${carbon.deployment.version}</version>
@@ -1077,14 +1032,6 @@
                                     <version>${carbon.platform.patch.version.4.2.1}</version>
                                 </feature>
                                 <feature>
-                                    <id>org.apache.stratos.common.feature.group</id>
-                                    <version>${project.version}</version>
-                                </feature>
-                                <!--feature>
-                                    <id>org.wso2.carbon.transaction.manager.feature.group</id>
-                                    <version>${carbon.platform.patch.version.4.2.1}</version>
-                                </feature-->
-                                <feature>
                                     <id>org.wso2.carbon.transport.mgt.server.feature.group</id>
                                     <version>${carbon.version}</version>
                                 </feature>
@@ -1097,57 +1044,26 @@
                                     <version>${carbon.version}</version>
                                 </feature>
                                 <feature>
-                                    <id>org.apache.stratos.manager.styles.feature.group</id>
-                                    <version>${project.version}</version>
-                                </feature>
-                                <feature>
                                     <id>org.wso2.carbon.captcha.mgt.server.feature.group</id>
                                     <version>${carbon.version}</version>
                                 </feature>
-
-                                <!-- User Management features -->
                                 <feature>
                                     <id>org.wso2.carbon.user.mgt.feature.group</id>
                                     <version>${carbon.platform.patch.version.4.2.1}</version>
                                 </feature>
-
-                                <!-- GApp SSO features -->
                                 <feature>
                                     <id>org.wso2.carbon.identity.core.feature.group</id>
                                     <version>${carbon.platform.patch.version.4.2.3}</version>
                                 </feature>
-                                <!--End GApp SSO features -->
-
-                                <feature>
-                                    <id>org.apache.stratos.tenant.activity.server.feature.group</id>
-                                    <version>${project.version}</version>
-                                </feature>
-                                <feature>
-                                    <id>org.apache.stratos.manager.feature.group</id>
-                                    <version>${project.version}</version>
-                                </feature>
-                                <feature>
-                                    <id>org.apache.stratos.rest.endpoint.feature.group</id>
-                                    <version>${project.version}</version>
-                                </feature>
-                                <!-- Mock IaaS features -->
-                                <feature>
-                                    <id>org.apache.stratos.mock.iaas.api.feature.group</id>
-                                    <version>${project.version}</version>
-                                </feature>
-                                <feature>
-                                    <id>org.apache.stratos.metadata.service.feature.group</id>
-                                    <version>${project.version}</version>
-                                </feature>
-                                <feature>
-                                    <id>org.apache.stratos.messaging.feature.group</id>
-                                    <version>${project.version}</version>
-                                </feature>
                                 <feature>
                                     <id>org.wso2.carbon.identity.authenticator.saml2.sso.ui.feature.group</id>
                                     <version>${carbon.platform.patch.version.4.2.2}</version>
                                 </feature>
                                 <feature>
+                                    <id>org.wso2.carbon.identity.authenticator.saml2.sso.server.feature.group</id>
+                                    <version>${carbon.platform.patch.version.4.2.1}</version>
+                                </feature>
+                                <feature>
                                     <id>org.jaggeryjs.feature.group</id>
                                     <version>0.9.0.ALPHA4.wso2v3</version>
                                 </feature>
@@ -1199,12 +1115,6 @@
                                     <id>org.wso2.carbon.identity.core.feature.group</id>
                                     <version>4.2.3</version>
                                 </feature>
-                                <!--autoscalar-->
-                                <feature>
-                                    <id>org.apache.stratos.autoscaler.feature.group</id>
-                                    <version>${project.version}</version>
-                                </feature>
-                                <!--cloud controller-->
                                 <feature>
                                     <id>org.wso2.carbon.module.mgt.server.feature.group</id>
                                     <version>${carbon.version}</version>
@@ -1213,18 +1123,11 @@
                                     <id>org.wso2.carbon.logging.mgt.feature.group</id>
                                     <version>${carbon.platform.patch.version.4.2.2}</version>
                                 </feature>
-                                <!--feature>
-                                    <id>org.wso2.carbon.datasource.server.feature.group</id>
-                                    <version>${carbon.version}</version>
-                                </feature-->
                                 <feature>
                                     <id>org.wso2.carbon.service.mgt.server.feature.group</id>
                                     <version>${carbon.platform.patch.version.4.2.1}</version>
                                 </feature>
-                                <feature>
-                                    <id>org.apache.stratos.cloud.controller.feature.group</id>
-                                    <version>${project.version}</version>
-                                </feature>
+
                                 <!--CEP features-->
                                 <feature>
                                     <id>org.wso2.carbon.event.input.adaptor.feature.group</id>
@@ -1243,10 +1146,6 @@
                                     <version>1.0.0</version>
                                 </feature>
                                 <feature>
-                                    <id>org.apache.stratos.event.processor.feature.group</id>
-                                    <version>${project.version}</version>
-                                </feature>
-                                <feature>
                                     <id>org.wso2.carbon.event.tracer.feature.group</id>
                                     <version>1.0.0</version>
                                 </feature>
@@ -1266,6 +1165,7 @@
                                     <id>org.wso2.carbon.databridge.streamdefn.registry.server.feature.group</id>
                                     <version>${carbon.platform.version}</version>
                                 </feature>
+
                                 <!--Cassandra-->
                                 <feature>
                                     <id>org.wso2.carbon.cassandra.server.feature.group</id>
@@ -1283,17 +1183,63 @@
                                     <id>org.wso2.carbon.cassandra.common.feature.group</id>
                                     <version>${carbon.platform.version}</version>
                                 </feature>
+
+                                <!-- Stratos features -->
+                                <feature>
+                                    <id>org.apache.stratos.metadata.client.feature.group</id>
+                                    <version>${project.version}</version>
+                                </feature>
+                                <feature>
+                                    <id>org.apache.stratos.custom.handlers.feature.group</id>
+                                    <version>${project.version}</version>
+                                </feature>
                                 <feature>
                                     <id>org.apache.stratos.metadata.service.feature.group</id>
                                     <version>${project.version}</version>
                                 </feature>
-                                <!-- Common features -->
                                 <feature>
-                                    <id>org.apache.stratos.metadata.client.feature.group</id>
+                                    <id>org.apache.stratos.event.processor.feature.group</id>
                                     <version>${project.version}</version>
                                 </feature>
                                 <feature>
-                                    <id>org.apache.stratos.custom.handlers.feature.group</id>
+                                    <id>org.apache.stratos.cloud.controller.feature.group</id>
+                                    <version>${project.version}</version>
+                                </feature>
+                                <feature>
+                                    <id>org.apache.stratos.autoscaler.feature.group</id>
+                                    <version>${project.version}</version>
+                                </feature>
+                                <feature>
+                                    <id>org.apache.stratos.messaging.feature.group</id>
+                                    <version>${project.version}</version>
+                                </feature>
+                                <feature>
+                                    <id>org.apache.stratos.tenant.activity.server.feature.group</id>
+                                    <version>${project.version}</version>
+                                </feature>
+                                <feature>
+                                    <id>org.apache.stratos.manager.feature.group</id>
+                                    <version>${project.version}</version>
+                                </feature>
+                                <feature>
+                                    <id>org.apache.stratos.rest.endpoint.feature.group</id>
+                                    <version>${project.version}</version>
+                                </feature>
+                                <feature>
+                                    <id>org.apache.stratos.manager.styles.feature.group</id>
+                                    <version>${project.version}</version>
+                                </feature>
+                                <feature>
+                                    <id>org.apache.stratos.common.feature.group</id>
+                                    <version>${project.version}</version>
+                                </feature>
+                                <!-- Mock IaaS features -->
+                                <feature>
+                                    <id>org.apache.stratos.mock.iaas.api.feature.group</id>
+                                    <version>${project.version}</version>
+                                </feature>
+                                <feature>
+                                    <id>org.apache.stratos.metadata.service.feature.group</id>
                                     <version>${project.version}</version>
                                 </feature>
                             </features>