geode-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jinmeil...@apache.org
Subject [2/2] geode git commit: GEODE-2670: fixing pulse authentication/authorization issues
Date Fri, 17 Mar 2017 15:13:51 GMT
GEODE-2670: fixing pulse authentication/authorization issues


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

Branch: refs/heads/develop
Commit: 5b71c4b5b99a62063453535c9604df7e4be460fe
Parents: c3ebb4e
Author: Jinmei Liao <jiliao@pivotal.io>
Authored: Mon Mar 13 16:08:51 2017 -0700
Committer: Jinmei Liao <jiliao@pivotal.io>
Committed: Fri Mar 17 08:09:20 2017 -0700

----------------------------------------------------------------------
 .../tools/pulse/PulseVerificationTest.java      | 166 +++++
 .../tools/pulse/internal/data/Cluster.java      |   4 +-
 .../pulse/internal/data/JMXDataUpdater.java     |  46 +-
 .../tools/pulse/internal/data/Repository.java   |   3 +
 geode-pulse/src/main/webapp/DataBrowser.html    | 345 -----------
 geode-pulse/src/main/webapp/Login.html          | 114 ----
 geode-pulse/src/main/webapp/MemberDetails.html  | 603 -------------------
 .../src/main/webapp/QueryStatistics.html        | 308 ----------
 .../src/main/webapp/WEB-INF/spring-security.xml |  21 +-
 geode-pulse/src/main/webapp/dataBrowser.html    | 345 +++++++++++
 geode-pulse/src/main/webapp/index.html          |   2 +-
 geode-pulse/src/main/webapp/login.html          | 114 ++++
 geode-pulse/src/main/webapp/memberDetails.html  | 603 +++++++++++++++++++
 .../src/main/webapp/queryStatistics.html        | 308 ++++++++++
 .../src/main/webapp/scripts/lib/common.js       |   4 +-
 .../webapp/scripts/pulsescript/MemberDetails.js |   2 +-
 .../scripts/pulsescript/PulseCallbacks.js       |   2 +-
 .../webapp/scripts/pulsescript/clusterDetail.js |  12 +-
 .../scripts/pulsescript/clusterRGraphMembers.js |   6 +-
 .../main/webapp/scripts/pulsescript/common.js   |   2 +-
 .../scripts/pulsescript/pages/DataBrowser.js    |   2 +-
 .../pulsescript/pages/DataBrowserQuery.js       |   2 +-
 .../pages/DataBrowserQueryHistory.js            |   2 +-
 .../webapp/scripts/pulsescript/regionView.js    |   4 +-
 .../tools/pulse/tests/rules/WebDriverRule.java  |   3 +-
 .../pulse/tests/ui/PulseAnonymousUserTest.java  |   2 +-
 26 files changed, 1591 insertions(+), 1434 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/geode/blob/5b71c4b5/geode-assembly/src/test/java/org/apache/geode/tools/pulse/PulseVerificationTest.java
----------------------------------------------------------------------
diff --git a/geode-assembly/src/test/java/org/apache/geode/tools/pulse/PulseVerificationTest.java b/geode-assembly/src/test/java/org/apache/geode/tools/pulse/PulseVerificationTest.java
new file mode 100644
index 0000000..5771125
--- /dev/null
+++ b/geode-assembly/src/test/java/org/apache/geode/tools/pulse/PulseVerificationTest.java
@@ -0,0 +1,166 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package org.apache.geode.tools.pulse;
+
+import static org.apache.geode.distributed.ConfigurationProperties.HTTP_SERVICE_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_MANAGER;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.apache.geode.internal.AvailablePortHelper;
+import org.apache.geode.security.SimpleTestSecurityManager;
+import org.apache.geode.test.dunit.rules.LocatorStarterRule;
+import org.apache.geode.test.junit.categories.IntegrationTest;
+import org.apache.http.HttpHost;
+import org.apache.http.HttpResponse;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.protocol.BasicHttpContext;
+import org.apache.http.protocol.HttpContext;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+
+@Category(IntegrationTest.class)
+public class PulseVerificationTest {
+
+  @ClassRule
+  public static LocatorStarterRule locatorStarterRule = new LocatorStarterRule();
+
+  private static int httpPort = AvailablePortHelper.getRandomAvailableTCPPort();
+
+  // use a random port when fixing GEODE-2671
+  private static int jmxPort = 1099; // AvailablePortHelper.getRandomAvailableTCPPort();
+
+  private static HttpHost host;
+
+  private HttpClient httpClient;
+  private HttpContext context;
+
+  @BeforeClass
+  public static void beforeClass() throws Exception {
+    Properties properties = new Properties();
+    properties.setProperty(HTTP_SERVICE_PORT, httpPort + "");
+    properties.setProperty(SECURITY_MANAGER, SimpleTestSecurityManager.class.getName());
+    properties.setProperty(JMX_MANAGER_PORT, jmxPort + "");
+
+    locatorStarterRule.startLocator(properties);
+    host = new HttpHost("localhost", httpPort);
+  }
+
+  @Before
+  public void before() throws Exception {
+    httpClient = HttpClients.createDefault();
+    context = new BasicHttpContext();
+  }
+
+  @Test
+  public void loginWithIncorrectPassword() throws Exception {
+    HttpPost request = new HttpPost("/pulse/login");
+    List<NameValuePair> nvps = new ArrayList<>();
+    nvps.add(new BasicNameValuePair("username", "data"));
+    nvps.add(new BasicNameValuePair("password", "wrongPassword"));
+    request.setEntity(new UrlEncodedFormEntity(nvps));
+    HttpResponse response = httpClient.execute(host, request, context);
+    assertThat(response.getStatusLine().getStatusCode()).isEqualTo(302);
+    assertThat(response.getFirstHeader("Location").getValue())
+        .contains("/pulse/login.html?error=BAD_CREDS");
+  }
+
+  @Test
+  public void loginWithDataOnly() throws Exception {
+    HttpPost post = new HttpPost("/pulse/login");
+    List<NameValuePair> nvps = new ArrayList<>();
+    nvps.add(new BasicNameValuePair("username", "data"));
+    nvps.add(new BasicNameValuePair("password", "data"));
+    post.setEntity(new UrlEncodedFormEntity(nvps));
+
+    HttpResponse response = httpClient.execute(host, post, context);
+    assertThat(response.getStatusLine().getStatusCode()).isEqualTo(302);
+    assertThat(response.getFirstHeader("Location").getValue())
+        .contains("/pulse/clusterDetail.html");
+
+    // this would requiest cluster permission
+    HttpGet get = new HttpGet("/pulse/clusterDetail.html");
+    response = httpClient.execute(host, get);
+    assertThat(response.getStatusLine().getStatusCode()).isEqualTo(403);
+
+    // this would require both cluster and data permission
+    get = new HttpGet("/pulse/dataBrowser.html");
+    response = httpClient.execute(host, get);
+    assertThat(response.getStatusLine().getStatusCode()).isEqualTo(403);
+  }
+
+
+  @Test
+  public void loginAllAccess() throws Exception {
+    HttpPost post = new HttpPost("/pulse/login");
+    List<NameValuePair> nvps = new ArrayList<>();
+    nvps.add(new BasicNameValuePair("username", "CLUSTER,DATA"));
+    nvps.add(new BasicNameValuePair("password", "CLUSTER,DATA"));
+    post.setEntity(new UrlEncodedFormEntity(nvps));
+
+    HttpResponse response = httpClient.execute(host, post, context);
+    assertThat(response.getStatusLine().getStatusCode()).isEqualTo(302);
+    assertThat(response.getFirstHeader("Location").getValue())
+        .contains("/pulse/clusterDetail.html");
+
+    HttpGet get = new HttpGet("/pulse/clusterDetail.html");
+    response = httpClient.execute(host, get);
+    assertThat(response.getStatusLine().getStatusCode()).isEqualTo(200);
+
+    get = new HttpGet("/pulse/dataBrowser.html");
+    response = httpClient.execute(host, get);
+    assertThat(response.getStatusLine().getStatusCode()).isEqualTo(200);
+  }
+
+  @Test
+  public void loginWithClusterOnly() throws Exception {
+    HttpPost post = new HttpPost("/pulse/login");
+    List<NameValuePair> nvps = new ArrayList<>();
+    nvps.add(new BasicNameValuePair("username", "cluster"));
+    nvps.add(new BasicNameValuePair("password", "cluster"));
+    post.setEntity(new UrlEncodedFormEntity(nvps));
+
+    HttpResponse response = httpClient.execute(host, post, context);
+    assertThat(response.getStatusLine().getStatusCode()).isEqualTo(302);
+    assertThat(response.getFirstHeader("Location").getValue())
+        .contains("/pulse/clusterDetail.html");
+
+    HttpGet get = new HttpGet("/pulse/clusterDetail.html");
+    response = httpClient.execute(host, get);
+    assertThat(response.getStatusLine().getStatusCode()).isEqualTo(200);
+
+    // accessing data browser will be denied
+    get = new HttpGet("/pulse/dataBrowser.html");
+    response = httpClient.execute(host, get);
+    assertThat(response.getStatusLine().getStatusCode()).isEqualTo(403);
+  }
+
+
+}

http://git-wip-us.apache.org/repos/asf/geode/blob/5b71c4b5/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/Cluster.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/Cluster.java b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/Cluster.java
index 432834a..083731b 100644
--- a/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/Cluster.java
+++ b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/Cluster.java
@@ -21,11 +21,10 @@ import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
+import org.apache.commons.collections.buffer.CircularFifoBuffer;
 import org.apache.geode.tools.pulse.internal.log.PulseLogWriter;
 import org.apache.geode.tools.pulse.internal.util.StringUtils;
-import org.apache.commons.collections.buffer.CircularFifoBuffer;
 
