wip on trust users view

This commit is contained in:
Zlatin Balevsky
2019-12-08 18:11:12 +00:00
parent b468a6f19b
commit 3c43244631
4 changed files with 133 additions and 6 deletions

View File

@ -28,8 +28,8 @@ public class TrustServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String action = req.getParameter("action");
if (action == null) {
String section = req.getParameter("section");
if (section == null) {
resp.sendError(403, "Bad action param");
return;
}
@ -37,9 +37,9 @@ public class TrustServlet extends HttpServlet {
StringBuilder sb = new StringBuilder();
sb.append("<?xml version='1.0' encoding='UTF-8'?>");
if (action.equals("revision")) {
if (section.equals("revision")) {
sb.append("<Revision>").append(trustManager.getRevision()).append("</Revision>");
} else if (action.equals("users")) {
} else if (section.equals("users")) {
sb.append("<Users>");
sb.append("<Trusted>");
@ -56,7 +56,7 @@ public class TrustServlet extends HttpServlet {
sb.append("</Users>");
} else if (action.equals("subscriptions")) {
} else if (section.equals("subscriptions")) {
sb.append("<Subscriptions>");
for (RemoteTrustList list : core.getTrustSubscriber().getRemoteTrustLists().values()) {
@ -70,7 +70,7 @@ public class TrustServlet extends HttpServlet {
sb.append("</Subscriptions>");
} else if (action.equals("list")) {
} else if (section.equals("list")) {
String userB64 = req.getParameter("user");
Persona p;
try {

View File

@ -0,0 +1,83 @@
class Persona {
constructor(xmlNode) {
this.user = xmlNode.getElementsByTagName("User")[0].childNodes[0].nodeValue
this.userB64 = xmlNode.getElementsByTagName("UserB64")[0].childNodes[0].nodeValue
this.reason = xmlNode.getElementsByTagName("Reason")[0].childNodes[0].nodeValue
}
}
var trusted = new Map()
var distrusted = new Map()
var revision = -1
function updateTable(map, divId) {
var divElement = document.getElementById(divId)
var tableHtml = "<table><thead><tr><th>User</th><th>Reason</th><th>Actions</th></tr></thead><tbody>"
var isTrusted = (map == trusted)
for (var [ignored, user] of map) {
tableHtml += "<tr>"
tableHtml += "<td>" + user.user + "</td>"
tableHtml += "<td>" + user.reason + "</td>"
if (isTrusted)
tableHtml += "<td>Mark Neutral Mark Distrusted</td>
else
tableHtml += "<td>Mark Neutral Mark Trusted</td>"
tableHtml += "</tr>"
}
tableHtml += "</tbody></table>"
divElement.innerHTML = tableHtml
}
function refreshUsers() {
var xmlhttp = new XMLHttpRequest()
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
trusted.clear()
distrusted.clear()
var trustedElement = this.responseXML.getElementsByTagName("Trusted")
var trustedUsers = trustedElement.getElementsByTagName("Persona")
var i
for (i = 0; i < trustedUsers.length; i++) {
var persona = new Persona(trustedUsers[i])
trusted.set(persona.user, persona)
}
var distrustedElement = this.responseXML.getElementsByTagName("Distrusted")
var distrustedUsers = distrustedElement.getElementsByTagName("Persona")
for (i = 0; i < distrustedUsers.length; i++) {
var persona = new Persona(distrustedUsers[i])
distrusted.set(persona.user, persona)
}
updateTable(trusted, "trustedUsers")
updateTable(distrusted, "distrustedUsers")
}
}
xmlhttp.open("GET", "/MuWire/Trust?section=users", true)
xmlhttp.send()
}
function fetchRevision() {
var xmlhttp = new XMLHttpRequest()
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var xmlDoc = this.responseXML
var newRevision = xmlDoc.childNodes[0].nodeValue
if (newRevision > revision) {
revision = newRevision
refreshUsers()
}
}
}
xmlhttp.open("GET", "/MuWire/Trust?section=revision", true)
xmlhttp.send()
}
function initTrustUsers() {
setTimeout(fetchRevision, 1)
setInterval(fetchRevision, 3000)
}

View File

@ -0,0 +1,39 @@
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@include file="initcode.jsi"%>
<%
String pagetitle="Trust Users";
%>
<html>
<head>
<%@ include file="css.jsi"%>
<script src="js/util.js?<%=version%>" type="text/javascript"></script>
<script src="js/trustUsers.js?<%=version%>" type="text/javascript"></script>
</head>
<body onload="initConnectionsCount(); initTrustUsers();">
<%@ include file="header.jsi"%>
<aside>
<%@include file="sidebar.jsi"%>
</aside>
<section class="main foldermain">
<div id="table-wrapper">
<div id="table-scroll">
<div id="trustedUsers"></div>
</div>
</div>
<hr/>
<div id="refresh-link"></div>
<div id="table-wrapper">
<div id="table-scroll">
<div id="distrustedUsers"></div>
</div>
</div>
<hr/>
</section>
</body>
</html>

View File

@ -118,4 +118,9 @@ Mappings without the .jsp suffix
<url-pattern>/init</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>com.muwire.webui.TrustUsers_jsp</servlet-name>
<url-pattern>/TrustUsers</url-pattern>
</servlet-mapping>
</web-app>