server-session-summary.jsp 6.55 KB
Newer Older
Gaston Dombiak's avatar
Gaston Dombiak committed
1 2 3 4
<%--
  -	$Revision$
  -	$Date$
  -
5
  - Copyright (C) 2004-2008 Jive Software. All rights reserved.
Gaston Dombiak's avatar
Gaston Dombiak committed
6 7
  -
  - This software is published under the terms of the GNU Public License (GPL),
8 9
  - a copy of which is included in this distribution, or a commercial license
  - agreement with Jive.
Gaston Dombiak's avatar
Gaston Dombiak committed
10 11
--%>

12
<%@ page import="org.jivesoftware.openfire.SessionManager,
13 14
                 org.jivesoftware.openfire.session.OutgoingServerSession,
                 org.jivesoftware.openfire.session.Session,
15
                 org.jivesoftware.util.ParamUtils,
16
                 java.util.*"
Gaston Dombiak's avatar
Gaston Dombiak committed
17 18 19 20 21 22 23 24 25 26
    errorPage="error.jsp"
%>

<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %>
<%!
    final int DEFAULT_RANGE = 15;
    final int[] RANGE_PRESETS = {15, 25, 50, 75, 100};
%>

27 28
<jsp:useBean id="webManager" class="org.jivesoftware.util.WebManager"  />
<% webManager.init(request, response, session, application, out ); %>
Gaston Dombiak's avatar
Gaston Dombiak committed
29 30 31

<%  // Get parameters
    int start = ParamUtils.getIntParameter(request,"start",0);
32
    int range = ParamUtils.getIntParameter(request,"range",webManager.getRowsPerPage("server-session-summary", DEFAULT_RANGE));
Gaston Dombiak's avatar
Gaston Dombiak committed
33 34 35
    boolean close = ParamUtils.getBooleanParameter(request,"close");
    String hostname = ParamUtils.getParameter(request,"hostname");

36
    if (request.getParameter("range") != null) {
37
        webManager.setRowsPerPage("server-session-summary", range);
38 39
    }

Gaston Dombiak's avatar
Gaston Dombiak committed
40
    // Get the user manager
41
    SessionManager sessionManager = webManager.getSessionManager();
Gaston Dombiak's avatar
Gaston Dombiak committed
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56

    Collection<String> hostnames = new TreeSet<String>();
    // Get the incoming session hostnames
    Collection<String> inHostnames = sessionManager.getIncomingServers();
    hostnames.addAll(inHostnames);
    // Get the outgoing session hostnames
    Collection<String> outHostnames = sessionManager.getOutgoingServers();
    hostnames.addAll(outHostnames);

    // Get the session count
    int sessionCount = hostnames.size();

    // Close all connections related to the specified host
    if (close) {
        try {
57
            for (Session sess : sessionManager.getIncomingServerSessions(hostname)) {
58
                sess.close();
Gaston Dombiak's avatar
Gaston Dombiak committed
59
            }
60 61

            Session sess = sessionManager.getOutgoingServerSession(hostname);
Gaston Dombiak's avatar
Gaston Dombiak committed
62
            if (sess != null) {
63
                sess.close();
Gaston Dombiak's avatar
Gaston Dombiak committed
64
            }
65 66
            // Log the event
            webManager.logEvent("closed server session for "+hostname, null);
Gaston Dombiak's avatar
Gaston Dombiak committed
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
            // wait one second
            Thread.sleep(1000L);
        }
        catch (Exception ignored) {
            // Session might have disappeared on its own
        }
        // redirect back to this page
        response.sendRedirect("server-session-summary.jsp?close=success");
        return;
    }
    // paginator vars
    int numPages = (int)Math.ceil((double)sessionCount/(double)range);
    int curPage = (start/range) + 1;
    int maxIndex = (start+range <= sessionCount ? start+range : sessionCount);
%>

83 84 85 86 87 88 89
<html>
    <head>
        <title><fmt:message key="server.session.summary.title"/></title>
        <meta name="pageID" content="server-session-summary"/>
        <meta name="helpPage" content="view_active_server_sessions.html"/>
    </head>
    <body>
Gaston Dombiak's avatar
Gaston Dombiak committed
90 91 92 93 94 95 96 97 98

<%  if ("success".equals(request.getParameter("close"))) { %>

    <p class="jive-success-text">
    <fmt:message key="server.session.summary.close" />
    </p>

<%  } %>

99
<p>
Gaston Dombiak's avatar
Gaston Dombiak committed
100 101 102 103
<fmt:message key="server.session.summary.active" />: <b><%= hostnames.size() %></b>

