diff options
Diffstat (limited to 'juick-xmpp/src/main/java')
3 files changed, 60 insertions, 79 deletions
diff --git a/juick-xmpp/src/main/java/com/juick/components/XMPPServer.java b/juick-xmpp/src/main/java/com/juick/components/XMPPServer.java index b892f207..31aa0bc7 100644 --- a/juick-xmpp/src/main/java/com/juick/components/XMPPServer.java +++ b/juick-xmpp/src/main/java/com/juick/components/XMPPServer.java @@ -45,7 +45,6 @@ public class XMPPServer implements DisposableBean, Stream.StreamListener, JuickBot bot; public String HOSTNAME, componentName; - public String STATSFILE = null; public String keystore; public String keystorePassword; public List<String> brokenSSLhosts; @@ -67,7 +66,6 @@ public class XMPPServer implements DisposableBean, Stream.StreamListener, int componentPort = NumberUtils.toInt(env.getProperty("component_port"), 5347); int s2sPort = NumberUtils.toInt(env.getProperty("s2s_port"), 5269); JID Jid = new JID(env.getProperty("xmppbot_jid")); - STATSFILE = env.getProperty("statsfile"); keystore = env.getProperty("keystore"); keystorePassword = env.getProperty("keystore_password"); brokenSSLhosts = Arrays.asList(env.getProperty("broken_ssl_hosts", "").split(",")); diff --git a/juick-xmpp/src/main/java/com/juick/components/controllers/StatusController.java b/juick-xmpp/src/main/java/com/juick/components/controllers/StatusController.java new file mode 100644 index 00000000..9617ab56 --- /dev/null +++ b/juick-xmpp/src/main/java/com/juick/components/controllers/StatusController.java @@ -0,0 +1,31 @@ +package com.juick.components.controllers; + +import com.juick.components.XMPPServer; +import com.juick.server.helpers.Status; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.inject.Inject; + +/** + * Created by vitalyster on 24.10.2016. + */ +@Controller +@ResponseBody +public class StatusController { + @Inject + XMPPServer xmpp; + + @RequestMapping(method = RequestMethod.GET, value = "/", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) + public Status status() { + if (xmpp != null) { + String status = String.format("s2s in: %d, s2s out: %d, cached: %d", + xmpp.getInConnections().size(), xmpp.getOutConnections().size(), xmpp.getOutCache().size()); + return new Status(status); + } + return new Status("Error"); + } +} diff --git a/juick-xmpp/src/main/java/com/juick/components/s2s/CleaningUp.java b/juick-xmpp/src/main/java/com/juick/components/s2s/CleaningUp.java index 031a7b34..52d2f3a6 100644 --- a/juick-xmpp/src/main/java/com/juick/components/s2s/CleaningUp.java +++ b/juick-xmpp/src/main/java/com/juick/components/s2s/CleaningUp.java @@ -2,9 +2,6 @@ package com.juick.components.s2s; import com.juick.components.XMPPServer; -import java.io.FileNotFoundException; -import java.io.PrintWriter; -import java.io.UnsupportedEncodingException; import java.util.Iterator; /** @@ -21,89 +18,44 @@ public class CleaningUp implements Runnable { @Override public void run() { while (true) { - try { - PrintWriter statsFile = new PrintWriter(xmpp.STATSFILE, "UTF-8"); - statsFile.write("<html><body><h2>Threads: " + Thread.activeCount() + "</h2>"); - statsFile.write("<h2>Out (" + xmpp.getOutConnections().size() + ")</h2><table border=1><tr><th>to</th><th>sid</th><th>inactive</th><th>out packets</th><th>out bytes</th></tr>"); - - long now = System.currentTimeMillis(); - - synchronized (xmpp.getOutConnections()) { - for (Iterator<ConnectionOut> i = xmpp.getOutConnections().iterator(); i.hasNext();) { - ConnectionOut c = i.next(); - int inactive = (int) ((double) (now - c.tsLocalData) / 1000.0); - if (inactive > 900) { - c.closeConnection(); - i.remove(); - } else { - statsFile.write(" <tr>"); - statsFile.write(" <td>" + c.to + "</td>\n"); - statsFile.write(" <td>" + c.streamID + "</td>\n"); - statsFile.write(" <td>" + inactive + "</td>\n"); - statsFile.write(" <td>" + c.packetsLocal + "</td>\n"); - statsFile.write(" <td>" + c.bytesLocal + "</td>\n"); - statsFile.write(" <tr>"); - } + long now = System.currentTimeMillis(); + + synchronized (xmpp.getOutConnections()) { + for (Iterator<ConnectionOut> i = xmpp.getOutConnections().iterator(); i.hasNext(); ) { + ConnectionOut c = i.next(); + int inactive = (int) ((double) (now - c.tsLocalData) / 1000.0); + if (inactive > 900) { + c.closeConnection(); + i.remove(); } } + } - statsFile.write("</table><h2>In (" + xmpp.getInConnections().size() + ")</h2><table border=1><tr><th>from</th><th>sid</th><th>inactive</th><th>in packets</th></tr>"); - - synchronized (xmpp.getInConnections()) { - for (Iterator<ConnectionIn> i = xmpp.getInConnections().iterator(); i.hasNext();) { - ConnectionIn c = i.next(); - int inactive = (int) ((double) (now - c.tsRemoteData) / 1000.0); - if (inactive > 900) { - c.closeConnection(); - i.remove(); - } else { - statsFile.write(" <tr>"); - if (c.from.isEmpty()) { - statsFile.write(" <td> </td>\n"); - } else if (c.from.size() == 1) { - statsFile.write(" <td>" + c.from.get(0) + "</td>\n"); - } else { - String out = " <td>"; - for (int n = 0; n < c.from.size(); n++) { - if (n > 0) { - out += "<br/>"; - } - out += c.from.get(n); - } - statsFile.write(out + "</td>\n"); - } - statsFile.write(" <td>" + c.streamID + "</td>\n"); - statsFile.write(" <td>" + inactive + "</td>\n"); - statsFile.write(" <td>" + c.packetsRemote + "</td>\n"); - statsFile.write(" <tr>"); - } + synchronized (xmpp.getInConnections()) { + for (Iterator<ConnectionIn> i = xmpp.getInConnections().iterator(); i.hasNext(); ) { + ConnectionIn c = i.next(); + int inactive = (int) ((double) (now - c.tsRemoteData) / 1000.0); + if (inactive > 900) { + c.closeConnection(); + i.remove(); } } + } - statsFile.write("</table><h2>Cache (" + xmpp.getOutCache().size() + ")</h2><table border=1><tr><th>host</th><th>live</th><th>size</th></tr>"); - - synchronized (xmpp.getOutCache()) { - for (Iterator<CacheEntry> i = xmpp.getOutCache().iterator(); i.hasNext();) { - CacheEntry c = i.next(); - int inactive = (int) ((double) (now - c.tsCreated) / 1000.0); - if (inactive > 600) { - i.remove(); - } else { - statsFile.write("<tr><td>" + c.hostname + "</td><td>" + inactive + "</td><td>" + c.xml.length() + "</td></tr>"); - } + synchronized (xmpp.getOutCache()) { + for (Iterator<CacheEntry> i = xmpp.getOutCache().iterator(); i.hasNext(); ) { + CacheEntry c = i.next(); + int inactive = (int) ((double) (now - c.tsCreated) / 1000.0); + if (inactive > 600) { + i.remove(); } } - - statsFile.write("</table></body></html>"); - statsFile.close(); - - try { - Thread.sleep(10000); - } catch (InterruptedException e) { - } - } catch (FileNotFoundException e) { - } catch (UnsupportedEncodingException e) { } + try { + Thread.sleep(10000); + } catch (InterruptedException e) { + } + } } } |