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/89e4bef6
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/89e4bef6
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/89e4bef6

Branch: refs/heads/feature/GEODE-2420
Commit: 89e4bef6937bb12018cd0e2a493ca74a2018c795
Parents: 29d0a6d
Author: Jinmei Liao <[email protected]>
Authored: Mon Mar 13 16:08:51 2017 -0700
Committer: Ken Howe <[email protected]>
Committed: Mon Mar 27 14:00:41 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/89e4bef6/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/89e4bef6/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/89e4bef6/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/89e4bef6/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/89e4bef6/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/89e4bef6/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/89e4bef6/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/89e4bef6/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/89e4bef6/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>

Reply via email to