-import javax.management.remote.JMXConnector;
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileInputStream;
@@ -54,6 +53,7 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
+import javax.management.remote.JMXConnector;
 
 /**
  * Class Cluster This class is the Data Model for the data used for the Pulse Web UI.

http://git-wip-us.apache.org/repos/asf/geode/blob/5b71c4b5/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/JMXDataUpdater.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/JMXDataUpdater.java b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/JMXDataUpdater.java
index 5c30501..758ad4b 100644
--- a/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/JMXDataUpdater.java
+++ b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/JMXDataUpdater.java
@@ -19,30 +19,10 @@ package org.apache.geode.tools.pulse.internal.data;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.apache.geode.tools.pulse.internal.controllers.PulseController;
 import org.apache.geode.tools.pulse.internal.data.JmxManagerFinder.JmxManagerInfo;
 import org.apache.geode.tools.pulse.internal.log.PulseLogWriter;
 import org.apache.geode.tools.pulse.internal.util.StringUtils;
 
-import javax.management.Attribute;
-import javax.management.AttributeList;
-import javax.management.AttributeNotFoundException;
-import javax.management.InstanceNotFoundException;
-import javax.management.IntrospectionException;
-import javax.management.InvalidAttributeValueException;
-import javax.management.MBeanException;
-import javax.management.MBeanServerConnection;
-import javax.management.MalformedObjectNameException;
-import javax.management.Notification;
-import javax.management.NotificationListener;
-import javax.management.ObjectName;
-import javax.management.ReflectionException;
-import javax.management.openmbean.CompositeData;
-import javax.management.openmbean.TabularData;
-import javax.management.remote.JMXConnector;
-import javax.management.remote.JMXConnectorFactory;
-import javax.management.remote.JMXServiceURL;
-import javax.rmi.ssl.SslRMIClientSocketFactory;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
@@ -63,6 +43,25 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.ResourceBundle;
 import java.util.Set;
+import javax.management.Attribute;
+import javax.management.AttributeList;
+import javax.management.AttributeNotFoundException;
+import javax.management.InstanceNotFoundException;
+import javax.management.IntrospectionException;
+import javax.management.InvalidAttributeValueException;
+import javax.management.MBeanException;
+import javax.management.MBeanServerConnection;
+import javax.management.MalformedObjectNameException;
+import javax.management.Notification;
+import javax.management.NotificationListener;
+import javax.management.ObjectName;
+import javax.management.ReflectionException;
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.TabularData;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+import javax.management.remote.JMXServiceURL;
+import javax.rmi.ssl.SslRMIClientSocketFactory;
 
 /**
  * Class JMXDataUpdater Class used for creating JMX connection and getting all the required MBeans
@@ -78,8 +77,6 @@ public class JMXDataUpdater implements IClusterUpdater, NotificationListener {
   private MBeanServerConnection mbs;
   private final String serverName;
   private final String port;
-  private final String userName;
-  private final String userPassword;
   private Boolean isAddedNotiListner = false;
   private final Cluster cluster;
 
@@ -104,8 +101,6 @@ public class JMXDataUpdater implements IClusterUpdater, NotificationListener {
   public JMXDataUpdater(String server, String port, Cluster cluster) {
     this.serverName = server;
     this.port = port;
-    this.userName = cluster.getJmxUserName();
-    this.userPassword = cluster.getJmxUserPassword();
     this.cluster = cluster;
 
     try {
@@ -129,7 +124,6 @@ public class JMXDataUpdater implements IClusterUpdater, NotificationListener {
         LOGGER.severe(e.getMessage(), e);
       }
     }
-
   }
 
   private JmxManagerInfo getManagerInfoFromLocator(Repository repository) {
@@ -242,7 +236,7 @@ public class JMXDataUpdater implements IClusterUpdater, NotificationListener {
 
       if (StringUtils.isNotNullNotEmptyNotWhiteSpace(jmxSerURL)) {
         JMXServiceURL url = new JMXServiceURL(jmxSerURL);
-        String[] creds = {this.userName, this.userPassword};
+        String[] creds = {this.cluster.getJmxUserName(), this.cluster.getJmxUserPassword()};
         Map<String, Object> env = new HashMap<String, Object>();
         env.put(JMXConnector.CREDENTIALS, creds);
 

http://git-wip-us.apache.org/repos/asf/geode/blob/5b71c4b5/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/Repository.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/Repository.java b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/Repository.java
index 61e967b..b228e4a 100644
--- a/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/Repository.java
+++ b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/Repository.java
@@ -200,6 +200,9 @@ public class Repository {
             LOGGER.fine(e.getMessage());
           }
         }
+      } else {
+        data.setJmxUserPassword(password);
+
       }
       return data;
     }

http://git-wip-us.apache.org/repos/asf/geode/blob/5b71c4b5/geode-pulse/src/main/webapp/DataBrowser.html
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/webapp/DataBrowser.html b/geode-pulse/src/main/webapp/DataBrowser.html
deleted file mode 100644
index dac5a4d..0000000
--- a/geode-pulse/src/main/webapp/DataBrowser.html
+++ /dev/null
@@ -1,345 +0,0 @@
-<!DOCTYPE html>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta http-equiv="X-UA-Compatible" content="IE=edge" />
-<meta http-equiv="CACHE-CONTROL" content="NO-CACHE,NO-STORE" />
-<meta http-equiv="PRAGMA" content="NO-CACHE" />
-<meta http-equiv="EXPIRES" content="-1">
-<title>Pulse</title>
-<link href="css/common.css" rel="stylesheet" type="text/css" />
-<link href="css/style.css" rel="stylesheet" type="text/css" />
-
-<!-- fix IE Ui issues-->
-<!--[if IE 7]>
-                <link href="css/ie/ie7.css" type="text/css" rel="stylesheet"/>
-         <![endif]-->
-<!--[if IE 8]>
-                <link href="css/ie/ie8.css" type="text/css" rel="stylesheet"/>
-         <![endif]-->
-<!--[if IE 9]>
-                <link href="css/ie/ie9.css" type="text/css" rel="stylesheet"/>
-         <![endif]-->
-<!-- IE Fix for HTML5 Tags -->
-<!--[if lt IE 9]>
-        <script src='scripts/lib/html5.js'></script>
-        <script type="text/javascript" src="scripts/lib/excanvas.js"></script>
-        <script type="text/javascript"> if (!window.console) console = {log: function() {}}; </script>
-                <![endif]-->
-
-<script type="text/javascript" src='scripts/lib/jquery-1.7.2.js'></script>
-<script type="text/javascript" src='scripts/lib/common.js'></script>
-
-<!--Splitter-->
-<script src="scripts/lib/split.js"></script>
-
-<!--Custom Scroll Bar-->
-<!-- styles needed by jScrollPane - include in your own sites -->
-<link type="text/css" href="css/jquery.jscrollpane.css" rel="stylesheet"
-	media="all" />
-<!-- the mousewheel plugin -->
-<script type="text/javascript" src="scripts/lib/jquery.mousewheel.js"></script>
-<!-- the jScrollPane script -->
-<script type="text/javascript" src="scripts/lib/jquery.jscrollpane.js"></script>
-<!--Place Holder tag-->
-<script type="text/javascript" src="scripts/lib/jquery.placeholder.js"></script>
-
-<!-- Grid view CSS and js-->
-<link rel="stylesheet" type="text/css" media="screen" href="css/grid/ui.jqgrid.css" />
-<script src="scripts/lib/grid.locale-en.js" type="text/javascript"></script>
-<script src="scripts/lib/jquery.jqGrid.src.js" type="text/javascript"></script>
-<script src="scripts/lib/jquery.tablednd.js" type="text/javascript"></script>
-<!-- -->
-<!--Tree View-->
-<link type="text/css" href="css/treeView/Treemap.css" rel="stylesheet" />
-<script type="text/javascript" src="scripts/lib/jit.js"></script>
-
-<!-- popups-->
-<link href="css/popup.css" rel="stylesheet" type="text/css" />
-<!-- Treeview JSON -->
-<script type="text/javascript" src="scripts/lib/jquery.ztree.core-3.5.js"></script>
-<script type="text/javascript" src="scripts/lib/jquery.ztree.excheck-3.5.js"></script>
-<link rel="stylesheet" href="css/jquery.ztreestyle.css" type="text/css">
-
-<!-- jQuery plugin to support automatically updating fuzzy timestamps 
-(e.g. "4 minutes ago" or "about 1 day ago") -->
-<script type="text/javascript" src="scripts/lib/jquery.timeago.js"></script>
-
-<!-- start:Data Browser widget based js files -->
-<script type="text/javascript" src="scripts/pulsescript/PulseCallbacks.js"></script>
-<script type="text/javascript" src="scripts/pulsescript/PulseFunctions.js"></script>
-<script type="text/javascript" src='scripts/pulsescript/common.js'></script>
-<!-- end:Data Browser widget based js files -->
-
-<!-- end:Data Browser Page JS files -->
-
-<script type="text/javascript" src="scripts/pulsescript/pages/DataBrowser.js"></script>
-<script type="text/javascript" src="scripts/pulsescript/pages/DataBrowserQuery.js"></script>
-<script type="text/javascript" src="scripts/pulsescript/pages/DataBrowserQueryHistory.js"></script>
-
-<!-- Jquery based plugin for exporting data to a file -->
-<script type="text/javascript" src="scripts/lib/jquery.generateFile.js"></script>
-
-</head>
-
-<body>
-	<!-- Connection lost-->
-	<div class="connectionLostMasterBlock hide" id="connectionStatusDiv">
-		<div class="connectionLostInnerBlock">
-			<label class="left">Connecting ...</label>
-			<div class="clear"></div>
-			<div id="connectionErrorMsgDiv" class="right"></div>
-		</div>
-	</div>
-
-	<div id="canvasWidth">
-		<!--Top Links-->
-		<div class="headerTopLinksMaster">
-			<div class="right">
-				<div class="left position-relative"><a href="#." class="left headerTopLinks aboutClicked-Off">About</a>
-					<!-- About Dropdown-->
-	        <div id="detailsAbout" class="aboutBlock display-none">
-	          <div class="aboutDetailsBlock">
-	            <div class="left widthfull-100per marginBottom30">
-	              <div class="left"><img src="images/about-geode.png">
-	                <div>
-	                 <div class="aboutVersionBlock left" id="pulseVersion"></div>
-	                 <div class="left termsBlock">&nbsp;<a id="pulseVersionDetailsLink" href="#dialog1" class="display-none" >Version Details</a></div>
-	                </div>
-	              </div>
-	              <div class="right aboutText">The Pulse tool monitors Apache Geode system in real time. It provides health information, detailed operational and configuration data, system alerts, throughput performance and statistics for system members and connected clients.</div>
-	            </div>
-				  <div class="left widthfull-100per copyright">
-					  <p>Apache Geode<br>
-						  Copyright 2016 The Apache Software Foundation.</p>
-					  <p>&nbsp;</p>
-					  <p>This product includes software developed at
-						  The Apache Software Foundation (http://www.apache.org/).</p>
-				  </div>
-	            </div>
-	        </div>
-				</div>
-				<div class="left headerTopSeperator"></div>
-	      <div class="left"><a target="_blank" href="http://geode.apache.org/docs/guide/tools_modules/pulse/chapter_overview.html" class="left headerTopLinks">Help</a></div>
-	      <div class="left headerTopSeperator"></div>
-	      <div class="left headerTopLinks welcomeLabelPRZero">Welcome</div>
-	      <div class="left headerTopLinks textbold font-size12" id="userName"></div>
-	      <div class="left headerTopSeperator"></div>
-	      <div class="left"><a href="clusterLogout" class="left headerTopLinks">Sign Out</a></div>
-			</div>
-		</div>
-		<!-- Header block-->
-		<header>
-      <div class="left">
-        <a id="clusterNameLink" href="#." class="left textbold HeaderLink HeaderLinkActive" onclick="openClusterDetail();">Cluster View</a>
-      </div>
-			<div class="textbold right logoBlock">
-				<img src="images/apache_geode_logo.png"/><a href="#.">[LOGO]</a>
-			</div>
-		</header>
-		<div class="clear"></div>
-		<div class="subHeader">
-		<ul>
-			<li><a href="#." onclick="openClusterDetail();">Cluster View</a></li>
-			<li><a href="#." class="active" onclick="openDataBrowser();">Data Browser</a></li>
-			<!-- Hide Query Statistics tab for gemfire -->
-			<li id="subTabQueryStatistics"><a href="#." onclick="openQueryStatistics();">Query Statistics</a></li>
-		</ul>
-		<div class="clear"></div>
-		</div>
-		<!-- Middle block-->
-		<div class="left widthfull-100per">
-			<!--Top Right Block 1-->
-			<div class="right widthfull-100per marginTB10">
-                            
-				<!-- Tab-->
-				<div id="notificationsPanel" class="right marginL10 TabTopPanel position-relative" 
-				data-role="widget" data-widgetid="CluserAlertNotification" data-active ="yes" data-timeline="5000">
-				</div>
-				<!--   <div class="right marginL10"><a href="dataView.html" class="left linkButton">Cluster View</a></div>-->
-				<div class="left position-relative breadCrumbs">
-					<label class="font-size20">Data Browser</label>
-				</div>
-			</div>
-			<!--Middle Block 1-->
-			<div class="left leftBlockCanvas">
-				<!-- Splitter Master-->
-						<div id="widget">
-							<!-- Left splitter-->
-							<div id="leftBlock" class="split split-horizontal">
-								<div id="dataRegion" class="split split-vertical">
-								  <div class="rightInnerBlocks">
-								    <a class="active" href="#.">Data Regions</a>
-								  </div>
-									<!-- Search Block 1-->
-									<div class="left widthfull-100per canvasBlockInnerBlock">
-										<!-- Search-->
-										<div class="regionNameSearch position-relative">
-											<div class="searchBlockRegion">
-												<input type="button" class="searchButtonRegion"> <input
-													type="text" id="filterTextRegion" placeholder="Type a Name"
-													class="searchBoxRegion" onKeyUp="applyFilterOnRegions();">
-											</div>
-										</div>
-									</div>
-									<!-- Block 2-->
-									<div class="pointGridHeading">
-										<a id="linkColocatedRegions" href="#." 
-										  class="colocatedRegionsLink disabledLink" 
-										  onclick="showColocatedRegions();">Colocated Regions</a>
-										<a id="linkAllRegions" href="#." 
-										  class="colocatedRegionsLink disabledLink"
-										  onclick="showAllRegions();">All Regions</a>
-										<input type="hidden" id="selectedRegion" value=""/>
-									</div>
-									<!-- Block 3 with scroll-->
-									<div class="ScrollPaneBlock leftSliderScrollRegion">
-										<div class="splitterScrollRegionInnerBlock">
-											<!-- Tree View-->
-											<ul id="treeDemo" class="ztree">
-											</ul>
-										</div>
-										<div style="clear: both"></div>
-									</div>
-								</div>
-								<!-- Members List Block-->
-								<div id="regionMember" class="split split-vertical">
-								  <div class="rightInnerBlocks btm_pnl">
-								    <a href="#." class="active">Region Members</a>
-								  </div>
-								  <div class="ScrollPaneBlock leftSliderScrollMembers" style="background:#132634;">
-								    <div class="splitterScrollMembersInnerBlock">
-								      <ul id="membersList">
-								      </ul>
-								    </div>
-								    <div style="clear:both"></div>
-								  </div>
-								</div>
-							</div>
-							<!--Right splitter -->
-							<div id="rightBlock" class="split split-horizontal">
-								<!-- Tab links-->
-								<div class="rightInnerBlocks ">
-								  <a href="#." class="active">Queries</a>
-								</div>
-								<!-- Query Block-->
-								<div class="queryMasterBlock">
-								  <a href="#." class="historyClicked-Off" id="historyIcon">History</a>
-                                  <!-- Query Block-->
-                                  <div class="queryHistoryScroll-pane" id="detailsHistory">
-                                  <div id="detailsHistoryList"></div>
-                                  </div>
-									<div class="queryInnerBlock queriesblock marginTB15-10">
-										<div class="queryHistoryBlock">
-											<label class="queryBlocklabel">Query Editor</label> 
-										</div>
-										<div class="quertTextaremargin textareadiv">
-											<!-- Textarea-->
-											<textarea class="queryTextarea" id="dataBrowserQueryText" onkeyup="onQueryTextChange();"
-												placeholder="Write query here"></textarea>
-											<!-- Buttons-->
-											
-										</div>
-										<input type="reset" value="Clear" class="right buttonCss blue" onclick="clearDBQuery()">
-                                        <input type="button" id="btnExecuteQuery" disabled="disabled" value="Execute" class="right buttonCss grey" onclick="executeDBQuery()">
-									</div>
-								</div>
-								<div class="queryInnerBlock marginBottomResult">
-									<label class="queryBlocklabel marginResult left">Result</label>
-									<div id="loaderSymbolWrapper" class="loaderParent">
-									  <div id="loadingSymbol" class="loader"></div>
-									</div>
-								</div>
-								<div class="ScrollPaneBlock" style="height: 460px;">
-									<div class="expCollMaster">
-										<!-- Accordion-->
-										<div class="accordion" id="memberAccordion">
-										</div>
-										<div style="clear: both"></div>
-									</div>
-								</div>
-								<div class="quertTextaremargin">
-									<!-- Buttons-->
-									<input type="button" value="Export Result"
-										class="right buttonCss blue" onclick="exportResult();">
-								</div>
-							</div>
-						</div>
-					</div>
-		</div>
-	</div>
-	<!--Popups Block-->
-	<div id="boxes">
-		<!-- Version Details popup-->
-		<div id="dialog1" class="window width345">
-			<div class="popup_heading">
-				<span>Version Details</span><a href="#" class="closePopup">&nbsp;</a>
-			</div>
-			<div class="popup_contentBlock">
-				<div class="popup-innerblock">
-					<ul class="widthfull-100per left">
-						<li class="left widthfull-100per"><label
-							class="width-40 display-inline-block">Pulse Version:</label> <label
-							class="width-58 display-inline-block" id="pulseVer"></label></li>
-						<li class="left widthfull-100per"><label
-							class="width-40 display-inline-block">Build Id:</label> <label
-							class="width-58 display-inline-block" id="buildId"></label></li>
-						<li class="left widthfull-100per"><label
-							class="width-40 display-inline-block">Build Date:</label> <label
-							class="width-58 display-inline-block" id="buildDate"></label></li>
-						<li class="left widthfull-100per"><label
-							class="width-40 display-inline-block">Source Date:</label> <label
-							class="width-58 display-inline-block" id="sourceDate"></label></li>
-						<li class="left widthfull-100per"><label
-							class="width-40 display-inline-block">Source Revision:</label> <label
-							class="width-58 display-inline-block" id="sourceRevision"></label>
-						</li>
-						<li class="left widthfull-100per"><label
-							class="width-40 display-inline-block">Source Repository:</label>
-							<label class="width-58 display-inline-block"
-							id="sourceRepository"></label></li>
-					</ul>
-					<div class="clear"></div>
-				</div>
-			</div>
-		</div>
-  <!-- Grid Details popup-->
-  <div id="gridPopup" class="window width700" >
-    <div class="popup_heading"><span>Object Explorer</span><a href="#" class="closePopup">&nbsp;</a></div>
-    <div class="popup_contentBlock">
-      <div class="popup-innerblock">
-        <table id="treegrid"><tr><td/></tr></table>
-      </div>
-      <div class="popup-innerblock">
-        <table id="popUpExplorer"><tr><td/></tr></table>
-      </div>
-    </div>
-  </div>
-		<!-- Mask to cover the whole screen -->
-		<div id="mask"></div>
-	</div>
-	<div id="tooltip" class="tooltip"></div>
-	<!-- Placeholder-->
-	<script>
-$('input[placeholder], textarea[placeholder]').placeholder();
-</script>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/geode/blob/5b71c4b5/geode-pulse/src/main/webapp/Login.html
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/webapp/Login.html b/geode-pulse/src/main/webapp/Login.html
deleted file mode 100644
index f093e38..0000000
--- a/geode-pulse/src/main/webapp/Login.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<!doctype html>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<meta http-equiv="X-UA-Compatible" content="IE=edge" />
-<meta http-equiv="CACHE-CONTROL" content="NO-CACHE,NO-STORE" />
-<meta http-equiv="PRAGMA" content="NO-CACHE" />
-<meta http-equiv="EXPIRES" content="-1">
-<title>Pulse</title>
-
-<!--  CSS Files -->
-<link href="css/common.css" rel="stylesheet" type="text/css" />
-<link href="css/style.css" rel="stylesheet" type="text/css" />
-<!-- fix IE Ui issues-->
-<!--[if IE]>
-    <link href="css/ie/ie.css" type="text/css" rel="stylesheet"/>
- <![endif]-->
-<!--[if IE 7]>
-  <link href="css/ie/ie7.css" type="text/css" rel="stylesheet"/>
- <![endif]-->
-<!--[if IE 8]>
-  <link href="css/ie/ie8.css" type="text/css" rel="stylesheet"/>
- <![endif]-->
-<!--[if IE 9]>
-  <link href="css/ie/ie9.css" type="text/css" rel="stylesheet"/>
- <![endif]-->
-<!--  END CSS FILES -->
-
-<!-- JS FILES -->
-<!-- IE Fix for HTML5 Tags -->
-<!--[if lt IE 9]>
-<script src='js/html5.js'></script>
-  <![endif]-->
-<script type="text/javascript" src="scripts/lib/jquery-1.7.2.js"></script>
-<script type="text/javascript" src="scripts/lib/jquery.i18n.properties.js"></script>
-<script type="text/javascript" src="scripts/pulsescript/PulseCallbacks.js"></script>
-<script type="text/javascript" src="scripts/pulsescript/PulseFunctions.js"></script>
-<script type="text/javascript" src="scripts/pulsescript/common.js"></script>
-<script type="text/javascript" src="scripts/pulsescript/pages/Login.js"></script>
-
-<!--Place Holder tag-->
-<script type="text/javascript" src="scripts/lib/jquery.placeholder.js"></script>
-<!-- END JS FILES -->
-
-<script type="text/javascript">
-$(function(){
-  $("#loginForm").submit(function(){
-    if(!validate()) 
-      return false;
-  });
-});
-</script>
-</head>
-
-<body onload="pageOnLoad();" class="bodyLoginBg">
-<div id="loginWidth"> 
-  <!-- Header block-->
-  <header>
-    <div class="textbold right logoBlock"><img src="images/apache_geode_logo.png"/><a href="#.">[LOGO]</a></div>
-  </header>
-  <div class="clear"></div>
-  <!-- Middle block-->
-  <div class="loginMasterBlock">
-    <div class="pulseBottomSpace"><img src="images/about-geode.png">
-      <div class="text-center" id="pulseVersion"></div>
-    </div>
-    <!-- error Block-->
-    <div id="errorMasterBlock" class="errorMasterBlock" style="display:none;">
-      <div id="errorText" class="errorInnerIcon"> </div>
-    </div>
-    <div class="loginInnerBlock">
-    <form method="POST" action="login" name="loginForm" id="loginForm" autocomplete="off">
-      <input class="inputUserName" type="text" name="username" id="user_name"  placeholder="Username" autofocus="autofocus" autocomplete="off">
-      <input style="display:none;" type="password" id="fool_password" autocomplete="off">
-      <input class="inputPassword" type="password" name="password" id="user_password" placeholder="Password" autocomplete="off">
-      <!-- Locator host and port are removed for a time -->
-      <!-- <input class="inputUserName" type="text" name="locator_host" id="locator_host" placeholder="Host">
-      <input class="inputUserName" type="text" name="locator_port" id="locator_port" placeholder="Port">-->
-      <input type="submit" value="Sign In" class="signInButton">
-    </form>
-    </div>
-    <br>
-    <div class="left widthfull-100per copyright">
-      <p>Apache Geode<br>
-        Copyright 2016 The Apache Software Foundation.</p>
-      <p>&nbsp;</p>
-      <p>This product includes software developed at
-        The Apache Software Foundation (http://www.apache.org/).</p>
-    </div>
-  </div>
-</div>
-<!-- Placeholder--> 
-<script>
-$('input[placeholder], textarea[placeholder]').placeholder();
-</script>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/geode/blob/5b71c4b5/geode-pulse/src/main/webapp/MemberDetails.html
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/webapp/MemberDetails.html b/geode-pulse/src/main/webapp/MemberDetails.html
deleted file mode 100644
index 18a5eac..0000000
--- a/geode-pulse/src/main/webapp/MemberDetails.html
+++ /dev/null
@@ -1,603 +0,0 @@
-<!DOCTYPE HTML>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta http-equiv="X-UA-Compatible" content="IE=edge" />
-<meta http-equiv="CACHE-CONTROL" content="NO-CACHE,NO-STORE" />
-<meta http-equiv="PRAGMA" content="NO-CACHE" />
-<meta http-equiv="EXPIRES" content="-1">
-<title>Pulse</title>
-<link href="css/common.css" rel="stylesheet" type="text/css" />
-<link href="css/style.css" rel="stylesheet" type="text/css" />
-
-<!-- fix IE Ui issues-->
-
-<!--[if IE 7]>
-  <link href="css/ie/ie7.css" type="text/css" rel="stylesheet"/>
- <![endif]-->
-<!--[if IE 8]>
-  <link href="css/ie/ie8.css" type="text/css" rel="stylesheet"/>
- <![endif]-->
-<!--[if IE 9]>
-  <link href="css/ie/ie9.css" type="text/css" rel="stylesheet"/>
- <![endif]-->
-<!-- IE Fix for HTML5 Tags -->
-<!--[if lt IE 9]>
-<script src='scripts/lib/html5.js'></script>
-  <script type="text/javascript" src="scripts/lib/excanvas.js"></script>
-  <script type="text/javascript"> if (!window.console) console = {log: function() {}}; </script>
-  <![endif]-->
-  
-<!-- Rgraph and TreeMap-->
-<link type="text/css" href="css/base.css" rel="stylesheet" />
-<link type="text/css" href="css/Treemap.css" rel="stylesheet" />
-
-<!--Custom Scroll Bar-->
-<!-- styles needed by jScrollPane - include in your own sites -->
-<link type="text/css" href="css/jquery.jscrollpane.css" rel="stylesheet" media="all" />
-<!--Grid View-->
-<link rel="stylesheet" type="text/css" media="screen" href="css/grid/ui.jqgrid.css" />
-
-<!-- JavaScripts -->
-
-  <!-- Start: JQuery plugins JS -->
-  <script type="text/javascript" src='scripts/lib/jquery-1.7.2.js'></script>
-  <script type="text/javascript" src="scripts/lib/jit.js"></script>
-  <script type="text/javascript" src="scripts/lib/jquery.sparkline.js"></script>
-  <script type="text/javascript" src="scripts/lib/jquery.i18n.properties.js"></script>
-  <!-- End: JQuery plugins JS -->
-  
-  <!-- Start: Common JS -->
-  <script type="text/javascript" src='scripts/lib/common.js'></script>
-  <!-- End: Common JS -->
-
-	<!-- the mousewheel plugin -->
-	<script type="text/javascript" src="scripts/lib/jquery.mousewheel.js"></script>
-	<!-- the jScrollPane script -->
-	<script type="text/javascript" src="scripts/lib/jquery.jscrollpane.js"></script>
-	<!--Place Holder tag-->
-	<script type="text/javascript" src="scripts/lib/jquery.placeholder.js"></script>
-	<!--Grid View-->
-  <script src="scripts/lib/grid.locale-en.js" type="text/javascript"></script>
-  <script src="scripts/lib/jquery.jqGrid.src.js" type="text/javascript"></script>
-  <script src="scripts/lib/jquery.tablednd.js" type="text/javascript"></script>
-  
-  <!-- jQuery plugin to support automatically updating fuzzy timestamps 
-  (e.g. "4 minutes ago" or "about 1 day ago") -->
-  <script type="text/javascript" src="scripts/lib/jquery.timeago.js"></script>
-  
-  <!-- Start: Members Widgets JS -->
-  <script type="text/javascript" src="scripts/pulsescript/PulseCallbacks.js"></script>
-<script type="text/javascript" src="scripts/pulsescript/PulseFunctions.js"></script>
-<script type="text/javascript" src='scripts/pulsescript/common.js'></script>
-  <script type="text/javascript" src="scripts/pulsescript/MemberDetails.js"></script>
-</head>
-
-<body onload="return checkMedia();">
-<!-- Connection lost-->
-<div class="connectionLostMasterBlock hide" id="connectionStatusDiv" >
-<div class="connectionLostInnerBlock">
-    <label class="left">Connecting ...</label>
-    <div class="clear"></div>
-    <div id="connectionErrorMsgDiv"></div>
-</div>
-</div>
-	<div id="canvasWidth">
-	<!--Top Links-->
-  <div class="headerTopLinksMaster">
-    <div class="right">
-      <div class="left position-relative"><a href="#."class="left headerTopLinks aboutClicked-Off">About</a> 
-        <!-- About Dropdown-->
-        <div id="detailsAbout" class="aboutBlock display-none">
-          <div class="aboutDetailsBlock">
-            <div class="left widthfull-100per marginBottom30">
-              <div class="left"><img data-prod-custom="pulse-aboutimg-custom" src="images/about-geode.png">
-                <div>
-                 <div class="aboutVersionBlock left" id="pulseVersion"></div>
-                 <div class="left termsBlock">&nbsp;<a id="pulseVersionDetailsLink" href="#dialog1" class="display-none" >Version Details</a></div>
-                </div>
-              </div>
-              <div data-prod-custom="pulse-about-custom" class="right aboutText">The Pulse tool monitors Apache Geode system in real time. It provides health information, detailed operational and configuration data, system alerts, throughput performance and statistics for system members and connected clients.</div>
-            </div>
-			  <div class="left widthfull-100per copyright">
-				  <p>Apache Geode<br>
-					  Copyright 2016 The Apache Software Foundation.</p>
-				  <p>&nbsp;</p>
-				  <p>This product includes software developed at
-					  The Apache Software Foundation (http://www.apache.org/).</p>
-			  </div>
-            </div>
-        </div>
-      
-      </div>
-      <div class="left headerTopSeperator"></div>
-      <div class="left"><a data-prod-custom="pulse-help-custom" target="_blank" href="http://geode.apache.org/docs/guide/tools_modules/pulse/chapter_overview.html" class="left headerTopLinks" class="left headerTopLinks">Help</a></div>
-      <div class="left headerTopSeperator"></div>
-      <div class="left headerTopLinks welcomeLabelPRZero">Welcome</div>
-      <div class="left headerTopLinks textbold font-size12" id="userName"></div>
-      <div class="left headerTopSeperator"></div>
-      <div class="left"><a href="clusterLogout" class="left headerTopLinks">Sign Out</a></div>
-    </div>
-  </div>
-		<!-- Header block-->
-		<header>
-			<div class="left">
-				<a id="clusterNameLink" href="#." class="left textbold HeaderLink HeaderLinkActive" onclick="openClusterDetail();"></a>
-			</div>
-			<div class="textbold right logoBlock">
-				<img src="images/apache_geode_logo.png"/><a href="#.">[LOGO]</a>
-			</div>
-		</header>
-		<div class="clear"></div>
-		<div class="subHeader">
-			<ul>
-				<li><a href="#." class="active" onclick="openClusterDetail();">Cluster View</a></li>
-				<!-- Hide Data Browser tab for gemfirexd (Pulse-Cheetah Release) -->
-				<li><a href="#."  onclick="openDataBrowser();">Data Browser</a></li>
-				<!-- Hide Query Statistics tab for gemfire -->
-				<li id="subTabQueryStatistics"><a href="#." onclick="openQueryStatistics();">Query Statistics</a></li>
-			</ul>
-		<div class="clear"></div>
-		</div>
-		<!-- Middle block-->
-		<div class="left widthfull-100per">
-			<!--Top Right Block 1-->
-			<div class="right widthfull-100per marginTB10">
-				<!-- Tab-->
-				  <div id="notificationsPanel" class="right marginL10 TabTopPanel position-relative" 
-				  data-role="widget" data-widgetid="CluserAlertNotification" data-active ="yes" data-timeline="5000">
-				  </div>
-				<!-- <div class="right marginL10">
-					<a href="#." class="left linkButton" onclick="openDataView();">Data View</a>
-				</div> -->
-				<div class="left position-relative membersNameTopMargin" data-role="widget" data-widgetid="MembersList" data-active ="yes" data-timeline="5000">
-					<a href="#." class="memberClicked-Off" id="userLink">
-					 <span id="memberName" class="member_txt">Member Name</span>
-				  </a>
-					<!-- Setting Dropdown-->
-					<div id="setting" class="settingBlock" style="display: none">
-						<div class="memeberNameSearch position-relative">
-							<div class="searchBlockMaster">
-								<input type="button" class="searchButton">
-								<input type="text" class="searchBox" placeholder="Search"
-								id="filterMembersBox" >
-							</div>
-						</div>
-						<div id="clusterMembersList" class="jsonSuggestScrollFilter">
-						  <div id="clusterMembersContainer"> </div>
-						</div>  
-					</div>
-				</div>
-			</div>
-			<!--Middle Block 1-->
-			<div class="left leftBlockCanvas">
-				<!-- Status Block-->
-				<div class="statusmasterBlock left" data-role="widget" data-widgetid="MemberDetails" data-active ="yes" data-timeline="5000">
-					<!--Status Block Normal-->
-					<div class="statusFirstBlock left">
-						<div class="statusMasterBlock" id="memberStatusIcon">
-							<div id="memberStatus" class="textbold"> </div>
-							<div class="labeltext">Member Status</div>
-						</div>
-					</div>
-					<!-- Deails B1-->
-					<!-- <div class="borderRightDarkBlue detailsBlock">
-						<div id="memberDiskStorageUsed" class="color-d2d5d7 font-size23"> </div>
-						<span class="labeltext">Disk Storage Used</span>
-					</div> -->
-					<!-- Deails B2-->
-					<div class=" detailsBlock">
-						<div id="memberRegionsCount" class="color-d2d5d7 font-size23"> </div>
-						<span data-prod-custom="pulse-regionstableCaps-custom" class="labeltext">Regions</span>
-					</div>
-					<!-- Deails B3-->
-					<div class=" detailsBlock">
-						<div id="threads" class="color-d2d5d7 font-size23"></div>
-						<span class="labeltext">Threads</span>
-					</div>
-					<!-- Deails B4-->
-					<div class=" detailsBlock">
-						<div id="sockets" class="color-d2d5d7 font-size23"></div>
-						<span class="labeltext">Sockets</span>
-					</div>
-					<!-- Deails B5-->
-					<div class=" detailsBlock">
-						<div id="loadAverage" class="color-d2d5d7 font-size23"></div>
-						<span class="labeltext">Load Avg.</span>
-					</div>
-					<!-- Deails B6-->
-					<div class=" detailsBlock display-none">
-					  <div id="offHeapFreeSize" class="color-d2d5d7 font-size23"></div>
-					  <span class="labeltext">Off-Heap Free Size</span>
-					</div>
-					<!-- Deails B7-->
-					<div class=" detailsBlock display-none">
-					  <div id="offHeapUsedSize" class="color-d2d5d7 font-size23"></div>
-					  <span class="labeltext">Off-Heap Used Size</span>
-					</div>
-					<!-- Deails B8-->
-					<div class=" detailsBlock">
-					  <div id="numClients" class="color-d2d5d7 font-size23"></div>
-					  <span class="labeltext">Clients</span>
-					</div>
-				</div>
-				<div class="clear"></div>
-				<div>
-					<div class="middleTopologyBlock">
-						<!-- Large Block-->
-						<div class="canvasBlockLarge marginBR10-11 left">
-							<div class="left widthfull-100per canvasBlockInnerBlock">
-								<span data-prod-custom="pulse-memberRegionsTables-custom" class="left marginL10 canvasHeading">Member Regions</span>
-								<a id="btnLargeBlock_1" class="minusIcon borderLeftToggleBlock" onClick="toggleDiv('LargeBlock_1');"></a>
-								<a id="btngridIcon" class="gridIcon " onClick="tabGridNew('gview_memberRegionsList');"></a>
-								<a id="btnchartIcon" class="chartIconActive " onClick="tabChart();"></a>
-							</div>
-							<div class="left canvasInnerBlock" id="LargeBlock_1">
-							<div class="left widthfull-100per canvasBlockInnerBlock regionHeading">
-							   <!-- Search-->
-							   <div class="left marginBottom6 marginL10 marginTop6">
-							     <div class="searchBlockMaster">
-							       <input type="button" class="searchButton">
-							       <input type="text" placeholder="Search"
-							         onkeyup="applyFilterOnMemberRegions();" class="searchBox"
-							         id="filterMemberRegionsBox">
-							     </div>
-							   </div>
-							</div>
-								<!--Grid  Block-->
-								<div class="gridBlocksPanel left display-none canvasBlockLargeGridContent"
-									id="gridBlocks_Panel">
-									<div class="left widthfull-100per">
-										<table id="memberRegionsList">
-										</table>
-									</div>
-								</div>
-								<!--chart  Block-->
-								<div class="chartBlocksPanel left canvasBlockLargeContent membersTreeViewHeight" id="chartBlocks_Panel">
-									<div class="left widthfull-100per" >
-										<div class="marginB11 left widthfull-100per" >
-											<!-- <div class="left marginL10">
-												<span class="left colorCodeBlock managerCode"></span><span
-													class="left marginL10">Managers</span>
-											</div>
-											<div class="left marginL10">
-												<span class="left colorCodeBlock colorCode-ffae00"></span><span
-													class="left marginL10">Locators</span>
-											</div> -->
-										<!-- 	<div class="searchBlockMaster">
-												<input type="button" class="searchButton"> <input
-													type="text" class="searchBox" id="searchRegionName" 
-													placeholder="Search" onKeydown="Javascript: if (event.keyCode==13) searchName();">
-											</div>-->
-										</div>
-										<div class="treeViewGraph position-relative" data-role="widget" data-widgetid="MemberRegionSummary" data-active ="yes" data-timeline="5000">
-											<!-- tree view Control-->
-											<div id="center-containerTree">
- 												<!-- <div id="TreeMap"></div> -->
-												<div id="memberRegionSummary" style="width:100%; height:410px; overflow:hidden;"></div>
-											</div>
-										</div>
-									</div>
-								</div>
-							</div>
-						</div>
-						<!-- Member Clients -->
-						<div class="canvasBlockLarge marginBR10-11 left" id="memberClientsWidget" data-role="widget" data-widgetid="MemberClients" data-active ="yes" data-timeline="5000">
-              <div class="left widthfull-100per canvasBlockInnerBlock">
-                <span class="left marginL10 canvasHeading">Member Clients</span>
-                <a id="btnLargeBlock_2" class="minusIcon borderLeftToggleBlock" onClick="toggleDiv('LargeBlock_2');"></a>
-              </div>
-              <div
-                class="left canvasInnerBlock canvasBlockLargeGridContent"
-                id="LargeBlock_2" >
-                <!--Grid  Block-->
-                <div class="gridBlocksPanel left"
-                  id="gridBlocks_Panel" >
-                  <div class="left widthfull-100per" >
-                    <table id="memberClientsList">
-                    </table>
-                  </div>
-                </div>
-              </div>
-            </div>
-						<!-- Block 4-->
-						<div class="canvasBlockKeyStats marginBR10-11 left" data-role="widget" data-widgetid="MemberKeyStatistics" data-active ="yes" data-timeline="5000">
-							<div class="left width495 canvasBlockInnerBlock" >
-								<span class="left marginL10 canvasHeading">Key Statistics</span><a
-									id="btnSmallBlock_4" class="minusIcon"
-									onClick="toggleDiv('SmallBlock_4');"></a>
-							</div>
-							<div class="left canvasInnerBlock canvasContentBlockKeyStats"
-								id="SmallBlock_4" >
-								<div class="graphBlocksContent left" >
-									<span class="marginB11 left widthfull-100per">Last 15
-										Minutes</span>
-									<!--Line 1-->
-									<div class="left widthfull-100per marginB10" >
-										<span id="memberCPUUsageSparkLine" class="left lineGraphKeyStats"> </span>
-										<span id="memberCPUUsageValue" class="color-d2d5d7 font-size23"> </span>
-										<span class="paddingL5">% CPU Usage</span>
-									</div>
-                  <!--Line 2-->
-                  <!-- <div class="left widthfull-100per ">
-                    <span id="memberMemoryUsageSparkLine" class="left lineGraphKeyStats"> </span>
-                    <span id="memberMemoryUsageValue" class="color-d2d5d7 font-size23"> </span>
-                    <span class="paddingL5">MB</span>
-                  </div> -->
-									<!--Line 3-->
-									<div class="left widthfull-100per marginB10" >
-										<span id="memberGetsPerSecSparkLine" class="left lineGraphKeyStats"> </span>
-										<span id="memberGetsPerSecValue" class="color-d2d5d7 font-size23">345.12</span>
-										<span data-prod-custom="pulse-readgetpersec-custom" class="paddingL5">Read/Sec</span>
-									</div>
-									<!--Line 4-->
-									<div class="left widthfull-100per marginB10" >
-										<span id="memberPutsPerSecSparkLineBar" class="left lineGraphKeyStats"> </span>
-										<span id="memberPutsPerSecValue" class="color-d2d5d7 font-size23">678.34</span>
-										<span data-prod-custom="pulse-writeputpersec-custom" class="paddingL5">Write/Sec</span>
-									</div>
-								</div>
-							</div>
-						</div>
-						<!-- Block 5-->
-						<!-- <div class="canvasBlock marginBR10-11 left">
-							<div class="left width242 canvasBlockInnerBlock">
-								<span class="left marginL10 canvasHeading">Memory Usage</span><a
-									id="btnSmallBlock_5" class="minusIcon"
-									onClick="toggleDiv('SmallBlock_5');"></a>
-							</div>
-							<div class="left canvasInnerBlock canvasContentBlock"
-								id="SmallBlock_5">
-								<div class="graphBlocksContent">
-									<div id="memberHeapUsageAvg" class="color-d2d5d7 font-size40"> </div>
-									<span>Last 15 Minutes</span>
-								</div>
-								<div class="left graphChart">
-									<span class="left lineGraph" id="memberHeapUsage"></span>
-								</div>
-							</div>
-						</div>-->
-						<!-- Block 6-->
-						<div class="canvasBlock marginBR10-11 left" data-role="widget" data-widgetid="MemberGCPauses" data-active ="yes" data-timeline="5000">
-							<div class="left width242 canvasBlockInnerBlock">
-								<span class="left marginL10 canvasHeading">No. of JVM
-									pauses</span><a id="btnSmallBlock_6" class="minusIcon"
-									onClick="toggleDiv('SmallBlock_6');"></a>
-							</div>
-							<div class="left canvasInnerBlock canvasContentBlock"
-								id="SmallBlock_6">
-								<div class="graphBlocksContent">
-									<div id="memberGcPausesAvg" class="color-d2d5d7 font-size40"> </div>
-									<span>Last 15 Minutes</span>
-								</div>
-								<div class="left graphChart">
-									<span class="left lineGraph" id="memberGCPauses"></span>
-								</div>
-							</div>
-						</div>
-					</div>
-					<!-- Right Block-->
-					<div class="rightBlockCanvas">
-						<!-- Block 1-->
-						<div id="MemberGatewayHubWidget" class="canvasBlock marginB10 left " 
-						  data-role="widget" data-widgetid="MemberGatewayHub" data-active ="yes" data-timeline="5000">
-							<div class="left width242 canvasBlockInnerBlock">
-								<span class="left marginL10 canvasHeading">Gateway Receiver</span><a
-									id="btnSmallBlock_1" class="minusIcon"
-									onClick="toggleDiv('SmallBlock_1');"></a>
-							</div>
-							<div class="left canvasInnerBlock canvasContentBlock"
-								id="SmallBlock_1">
-								<div class="graphBlocksContent">
-									<div class="detailsBlock-member firstPaddingLeftZero">
-										<div id="receiverListeningPort" class="color-d2d5d7 font-size20"> </div>
-										<span class="labeltext">Listening Port</span>
-									</div>
-									<div class="detailsBlock-member">
-										<div id="receiverLinkThroughput" class="color-d2d5d7 font-size20"> </div>
-										<span class="labeltext">Link Throughput</span>
-									</div>
-									<div class="detailsBlock-member lastPaddingLeftZero">
-										<div id="receiverAvgBatchLatency" class="color-d2d5d7 font-size20"> </div>
-										<span class="labeltext">AVG Batch Latency</span>
-									</div>
-								</div>
-								<!-- End Point Master-->
-								<div class="left endPointMasterBlock">
-									<!--End point-->
-									<div class="pointHeading">
-										<label class="pointTextHeading">Gateway Senders</label>
-									</div>
-									<div class="pointGridHeading">
-										<span class="pointHeadingPadding pointC1">ID</span><span
-											class="pointHeadingPadding pointC2">Queue Size</span><span
-											class="pointHeadingPadding pointC3">Status</span>
-									</div>
-									<div class="pointGridData">
-									  <div id="gatewaySendersList" > </div>
-									</div>
-								</div>
-								<div class="clearButton">
-									<a id="idGatewaySenderMoreDetailsLink" class="right linkButton" onclick="showGatewaySenderPopup(this)" href="#">More Details</a>
-								</div>
-								<!-- Regions Involved-->
-								<div class="left endPointMasterBlock">
-									<!--Regions Involved-->
-									<img src="images/spacer.png" height="1" border="0"
-										class="pointHeading">
-									<div class="pointGridHeading">
-										<span data-prod-custom="pulse-regionstableInvolved-custom" class="pointHeadingPadding textUpper">Regions
-											Involved</span>
-									</div>
-									<div class="pointGridData" >
-									  <div id="regionInvolvedList"></div>
-									</div>
-								</div>
-							</div>
-						</div>
-						<div class="clear"></div>
-            <!-- Block 2-->
-            <div id="MemberAsynchEventQueuesWidget" class="canvasBlock marginB10 left " 
-              data-role="widget" data-widgetid="MemberAsynchEventQueues" data-active ="yes" data-timeline="5000">
-              <div class="left width242 canvasBlockInnerBlock">
-                <span class="left marginL10 canvasHeading">Asynch Event Queues</span>
-                <a id="btnSmallBlock_2" class="minusIcon" onClick="toggleDiv('SmallBlock_2');"></a>
-              </div>
-              <div class="left canvasInnerBlock canvasContentBlock" id="SmallBlock_2">
-                <div class="left endPointMasterBlock">
-                <!-- asynch event queue -->
-                  <div class="pointGridHeading">
-                    <span class="pointHeadingPadding pointC1">ID</span>
-                    <span class="pointHeadingPadding pointC2">Queue Size</span>
-                    <span class="pointHeadingPadding pointC3">Type</span>
-                  </div>
-                  <div class="pointGridData">
-                    <div id="asynchList"> </div>
-                  </div>
-                </div>
-                <div class="clearButton">
-                  <a id="idAsynchMoreDetailsLink" class="right linkButton" onclick="showAsyncEventQueuePopup(this)" href="#">More Details</a>
-                </div>
-              </div>
-            </div>
-            <div class="clear"></div>
-						<!-- Block 5-->
-						<div class="canvasBlock marginBR10-11 left" data-role="widget" data-widgetid="MemberHeapUsage" data-active ="yes" data-timeline="5000">
-							<div class="left width242 canvasBlockInnerBlock" >
-								<span class="left marginL10 canvasHeading">Memory Usage</span><a
-									id="btnSmallBlock_5" class="minusIcon"
-									onClick="toggleDiv('SmallBlock_5');"></a>
-							</div>
-							<div class="left canvasInnerBlock canvasContentBlock"
-								id="SmallBlock_5" >
-								<div class="graphBlocksContent" >
-									<div id="memberHeapUsageAvg" class="color-d2d5d7 font-size40">
-									</div>
-									<span>Last 15 Minutes</span>
-								</div>
-								<div class="left graphChart" >
-									<span class="left lineGraph" id="memberHeapUsage"></span>
-								</div>
-							</div>
-						</div>
-						<!-- Block 3-->
-						<div class="canvasBlock marginB10 left" data-role="widget" data-widgetid="MemberDiskThroughput" data-active ="yes" data-timeline="5000">
-							<div class="left width242 canvasBlockInnerBlock">
-								<span class="left marginL10 canvasHeading">Disk Throughput</span>
-								<a id="btnSmallBlock_3" class="minusIcon"
-									onClick="toggleDiv('SmallBlock_3');"></a>
-							</div>
-							<div class="left canvasInnerBlock canvasContentBlock"
-								id="SmallBlock_3">
-								<div class="graphBlocksContent marginB11 left">
-									<div class="left">
-										<span class="left">Last 15 Minutes</span>
-									</div>
-									<div class="right marginL10">
-										<span data-prod-custom="pulse-reads-custom" class="left">Reads</span> <span
-											class="left marginL10 colorCodeBlock diskReadsCode"></span>
-									</div>
-									<div class="right marginL10">
-										<span data-prod-custom="pulse-writes-custom" class="left">Writes</span> <span
-											class="left marginL10 colorCodeBlock diskWritesCode"></span>
-									</div>
-								</div>
-								<div class="graphBlocksContent width91Per left">
-									<div class="color-d2d5d7 font-size20">
-										<span id="diskReadsThroughput"></span>
-									</div>
-									<div class="width100Per left">
-										<span class="left">Reads</span> <span class="right"
-											id="currentDiskReadsThroughput"></span>
-									</div>
-								</div>
-								<div class="left graphChart marginB11">
-									<span class="left lineGraph" id="diskReadsThroughputTrend"></span>
-								</div>
-								<div class="graphBlocksContent width91Per left">
-									<div class="color-d2d5d7 font-size20">
-										<span id="diskWritesThroughput"></span>
-									</div>
-									<div class="width100Per left">
-										<span class="left">Writes</span> <span class="right"
-											id="currentDiskWritesThroughput"></span>
-									</div>
-								</div>
-								<div class="left graphChart">
-									<span class="left lineGraph" id="diskWritesThroughputTrend"></span>
-								</div>
-							</div>
-						</div>
-					</div>
-				</div>
-			</div>
-		</div>
-	</div>
-	<!-- Placeholder-->
-	<script>
-    $('input[placeholder], textarea[placeholder]').placeholder();
-  </script>
-<!--Popups Block-->
-<div id="boxes"> 
-  <!-- Version Details popup-->
- <div id="dialog1" class="window width345" data-role="widget" data-widgetid="PulseVersionDetails" data-active ="yes" data-timeline="5000">
-    <div class="popup_heading"><span>Version Details</span><a href="#" class="closePopup">&nbsp;</a></div>
-    <div class="popup_contentBlock">
-      <div class="popup-innerblock">
-        <ul class="widthfull-100per left">
-          <li class="left widthfull-100per">
-            <label class="width-40 display-inline-block">Pulse Version:</label>
-            <label class="width-58 display-inline-block" id="pulseVer"></label>
-          </li>
-          <li class="left widthfull-100per">
-            <label class="width-40 display-inline-block">Build Id:</label>
-            <label class="width-58 display-inline-block" id="buildId"></label>
-          </li>
-          <li class="left widthfull-100per">
-            <label class="width-40 display-inline-block">Build Date:</label>
-            <label class="width-58 display-inline-block" id="buildDate"></label>
-          </li>
-          <li class="left widthfull-100per">
-            <label class="width-40 display-inline-block">Source Date:</label>
-            <label class="width-58 display-inline-block" id="sourceDate"></label>
-          </li>
-          <li class="left widthfull-100per">
-            <label class="width-40 display-inline-block">Source Revision:</label>
-            <label class="width-58 display-inline-block" id="sourceRevision"></label>
-          </li>
-          <li class="left widthfull-100per">
-            <label class="width-40 display-inline-block">Source Repository:</label>
-            <label class="width-58 display-inline-block" id="sourceRepository"></label>
-          </li>
-        </ul>
-        <div class="clear"></div>
-      </div>
-    </div>
-  </div>
-  <!-- Mask to cover the whole screen -->
-  <div id="mask"></div>
-</div>
-<div id="tooltip" class="tooltip"></div>
-<!-- Placeholder--> 
-<script>
-$('input[placeholder], textarea[placeholder]').placeholder();
-</script>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/geode/blob/5b71c4b5/geode-pulse/src/main/webapp/QueryStatistics.html
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/webapp/QueryStatistics.html b/geode-pulse/src/main/webapp/QueryStatistics.html
deleted file mode 100644
index 0b0e3e1..0000000
--- a/geode-pulse/src/main/webapp/QueryStatistics.html
+++ /dev/null
@@ -1,308 +0,0 @@
-<!DOCTYPE html>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<html lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta http-equiv="X-UA-Compatible" content="IE=edge" />
-<meta http-equiv="CACHE-CONTROL" content="NO-CACHE,NO-STORE" />
-<meta http-equiv="PRAGMA" content="NO-CACHE" />
-<meta http-equiv="EXPIRES" content="-1">
-<title>Pulse</title>
-<link href="css/common.css" rel="stylesheet" type="text/css" />
-<link href="css/style.css" rel="stylesheet" type="text/css" />
-
-<!-- fix IE Ui issues-->
-<!--[if IE 7]>
-                <link href="css/ie/ie7.css" type="text/css" rel="stylesheet"/>
-         <![endif]-->
-<!--[if IE 8]>
-                <link href="css/ie/ie8.css" type="text/css" rel="stylesheet"/>
-         <![endif]-->
-<!--[if IE 9]>
-                <link href="css/ie/ie9.css" type="text/css" rel="stylesheet"/>
-         <![endif]-->
-<!-- IE Fix for HTML5 Tags -->
-<!--[if lt IE 9]>
-        <script src='scripts/lib/html5.js'></script>
-        <script type="text/javascript" src="scripts/lib/excanvas.js"></script>
-        <script type="text/javascript"> if (!window.console) console = {log: function() {}}; </script>
-                <![endif]-->
-
-<script type="text/javascript" src='scripts/lib/jquery-1.7.2.js'></script>
-<script type="text/javascript" src='scripts/lib/common.js'></script>
-<script type="text/javascript"
-	src="scripts/lib/jquery.i18n.properties.js"></script>
-<!--Custom Scroll Bar-->
-<!-- styles needed by jScrollPane - include in your own sites -->
-<link type="text/css" href="css/jquery.jscrollpane.css" rel="stylesheet"
-	media="all" />
-<!-- the mousewheel plugin -->
-<script type="text/javascript" src="scripts/lib/jquery.mousewheel.js"></script>
-<!-- the jScrollPane script -->
-<script type="text/javascript" src="scripts/lib/jquery.jscrollpane.js"></script>
-<!--Place Holder tag-->
-	<script type="text/javascript" src="scripts/lib/jquery.placeholder.js"></script>
-<!-- Rgraph and TreeMap-->
-<link type="text/css" href="css/base.css" rel="stylesheet" />
-<link type="text/css" href="css/Treemap.css" rel="stylesheet" />
-<script type="text/javascript" src="scripts/lib/jit.js"></script>
-<script type="text/javascript" src="scripts/lib/jquery.sparkline.js"></script>
-
-<!-- Grid view CSS and js-->
-<link rel="stylesheet" type="text/css" media="screen"
-	href="css/grid/ui.jqgrid.css" />
-<script src="scripts/lib/grid.locale-en.js" type="text/javascript"></script>
-<script src="scripts/lib/jquery.jqGrid.src.js" type="text/javascript"></script>
-<script src="scripts/lib/jquery.tablednd.js" type="text/javascript"></script>
-<!-- -->
-<!-- jQuery plugin to support automatically updating fuzzy timestamps 
-(e.g. "4 minutes ago" or "about 1 day ago") -->
-<script type="text/javascript" src="scripts/lib/jquery.timeago.js"></script>
-
-<!-- start:Cluster widget based js files -->
-<script type="text/javascript"
-	src="scripts/pulsescript/PulseCallbacks.js"></script>
-<script type="text/javascript"
-	src="scripts/pulsescript/PulseFunctions.js"></script>
-<script type="text/javascript" src='scripts/pulsescript/common.js'></script>
-<script type="text/javascript"
-	src='scripts/pulsescript/queryStatistics.js'></script>
-
-<!-- multiselect -->
-<link rel="stylesheet" type="text/css"
-	href="css/multiselect/jquery.multiselect.css" />
-<link rel="stylesheet" type="text/css" href="css/multiselect/style.css" />
-<link rel="stylesheet" type="text/css"
-	href="css/multiselect/prettify.css" />
-<script type="text/javascript"
-	src="scripts/multiselect/jquery-ui.js"></script>
-<script type="text/javascript"
-	src="scripts/multiselect/jquery.multiselect.js"></script>
-<script type="text/javascript" src="scripts/multiselect/prettify.js"></script>
-<script type="text/javascript" src="scripts/lib/checkBox-RadioButton.js"></script>
-<!-- multiselect -->
-</head>
-
-<body>
-	<!-- Connection lost-->
-	<div class="connectionLostMasterBlock hide" id="connectionStatusDiv">
-		<div class="connectionLostInnerBlock">
-			<label class="left">Connecting ...</label>
-			<div class="clear"></div>
-			<div id="connectionErrorMsgDiv" class="right"></div>
-		</div>
-	</div>
-
-	<div id="canvasWidth">
-		<!--Top Links-->
-		<div class="headerTopLinksMaster">
-			<div class="right">
-				<div class="left position-relative">
-					<a href="#." class="left headerTopLinks aboutClicked-Off">About</a>
-					<!-- About Dropdown-->
-					<div id="detailsAbout" class="aboutBlock display-none">
-						<div class="aboutDetailsBlock">
-							<div class="left widthfull-100per marginBottom30">
-								<div class="left">
-									<img data-prod-custom="pulse-aboutimg-custom"
-										src="images/about-geode.png">
-									<div>
-										<div class="aboutVersionBlock left" id="pulseVersion"></div>
-										<div class="left termsBlock">
-											&nbsp;<a id="pulseVersionDetailsLink" href="#dialog1"
-												class="display-none">Version Details</a>
-										</div>
-									</div>
-								</div>
-								<div data-prod-custom="pulse-about-custom"
-									class="right aboutText">The Pulse tool monitors
-									Pivotal&#0153; GemFire&#0169; system in real time. It provides
-									health information, detailed operational and configuration
-									data, system alerts, throughput performance and statistics for
-									system members and connected clients.</div>
-							</div>
-							<div class="left widthfull-100per copyright">
-								<p>Apache Geode<br>
-									Copyright 2016 The Apache Software Foundation.</p>
-								<p>&nbsp;</p>
-								<p>This product includes software developed at
-									The Apache Software Foundation (http://www.apache.org/).</p>
-							</div>
-						</div>
-					</div>
-				</div>
-				<div class="left headerTopSeperator"></div>
-				<div class="left">
-					<a data-prod-custom="pulse-help-custom" target="_blank"
-						href="http://geode.apache.org/docs/guide/tools_modules/pulse/chapter_overview.html"
-						class="left headerTopLinks">Help</a>
-				</div>
-				<div class="left headerTopSeperator"></div>
-				<div class="left headerTopLinks welcomeLabelPRZero">Welcome</div>
-				<div class="left headerTopLinks textbold font-size12" id="userName"></div>
-				<div class="left headerTopSeperator"></div>
-				<div class="left">
-					<a href="clusterLogout" class="left headerTopLinks">Sign
-						Out</a>
-				</div>
-			</div>
-		</div>
-		<!-- Header block-->
-		<header>
-			<div class="left">
-				<a href="#." onclick="openClusterDetail();"
-					class="left textbold HeaderLink HeaderLinkActive" id="clusterName"></a>
-			</div>
-			<div class="textbold right logoBlock">
-				<img src="images/apache_geode_logo.png"/><a href="#.">[LOGO]</a>
-			</div>
-		</header>
-		<div class="clear"></div>
-		<div class="subHeader">
-			<ul>
-				<li><a href="#." onclick="openClusterDetail();">Cluster
-						View</a></li>
-				<!-- Hide Data Browser tab for gemfirexd (Pulse-Cheetah Release) -->
-				<!-- <li><a href="#."  onclick="openDataBrowser();">Data Browser</a></li> -->
-				<li><a href="#." onclick="openQueryStatistics();" class="active">Query Statistics</a></li>
-			</ul>
-			<div class="clear"></div>
-		</div>
-		<!-- Middle block-->
-		<div class="left widthfull-100per">
-			<!--Top Right Block 1-->
-			<div class="right widthfull-100per marginTB10">
-
-				<!-- Tab-->
-				<div id="notificationsPanel" class="right marginL10 TabTopPanel position-relative"
-					data-role="widget" data-widgetid="CluserAlertNotification" data-active="yes" data-timeline="5000">
-				</div>
-				<div class="left leftBlockCanvas">
-					<!-- to be replaced with grid -->
-					<!-- canvasBlockLarge -->
-					<div class="statusmasterBlock">
-						<div
-							class="left widthfull-100per canvasBlockInnerBlock backgroundQueryStats">
-							<!-- Search-->
-							<div class="left widthfull-100per canvasBlockInnerBlock">
-								<span class="left marginL10 canvasHeading">Top 50 Queries</span>
-							</div>
-							<div class="clear"></div>
-							<div class="left width96Per marginBottom6 marginL10 marginTop6">
-								<div class="searchBlockMasterQS">
-									<input type="button" class="searchButtonQS"> <input
-										type="text" placeholder="Search Query Definition"
-										onkeyup="applyFilterOnQueryStatistics();"
-										class="searchBoxQueryStatistics" id="filterQueryStatisticsBox">
-								</div>
-								<div class="right">
-									<select id="columnsSelect" name="columnsSelect"
-										multiple="multiple" size="20"></select>
-								</div>
-							</div>
-							<div data-role="widget" data-widgetid="QueryStatistics"
-								data-active="yes" data-timeline="30000">
-								<div
-									class="left widthfull-100per canvasInnerBlock backgroundQueryStats">
-									<!--Grid  Block-->
-									<div class="gridBlocksPanel left" id="gridBlocks_Panel">
-										<div class="left widthfull-100per">
-											<table id="queryStatisticsList"></table>
-										</div>
-									</div>
-								</div>
-							</div>
-						</div>
-					</div>
-				</div>
-			</div>
-			<!--Middle Block 1-->
-		</div>
-	</div>
-	<!--Popups Block-->
-	<div id="boxes">
-		<!-- Version Details popup-->
-		<!-- Version Details popup-->
-		<div id="dialog1" class="window width345" data-role="widget"
-			data-widgetid="PulseVersionDetails" data-active="yes"
-			data-timeline="5000">
-			<div class="popup_heading">
-				<span>Version Details</span><a href="#" class="closePopup">&nbsp;</a>
-			</div>
-			<div class="popup_contentBlock">
-				<div class="popup-innerblock">
-					<ul class="widthfull-100per left">
-						<li class="left widthfull-100per"><label
-							class="width-40 display-inline-block">Pulse Version:</label> <label
-							class="width-58 display-inline-block" id="pulseVer"></label></li>
-						<li class="left widthfull-100per"><label
-							class="width-40 display-inline-block">Build Id:</label> <label
-							class="width-58 display-inline-block" id="buildId"></label></li>
-						<li class="left widthfull-100per"><label
-							class="width-40 display-inline-block">Build Date:</label> <label
-							class="width-58 display-inline-block" id="buildDate"></label></li>
-						<li class="left widthfull-100per"><label
-							class="width-40 display-inline-block">Source Date:</label> <label
-							class="width-58 display-inline-block" id="sourceDate"></label></li>
-						<li class="left widthfull-100per"><label
-							class="width-40 display-inline-block">Source Revision:</label>
-							<label class="width-58 display-inline-block" id="sourceRevision"></label>
-						</li>
-						<li class="left widthfull-100per"><label
-							class="width-40 display-inline-block">Source
-								Repository:</label> <label class="width-58 display-inline-block"
-							id="sourceRepository"></label></li>
-					</ul>
-					<div class="clear"></div>
-				</div>
-			</div>
-		</div>
-		<!-- Grid Details popup-->
-		<div id="gridPopup" class="window width700">
-			<div class="popup_heading">
-				<span>Object Explorer</span><a href="#" class="closePopup">&nbsp;</a>
-			</div>
-			<div class="popup_contentBlock">
-				<div class="popup-innerblock">
-					<table id="treegrid">
-						<tr>
-							<td />
-						</tr>
-					</table>
-				</div>
-				<div class="popup-innerblock">
-					<table id="popUpExplorer">
-						<tr>
-							<td />
-						</tr>
-					</table>
-				</div>
-			</div>
-		</div>
-		<!-- Mask to cover the whole screen -->
-		<div id="mask"></div>
-	</div>
-	<div id="tooltip" class="tooltip"></div>
-	<!-- Placeholder-->
-	<script>
-    $('input[placeholder], textarea[placeholder]').placeholder();
-  </script>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/geode/blob/5b71c4b5/geode-pulse/src/main/webapp/WEB-INF/spring-security.xml
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/webapp/WEB-INF/spring-security.xml b/geode-pulse/src/main/webapp/WEB-INF/spring-security.xml
index cac6caf..b8055f1 100644
--- a/geode-pulse/src/main/webapp/WEB-INF/spring-security.xml
+++ b/geode-pulse/src/main/webapp/WEB-INF/spring-security.xml
@@ -27,22 +27,17 @@
 	<http auto-config="true" use-expressions="true">
 		<csrf disabled="true"/>
 		<!-- Can be invoked w/o auth -->
-		<intercept-url pattern="/Login.html" access="permitAll"  />
+		<intercept-url pattern="/login.html" access="permitAll"  />
 		<intercept-url pattern="/authenticateUser" access="permitAll" />
 		<!-- Can be invoked w/o auth -->
 
 		<!-- Restricted urls -->
-        <intercept-url pattern="/*" access="hasRole('CLUSTER:READ')" />
-        <intercept-url pattern="/clusterDetail.html" access="hasRole('CLUSTER:READ')" />
-		<intercept-url pattern="/MemberDetails.html" access="hasRole('CLUSTER:READ')" />
-		<intercept-url pattern="/regionDetail.html" access="hasRole('CLUSTER:READ')" />
-		<intercept-url pattern="/clearAlerts" access="hasRole('CLUSTER:READ')" />
-		<intercept-url pattern="/acknowledgeAlert" access="hasRole('CLUSTER:READ')" />
 		<intercept-url pattern="/dataBrowser*" access="hasRole('CLUSTER:READ') and hasRole('DATA:READ')" />
 		<intercept-url pattern="/getQueryStatisticsGridModel/*" access="hasRole('CLUSTER:READ') and hasRole('DATA:READ')" />
+		<intercept-url pattern="/*" access="hasRole('CLUSTER:READ')" />
 		
 		<!-- Restricted urls -->
-        <form-login login-page="/Login.html"
+        <form-login login-page="/login.html"
                     authentication-failure-handler-ref="authenticationFailureHandler"
                     default-target-url="/clusterDetail.html"
                     always-use-default-target="true"/>
@@ -58,17 +53,17 @@
 
 	<beans:bean name="customLogoutSuccessHandler" 
 	class="org.apache.geode.tools.pulse.internal.security.LogoutHandler">
-		<beans:constructor-arg value="/Login.html"/>		
+		<beans:constructor-arg value="/login.html"/>
 	</beans:bean>
 	
 	<beans:bean id="authenticationFailureHandler"
 		class="org.springframework.security.web.authentication.ExceptionMappingAuthenticationFailureHandler">
 		<beans:property name="exceptionMappings">
 			<beans:props>
-				<beans:prop key="org.springframework.security.authentication.BadCredentialsException">/Login.html?error=BAD_CREDS</beans:prop>
-				<beans:prop key="org.springframework.security.authentication.CredentialsExpiredException">/Login.html?error=CRED_EXP</beans:prop>
-				<beans:prop key="org.springframework.security.authentication.LockedException">/Login.html?error=ACC_LOCKED</beans:prop>
-				<beans:prop key="org.springframework.security.authentication.DisabledException">/Login.html?error=ACC_DISABLED</beans:prop>
+				<beans:prop key="org.springframework.security.authentication.BadCredentialsException">/login.html?error=BAD_CREDS</beans:prop>
+				<beans:prop key="org.springframework.security.authentication.CredentialsExpiredException">/login.html?error=CRED_EXP</beans:prop>
+				<beans:prop key="org.springframework.security.authentication.LockedException">/login.html?error=ACC_LOCKED</beans:prop>
+				<beans:prop key="org.springframework.security.authentication.DisabledException">/login.html?error=ACC_DISABLED</beans:prop>
 			</beans:props>
 		</beans:property>
 	</beans:bean>


Mime
View raw message