Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions config.cfg
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
#Whether to enable the properties description feature, default false
#showDesc=true
#Set the number of records to display history, default 50
#historyLimit=500
#Server Port
serverPort=9090
#Comma seperated list of all the zookeeper servers
Expand Down
17 changes: 10 additions & 7 deletions src/main/java/com/deem/zkui/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,6 @@
package com.deem.zkui;

import com.deem.zkui.dao.Dao;
import java.io.File;
import java.io.FileInputStream;
import java.util.Date;
import java.util.Properties;
import org.eclipse.jetty.annotations.AnnotationConfiguration;
import org.eclipse.jetty.http.HttpVersion;
import org.eclipse.jetty.server.Connector;
Expand All @@ -41,6 +37,11 @@
import org.eclipse.jetty.webapp.WebAppContext;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.io.FileInputStream;
import java.util.Date;
import java.util.Properties;

public class Main {

private final static org.slf4j.Logger logger = LoggerFactory.getLogger(Main.class);
Expand Down Expand Up @@ -86,8 +87,9 @@ public static void main(String[] args) throws Exception {
HttpConfiguration http_config = new HttpConfiguration();
http_config.setSecureScheme("https");
http_config.setSecurePort(Integer.parseInt(globalProps.getProperty("serverPort")));

if (globalProps.getProperty("https").equals("true")) {

String httpsProp = globalProps.getProperty("https");
if (httpsProp != null && httpsProp.equals("true")) {
File keystoreFile = new File(globalProps.getProperty("keystoreFile"));
SslContextFactory sslContextFactory = new SslContextFactory();
sslContextFactory.setKeyStorePath(keystoreFile.getAbsolutePath());
Expand All @@ -100,7 +102,8 @@ public static void main(String[] args) throws Exception {
https.setPort(Integer.parseInt(globalProps.getProperty("serverPort")));
server.setConnectors(new Connector[]{https});
} else {
if(globalProps.getProperty("X-Forwarded-For").equals("true")) {
String property = globalProps.getProperty("X-Forwarded-For");
if(property != null && property.equals("true")) {
http_config.addCustomizer(new org.eclipse.jetty.server.ForwardedRequestCustomizer());
}
ServerConnector http = new ServerConnector(server, new HttpConnectionFactory(http_config));
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/com/deem/zkui/controller/ChangeLog.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t
List<History> historyLst = dao.fetchHistoryRecords();
templateParam.put("historyLst", historyLst);
templateParam.put("historyNode", "");
templateParam.put("historyLimit", globalProps.getProperty("historyLimit"));
ServletUtil.INSTANCE.renderHtml(request, response, templateParam, "history.ftl.html");
} catch (TemplateException ex) {
logger.error(Arrays.toString(ex.getStackTrace()));
Expand All @@ -74,6 +75,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
historyLst = dao.fetchHistoryRecordsByNode("%" + historyNode + "%");
templateParam.put("historyLst", historyLst);
templateParam.put("historyNode", historyNode);
templateParam.put("historyLimit", globalProps.getProperty("historyLimit"));
ServletUtil.INSTANCE.renderHtml(request, response, templateParam, "history.ftl.html");

} else {
Expand Down
28 changes: 16 additions & 12 deletions src/main/java/com/deem/zkui/controller/Export.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,23 +17,25 @@
*/
package com.deem.zkui.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.Properties;
import java.util.Set;
import com.deem.zkui.utils.ServletUtil;
import com.deem.zkui.utils.ZooKeeperUtil;
import com.deem.zkui.vo.LeafBean;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.ZooKeeper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.zookeeper.KeeperException;
import com.deem.zkui.utils.ServletUtil;
import com.deem.zkui.utils.ZooKeeperUtil;
import com.deem.zkui.vo.LeafBean;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
import java.util.Properties;
import java.util.Set;

@SuppressWarnings("serial")
@WebServlet(urlPatterns = {"/export"})
Expand All @@ -53,10 +55,12 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t
if (authRole == null) {
authRole = ZooKeeperUtil.ROLE_USER;
}

String zkPath = request.getParameter("zkPath");
StringBuilder output = new StringBuilder();
output.append("#App Config Dashboard (ACD) dump created on :").append(new Date()).append("\n");
Set<LeafBean> leaves = ZooKeeperUtil.INSTANCE.exportTree(zkPath, ServletUtil.INSTANCE.getZookeeper(request, response, zkServerLst[0], globalProps), authRole);
ZooKeeper zk = ServletUtil.INSTANCE.getZookeeper(request, response, zkServerLst[0], globalProps);
Set<LeafBean> leaves = ZooKeeperUtil.INSTANCE.exportTree(zkPath, zk, authRole);
for (LeafBean leaf : leaves) {
output.append(leaf.getPath()).append('=').append(leaf.getName()).append('=').append(ServletUtil.INSTANCE.externalizeNodeValue(leaf.getValue())).append('\n');
}// for all leaves
Expand Down
35 changes: 24 additions & 11 deletions src/main/java/com/deem/zkui/controller/Home.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,22 +23,23 @@
import com.deem.zkui.vo.LeafBean;
import com.deem.zkui.vo.ZKNode;
import freemarker.template.TemplateException;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.ZooKeeper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.ZooKeeper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@SuppressWarnings("serial")
@WebServlet(urlPatterns = {"/home"}, loadOnStartup = 1)
Expand All @@ -51,8 +52,10 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t
logger.debug("Home Get Action!");
try {
Properties globalProps = (Properties) this.getServletContext().getAttribute("globalProps");
Dao dao = new Dao(globalProps);
String zkServer = globalProps.getProperty("zkServer");
String[] zkServerLst = zkServer.split(",");
boolean showDesc = "true".equalsIgnoreCase(globalProps.getProperty("showDesc", "false"));

Map<String, Object> templateParam = new HashMap<>();
String zkPath = request.getParameter("zkPath");
Expand Down Expand Up @@ -87,9 +90,14 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t
}
}

if (showDesc) {
dao.putDescription(leafLst);
}

templateParam.put("displayPath", displayPath);
templateParam.put("parentPath", parentPath);
templateParam.put("currentPath", currentPath);
templateParam.put("showDesc", showDesc);
templateParam.put("nodeLst", nodeLst);
templateParam.put("leafLst", leafLst);
templateParam.put("breadCrumbLst", displayPath.split("/"));
Expand Down Expand Up @@ -119,6 +127,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
String action = request.getParameter("action");
String currentPath = request.getParameter("currentPath");
String displayPath = request.getParameter("displayPath");
String newDescription = request.getParameter("newDescription");
String newProperty = request.getParameter("newProperty");
String newValue = request.getParameter("newValue");
String newNode = request.getParameter("newNode");
Expand All @@ -143,9 +152,10 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
if (!newProperty.equals("") && !currentPath.equals("") && authRole.equals(ZooKeeperUtil.ROLE_ADMIN)) {
//Save the new node.
ZooKeeperUtil.INSTANCE.createNode(currentPath, newProperty, newValue, ServletUtil.INSTANCE.getZookeeper(request, response, zkServerLst[0], globalProps));
dao.insertDescription(currentPath + '/' + newProperty, newDescription);
request.getSession().setAttribute("flashMsg", "Property Saved!");
if (ZooKeeperUtil.INSTANCE.checkIfPwdField(newProperty)) {
newValue = ZooKeeperUtil.INSTANCE.SOPA_PIPA;
newValue = ZooKeeperUtil.SOPA_PIPA;
}
dao.insertHistory((String) request.getSession().getAttribute("authName"), request.getRemoteAddr(), "Saving Property: " + currentPath + "," + newProperty + "=" + newValue);
}
Expand All @@ -155,9 +165,10 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
if (!newProperty.equals("") && !currentPath.equals("") && authRole.equals(ZooKeeperUtil.ROLE_ADMIN)) {
//Save the new node.
ZooKeeperUtil.INSTANCE.setPropertyValue(currentPath, newProperty, newValue, ServletUtil.INSTANCE.getZookeeper(request, response, zkServerLst[0], globalProps));
dao.insertDescription(currentPath + '/' + newProperty, newDescription);
request.getSession().setAttribute("flashMsg", "Property Updated!");
if (ZooKeeperUtil.INSTANCE.checkIfPwdField(newProperty)) {
newValue = ZooKeeperUtil.INSTANCE.SOPA_PIPA;
newValue = ZooKeeperUtil.SOPA_PIPA;
}
dao.insertHistory((String) request.getSession().getAttribute("authName"), request.getRemoteAddr(), "Updating Property: " + currentPath + "," + newProperty + "=" + newValue);
}
Expand All @@ -178,6 +189,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
request.getSession().setAttribute("flashMsg", "Delete Completed!");
dao.insertHistory((String) request.getSession().getAttribute("authName"), request.getRemoteAddr(), "Deleting Property: " + delPropLst.toString());
}
dao.deleteDescription(propChkGroup);
}
if (nodeChkGroup != null) {
for (String node : nodeChkGroup) {
Expand All @@ -186,6 +198,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
request.getSession().setAttribute("flashMsg", "Delete Completed!");
dao.insertHistory((String) request.getSession().getAttribute("authName"), request.getRemoteAddr(), "Deleting Nodes: " + delNodeLst.toString());
}
dao.deleteDescriptionByNode(nodeChkGroup);
}

}
Expand Down
35 changes: 18 additions & 17 deletions src/main/java/com/deem/zkui/controller/Import.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,23 @@
*/
package com.deem.zkui.controller;

import com.deem.zkui.dao.Dao;
import com.deem.zkui.utils.ServletUtil;
import com.deem.zkui.utils.ZooKeeperUtil;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.zookeeper.KeeperException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
Expand All @@ -25,26 +42,10 @@
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.zookeeper.KeeperException;
import com.deem.zkui.dao.Dao;
import com.deem.zkui.utils.ServletUtil;
import com.deem.zkui.utils.ZooKeeperUtil;
import java.util.Arrays;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@SuppressWarnings("serial")
@WebServlet(urlPatterns = {"/import"})
Expand Down
Loading