<%  if (numPages > 1) { %>

104
    - <fmt:message key="global.showing" /> <%= (start+1) %>-<%= (start+range) %>
Gaston Dombiak's avatar
Gaston Dombiak committed
105 106 107 108 109

<%  } %>
 - <fmt:message key="server.session.summary.sessions_per_page" />:
<select size="1" onchange="location.href='server-session-summary.jsp?start=0&range=' + this.options[this.selectedIndex].value;">

110
    <% for (int aRANGE_PRESETS : RANGE_PRESETS) { %>
Gaston Dombiak's avatar
Gaston Dombiak committed
111

112 113 114
    <option value="<%= aRANGE_PRESETS %>"
            <%= (aRANGE_PRESETS == range ? "selected" : "") %>><%= aRANGE_PRESETS %>
    </option>
Gaston Dombiak's avatar
Gaston Dombiak committed
115

116
    <% } %>
Gaston Dombiak's avatar
Gaston Dombiak committed
117 118

</select>
119
</p>
Gaston Dombiak's avatar
Gaston Dombiak committed
120 121 122 123

<%  if (numPages > 1) { %>

    <p>
124
    <fmt:message key="global.pages" />:
Gaston Dombiak's avatar
Gaston Dombiak committed
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
    [
    <%  for (int i=0; i<numPages; i++) {
            String sep = ((i+1)<numPages) ? " " : "";
            boolean isCurrent = (i+1) == curPage;
    %>
        <a href="server-session-summary.jsp?start=<%= (i*range) %>"
         class="<%= ((isCurrent) ? "jive-current" : "") %>"
         ><%= (i+1) %></a><%= sep %>

    <%  } %>
    ]
    </p>

<%  } %>

<p>
141 142 143 144
<fmt:message key="server.session.summary.info">
    <fmt:param value="<%= "<a href='server2server-settings.jsp'>" %>" />
    <fmt:param value="<%= "</a>" %>" />
</fmt:message>
Gaston Dombiak's avatar
Gaston Dombiak committed
145 146 147 148 149 150 151 152
</p>

<div class="jive-table">
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<thead>
    <tr>
        <th>&nbsp;</th>
        <th nowrap><fmt:message key="server.session.label.host" /></th>
153
        <th nowrap colspan="3"><fmt:message key="server.session.label.connection" /></th>
Gaston Dombiak's avatar
Gaston Dombiak committed
154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172
        <th nowrap><fmt:message key="server.session.label.creation" /></th>
        <th nowrap><fmt:message key="server.session.label.last_active" /></th>
        <th nowrap><fmt:message key="server.session.label.close_connect" /></th>
    </tr>
</thead>
<tbody>
    <%  // Check if no out/in connection to/from a remote server exists
        if (hostnames.isEmpty()) {
    %>
        <tr>
            <td colspan="9">

                <fmt:message key="server.session.summary.not_session" />

            </td>
        </tr>

    <%  } %>

173
    <% int count = 0;
Gaston Dombiak's avatar
Gaston Dombiak committed
174 175 176
        hostnames = new ArrayList<String>(hostnames).subList(start, maxIndex);
        for (String host : hostnames) {
            count++;
177
            List<IncomingServerSession> inSessions = sessionManager.getIncomingServerSessions(host);
Gaston Dombiak's avatar
Gaston Dombiak committed
178
            OutgoingServerSession outSession = sessionManager.getOutgoingServerSession(host);
179
            if (inSessions.isEmpty() && outSession == null) {
Gaston Dombiak's avatar
Gaston Dombiak committed
180 181 182 183 184 185 186 187 188 189 190 191 192 193
                // If the connections were just closed then skip this host
                continue;
            }
    %>
        <%@ include file="server-session-row.jspf" %>
    <%  } %>

</tbody>
</table>
</div>

<%  if (numPages > 1) { %>

    <p>
194
    <fmt:message key="global.pages" />:
Gaston Dombiak's avatar
Gaston Dombiak committed
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214
    [
    <%  for (int i=0; i<numPages; i++) {
            String sep = ((i+1)<numPages) ? " " : "";
            boolean isCurrent = (i+1) == curPage;
    %>
        <a href="server-session-summary.jsp?start=<%= (i*range) %>"
         class="<%= ((isCurrent) ? "jive-current" : "") %>"
         ><%= (i+1) %></a><%= sep %>

    <%  } %>
    ]
    </p>

<%  } %>

<br>
<p>
<fmt:message key="server.session.summary.last_update" />: <%= JiveGlobals.formatDateTime(new Date()) %>
</p>

215 216
    </body>
</html>