升级Tomcat版本 apache-tomcat-7.0.77
diff --git a/tomcat-cas/webapps/manager/META-INF/context.xml b/tomcat-cas/webapps/manager/META-INF/context.xml
index 33ecf23..7afc3a8 100644
--- a/tomcat-cas/webapps/manager/META-INF/context.xml
+++ b/tomcat-cas/webapps/manager/META-INF/context.xml
@@ -15,7 +15,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<Context antiResourceLocking="false" privileged="true" useHttpOnly="true" >
+<Context antiResourceLocking="false" privileged="true" >
<!--
Remove the comment markers from around the Valve below to limit access to
the manager application to clients connecting from localhost
diff --git a/tomcat-cas/webapps/manager/WEB-INF/jsp/401.jsp b/tomcat-cas/webapps/manager/WEB-INF/jsp/401.jsp
index 8b4b024..a2924d0 100644
--- a/tomcat-cas/webapps/manager/WEB-INF/jsp/401.jsp
+++ b/tomcat-cas/webapps/manager/WEB-INF/jsp/401.jsp
@@ -14,6 +14,7 @@
See the License for the specific language governing permissions and
limitations under the License.
--%>
+<%@ page session="false" trimDirectiveWhitespaces="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
@@ -45,7 +46,7 @@
<user username="tomcat" password="s3cret" roles="manager-gui"/>
</pre>
<p>
- Note that for Tomcat 6.0.30 onwards, the roles required to use the manager
+ Note that for Tomcat 7 onwards, the roles required to use the manager
application were changed from the single <tt>manager</tt> role to the
following four roles. You will need to assign the role(s) required for
the functionality you wish to access.
@@ -64,8 +65,6 @@
are not. To maintain the CSRF protection:
</p>
<ul>
- <li>The deprecated <tt>manager</tt> role should not be assigned to any
- user.</li>
<li>Users with the <tt>manager-gui</tt> role should not be granted either
the <tt>manager-script</tt> or <tt>manager-jmx</tt> roles.</li>
<li>If the text or jmx interfaces are accessed through a browser (e.g. for
@@ -78,4 +77,4 @@
</p>
</body>
-</html>
\ No newline at end of file
+</html>
diff --git a/tomcat-cas/webapps/manager/WEB-INF/jsp/403.jsp b/tomcat-cas/webapps/manager/WEB-INF/jsp/403.jsp
index 3f3513d..f626814 100644
--- a/tomcat-cas/webapps/manager/WEB-INF/jsp/403.jsp
+++ b/tomcat-cas/webapps/manager/WEB-INF/jsp/403.jsp
@@ -14,6 +14,7 @@
See the License for the specific language governing permissions and
limitations under the License.
--%>
+<%@ page session="false" trimDirectiveWhitespaces="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
@@ -34,13 +35,13 @@
</p>
<p>
If you have already configured the Manager application to allow access and
- you have used your browser's back button, used a saved book-mark or similar
+ you have used your browsers back button, used a saved book-mark or similar
then you may have triggered the cross-site request forgery (CSRF) protection
that has been enabled for the HTML interface of the Manager application. You
- will need to reset this protection by returning to the
+ will need to reset this protection by returning to the
<a href="<%=request.getContextPath()%>/html">main Manager page</a>. Once you
return to this page, you will be able to continue using the Manager
- appliction's HTML interface normally. If you continue to see this access
+ application's HTML interface normally. If you continue to see this access
denied message, check that you have the necessary permissions to access this
application.
</p>
@@ -60,11 +61,10 @@
<user username="tomcat" password="s3cret" roles="manager-gui"/>
</pre>
<p>
- Note that for Tomcat 6.0.30 onwards, the roles required to use the manager
- application were changed from the single <tt>manager</tt> role to add the
- following four roles. (The manager role is still available but should not be
- used as it avoids the CSRF protection). You will need to assign the role(s)
- required for the functionality you wish to access.
+ Note that for Tomcat 7 onwards, the roles required to use the manager
+ application were changed from the single <tt>manager</tt> role to the
+ following four roles. You will need to assign the role(s) required for
+ the functionality you wish to access.
</p>
<ul>
<li><tt>manager-gui</tt> - allows access to the HTML GUI and the status
@@ -80,11 +80,11 @@
are not. To maintain the CSRF protection:
</p>
<ul>
- <li>users with the <tt>manager-gui</tt> role should not be granted either
+ <li>Users with the <tt>manager-gui</tt> role should not be granted either
the <tt>manager-script</tt> or <tt>manager-jmx</tt> roles.</li>
- <li>if the text or jmx interfaces are accessed through a browser (e.g. for
- testing since these interfaces are intended for tools not humans) then
- the browser must be closed afterwards to terminate the session.</li>
+ <li>If the text or jmx interfaces are accessed through a browser (e.g. for
+ testing since these interfaces are intended for tools not humans) then
+ the browser must be closed afterwards to terminate the session.</li>
</ul>
<p>
For more information - please see the
diff --git a/tomcat-cas/webapps/manager/WEB-INF/jsp/404.jsp b/tomcat-cas/webapps/manager/WEB-INF/jsp/404.jsp
new file mode 100644
index 0000000..7acd51d
--- /dev/null
+++ b/tomcat-cas/webapps/manager/WEB-INF/jsp/404.jsp
@@ -0,0 +1,63 @@
+<%--
+ 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.
+--%>
+<%@ page import="org.apache.catalina.util.RequestUtil" session="false"
+ trimDirectiveWhitespaces="true" %>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+ <head>
+ <title>404 Not found</title>
+ <style type="text/css">
+ <!--
+ BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;font-size:12px;}
+ H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}
+ PRE, TT {border: 1px dotted #525D76}
+ A {color : black;}A.name {color : black;}
+ -->
+ </style>
+ </head>
+ <body>
+ <h1>404 Not found</h1>
+ <p>
+ The page you tried to access
+ (<%=RequestUtil.filter((String) request.getAttribute(
+ "javax.servlet.error.request_uri"))%>)
+ does not exist.
+ </p>
+ <p>
+ The Manager application has been re-structured for Tomcat 7 onwards and some
+ of URLs have changed. All URLs used to access the Manager application should
+ now start with one of the following options:
+ </p>
+ <ul>
+ <li><%=request.getContextPath()%>/html for the HTML GUI</li>
+ <li><%=request.getContextPath()%>/text for the text interface</li>
+ <li><%=request.getContextPath()%>/jmxproxy for the JMX proxy</li>
+ <li><%=request.getContextPath()%>/status for the status pages</li>
+ </ul>
+ <p>
+ Note that the URL for the text interface has changed from
+ "<%=request.getContextPath()%>" to
+ "<%=request.getContextPath()%>/text".
+ </p>
+ <p>
+ You probably need to adjust the URL you are using to access the Manager
+ application. However, there is always a chance you have found a bug in the
+ Manager application. If you are sure you have found a bug, and that the bug
+ has not already been reported, please report it to the Apache Tomcat team.
+ </p>
+ </body>
+</html>
diff --git a/tomcat-cas/webapps/manager/WEB-INF/jsp/sessionDetail.jsp b/tomcat-cas/webapps/manager/WEB-INF/jsp/sessionDetail.jsp
index 40e8979..0d903e6 100644
--- a/tomcat-cas/webapps/manager/WEB-INF/jsp/sessionDetail.jsp
+++ b/tomcat-cas/webapps/manager/WEB-INF/jsp/sessionDetail.jsp
@@ -20,7 +20,8 @@
<%@page import="javax.servlet.http.HttpSession" %>
<%@page import="org.apache.catalina.Session" %>
<%@page import="org.apache.catalina.manager.JspHelper" %>
-<!DOCTYPE html
+<%@page import="org.apache.catalina.util.ContextName" %>
+<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<%--!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
@@ -28,12 +29,20 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<% String path = (String) request.getAttribute("path");
+ String version = (String) request.getAttribute("version");
+ ContextName cn = new ContextName(path, version);
Session currentSession = (Session)request.getAttribute("currentSession");
- HttpSession currentHttpSession = currentSession.getSession();
- String currentSessionId = JspHelper.escapeXml(currentSession.getId());
+ String currentSessionId = null;
+ HttpSession currentHttpSession = null;
+ if (currentSession != null) {
+ currentHttpSession = currentSession.getSession();
+ currentSessionId = JspHelper.escapeXml(currentSession.getId());
+ } else {
+ currentSessionId = "Session invalidated";
+ }
String submitUrl = JspHelper.escapeXml(response.encodeURL(
((HttpServletRequest) pageContext.getRequest()).getRequestURI() +
- "?path=" + path));
+ "?path=" + path + "&version=" + version));
%>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
@@ -42,108 +51,127 @@
<meta http-equiv="expires" content="0"/><!-- 0 is an invalid value and should be treated as 'now' -->
<meta http-equiv="content-language" content="en"/>
<meta name="author" content="Cedrik LIME"/>
- <meta name="copyright" content="copyright 2005-2014 the Apache Software Foundation"/>
+ <meta name="copyright" content="copyright 2005-2017 the Apache Software Foundation"/>
<meta name="robots" content="noindex,nofollow,noarchive"/>
<title>Sessions Administration: details for <%= currentSessionId %></title>
</head>
<body>
-<h1>Details for Session <%= currentSessionId %></h1>
+<% if (currentHttpSession == null) { %>
+ <h1><%=currentSessionId%></h1>
+<% } else { %>
+ <h1>Details for Session <%= currentSessionId %></h1>
-<table style="text-align: left;" border="0">
- <tr>
- <th>Session Id</th>
- <td><%= currentSessionId %></td>
- </tr>
- <tr>
- <th>Guessed Locale</th>
- <td><%= JspHelper.guessDisplayLocaleFromSession(currentSession) %></td>
- </tr>
- <tr>
- <th>Guessed User</th>
- <td><%= JspHelper.guessDisplayUserFromSession(currentSession) %></td>
- </tr>
- <tr>
- <th>Creation Time</th>
- <td><%= JspHelper.getDisplayCreationTimeForSession(currentSession) %></td>
- </tr>
- <tr>
- <th>Last Accessed Time</th>
- <td><%= JspHelper.getDisplayLastAccessedTimeForSession(currentSession) %></td>
- </tr>
- <tr>
- <th>Session Max Inactive Interval</th>
- <td><%= JspHelper.secondsToTimeString(currentSession.getMaxInactiveInterval()) %></td>
- </tr>
- <tr>
- <th>Used Time</th>
- <td><%= JspHelper.getDisplayUsedTimeForSession(currentSession) %></td>
- </tr>
- <tr>
- <th>Inactive Time</th>
- <td><%= JspHelper.getDisplayInactiveTimeForSession(currentSession) %></td>
- </tr>
- <tr>
- <th>TTL</th>
- <td><%= JspHelper.getDisplayTTLForSession(currentSession) %></td>
- </tr>
-</table>
+ <table style="text-align: left;" border="0">
+ <tr>
+ <th>Session Id</th>
+ <td><%= currentSessionId %></td>
+ </tr>
+ <tr>
+ <th>Guessed Locale</th>
+ <td><%= JspHelper.guessDisplayLocaleFromSession(currentSession) %></td>
+ </tr>
+ <tr>
+ <th>Guessed User</th>
+ <td><%= JspHelper.guessDisplayUserFromSession(currentSession) %></td>
+ </tr>
+ <tr>
+ <th>Creation Time</th>
+ <td><%= JspHelper.getDisplayCreationTimeForSession(currentSession) %></td>
+ </tr>
+ <tr>
+ <th>Last Accessed Time</th>
+ <td><%= JspHelper.getDisplayLastAccessedTimeForSession(currentSession) %></td>
+ </tr>
+ <tr>
+ <th>Session Max Inactive Interval</th>
+ <td><%= JspHelper.secondsToTimeString(currentSession.getMaxInactiveInterval()) %></td>
+ </tr>
+ <tr>
+ <th>Used Time</th>
+ <td><%= JspHelper.getDisplayUsedTimeForSession(currentSession) %></td>
+ </tr>
+ <tr>
+ <th>Inactive Time</th>
+ <td><%= JspHelper.getDisplayInactiveTimeForSession(currentSession) %></td>
+ </tr>
+ <tr>
+ <th>TTL</th>
+ <td><%= JspHelper.getDisplayTTLForSession(currentSession) %></td>
+ </tr>
+ </table>
-<form method="post" action="<%= submitUrl %>">
- <div>
- <input type="hidden" name="sessionId" value="<%= currentSessionId %>" />
- <input type="hidden" name="action" value="sessionDetail" />
- <input type="submit" value="Refresh" />
- </div>
-</form>
+ <form method="post" action="<%= submitUrl %>">
+ <div>
+ <input type="hidden" name="sessionId" value="<%= currentSessionId %>" />
+ <input type="hidden" name="action" value="sessionDetail" />
+ <%
+ if ("Primary".equals(request.getParameter("sessionType"))) {
+ %>
+ <input type="hidden" name="sessionType" value="Primary" />
+ <%
+ }
+ %> <input type="submit" value="Refresh" />
+ </div>
+ </form>
-<div class="error"><%= JspHelper.escapeXml(request.getAttribute("error")) %></div>
-<div class="message"><%= JspHelper.escapeXml(request.getAttribute("message")) %></div>
+ <div class="error"><%= JspHelper.escapeXml(request.getAttribute("error")) %></div>
+ <div class="message"><%= JspHelper.escapeXml(request.getAttribute("message")) %></div>
-<table style="text-align: left;" border="1" cellpadding="2" cellspacing="2">
-<% int nAttributes = 0;
- Enumeration attributeNamesEnumeration = currentHttpSession.getAttributeNames();
- while (attributeNamesEnumeration.hasMoreElements()) {
- attributeNamesEnumeration.nextElement();
- ++nAttributes;
- }
-%>
- <caption style="font-variant: small-caps;"><%= JspHelper.formatNumber(nAttributes) %> attributes</caption>
- <thead>
- <tr>
- <th>Remove Attribute</th>
- <th>Attribute name</th>
- <th>Attribute value</th>
- </tr>
- </thead>
- <%--tfoot>
- <tr>
- <td colspan="3" style="text-align: center;">
- TODO: set Max Inactive Interval on sessions
- </td>
- </tr>
- </tfoot--%>
- <tbody>
-<% attributeNamesEnumeration = currentHttpSession.getAttributeNames();
- while (attributeNamesEnumeration.hasMoreElements()) {
- String attributeName = (String) attributeNamesEnumeration.nextElement();
-%>
- <tr>
- <td align="center">
- <form method="post" action="<%= submitUrl %>">
- <div>
- <input type="hidden" name="action" value="removeSessionAttribute" />
- <input type="hidden" name="sessionId" value="<%= currentSessionId %>" />
- <input type="hidden" name="attributeName" value="<%= JspHelper.escapeXml(attributeName) %>" />
- <input type="submit" value="Remove" />
- </div>
- </form>
- </td>
- <td><%= JspHelper.escapeXml(attributeName) %></td>
- <td><% Object attributeValue = currentHttpSession.getAttribute(attributeName); %><span title="<%= attributeValue == null ? "" : attributeValue.getClass().toString() %>"><%= JspHelper.escapeXml(attributeValue) %></span></td>
- </tr>
-<% } // end while %>
- </tbody>
-</table>
+ <table style="text-align: left;" border="1" cellpadding="2" cellspacing="2">
+ <% int nAttributes = 0;
+ Enumeration attributeNamesEnumeration = currentHttpSession.getAttributeNames();
+ while (attributeNamesEnumeration.hasMoreElements()) {
+ attributeNamesEnumeration.nextElement();
+ ++nAttributes;
+ }
+ %>
+ <caption style="font-variant: small-caps;"><%= JspHelper.formatNumber(nAttributes) %> attributes</caption>
+ <thead>
+ <tr>
+ <th>Remove Attribute</th>
+ <th>Attribute name</th>
+ <th>Attribute value</th>
+ </tr>
+ </thead>
+ <%--tfoot>
+ <tr>
+ <td colspan="3" style="text-align: center;">
+ TODO: set Max Inactive Interval on sessions
+ </td>
+ </tr>
+ </tfoot--%>
+ <tbody>
+ <% attributeNamesEnumeration = currentHttpSession.getAttributeNames();
+ while (attributeNamesEnumeration.hasMoreElements()) {
+ String attributeName = (String) attributeNamesEnumeration.nextElement();
+ %>
+ <tr>
+ <td align="center">
+ <form method="post" action="<%= submitUrl %>">
+ <div>
+ <input type="hidden" name="action" value="removeSessionAttribute" />
+ <input type="hidden" name="sessionId" value="<%= currentSessionId %>" />
+ <input type="hidden" name="attributeName" value="<%= JspHelper.escapeXml(attributeName) %>" />
+ <%
+ if ("Primary".equals(request.getParameter("sessionType"))) {
+ %>
+ <input type="submit" value="Remove" />
+ <input type="hidden" name="sessionType" value="Primary" />
+ <%
+ } else {
+ out.print("Primary sessions only");
+ }
+ %>
+ </div>
+ </form>
+ </td>
+ <td><%= JspHelper.escapeXml(attributeName) %></td>
+ <td><% Object attributeValue = currentHttpSession.getAttribute(attributeName); %><span title="<%= attributeValue == null ? "" : attributeValue.getClass().toString() %>"><%= JspHelper.escapeXml(attributeValue) %></span></td>
+ </tr>
+ <% } // end while %>
+ </tbody>
+ </table>
+<% } // endif%>
<form method="post" action="<%=submitUrl%>">
<p style="text-align: center;">
diff --git a/tomcat-cas/webapps/manager/WEB-INF/jsp/sessionsList.jsp b/tomcat-cas/webapps/manager/WEB-INF/jsp/sessionsList.jsp
index d5b83f0..da2680c 100644
--- a/tomcat-cas/webapps/manager/WEB-INF/jsp/sessionsList.jsp
+++ b/tomcat-cas/webapps/manager/WEB-INF/jsp/sessionsList.jsp
@@ -20,104 +20,132 @@
<%@page import="java.util.Iterator" %>
<%@page import="org.apache.catalina.manager.JspHelper" %>
<%@page import="org.apache.catalina.Session" %>
-<!DOCTYPE html
+<%@page import="org.apache.catalina.ha.session.DeltaSession" %>
+<%@page import="org.apache.catalina.util.ContextName" %>
+<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+
+<%@page import="org.apache.catalina.manager.DummyProxySession"%><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<% String path = (String) request.getAttribute("path");
+ String version = (String) request.getAttribute("version");
+ ContextName cn = new ContextName(path, version);
String submitUrl = JspHelper.escapeXml(response.encodeURL(
((HttpServletRequest) pageContext.getRequest()).getRequestURI() +
- "?path=" + path));
+ "?path=" + path + "&version=" + version));
Collection activeSessions = (Collection) request.getAttribute("activeSessions");
%>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
- <meta http-equiv="pragma" content="no-cache"/><!-- HTTP 1.0 -->
- <meta http-equiv="cache-control" content="no-cache,must-revalidate"/><!-- HTTP 1.1 -->
- <meta http-equiv="expires" content="0"/><!-- 0 is an invalid value and should be treated as 'now' -->
- <meta http-equiv="content-language" content="en"/>
- <meta name="author" content="Cedrik LIME"/>
- <meta name="copyright" content="copyright 2005-2014 the Apache Software Foundation"/>
- <meta name="robots" content="noindex,nofollow,noarchive"/>
- <title>Sessions Administration for <%= JspHelper.escapeXml(path) %></title>
+ <meta http-equiv="pragma" content="no-cache"/><!-- HTTP 1.0 -->
+ <meta http-equiv="cache-control" content="no-cache,must-revalidate"/><!-- HTTP 1.1 -->
+ <meta http-equiv="expires" content="0"/><!-- 0 is an invalid value and should be treated as 'now' -->
+ <meta http-equiv="content-language" content="en"/>
+ <meta name="author" content="Cedrik LIME"/>
+ <meta name="copyright" content="copyright 2005-2017 the Apache Software Foundation"/>
+ <meta name="robots" content="noindex,nofollow,noarchive"/>
+ <title>Sessions Administration for <%= JspHelper.escapeXml(cn.getDisplayName()) %></title>
</head>
<body>
-<h1>Sessions Administration for <%= JspHelper.escapeXml(path) %></h1>
+<h1>Sessions Administration for <%= JspHelper.escapeXml(cn.getDisplayName()) %></h1>
<p>Tips:</p>
<ul>
- <li>Click on a column to sort.</li>
- <li>To view a session details and/or remove a session attributes, click on its id.</li>
+ <li>Click on a column to sort.</li>
+ <li>To view a session details and/or remove a session attributes, click on its id.</li>
</ul>
<div class="error"><%= JspHelper.escapeXml(request.getAttribute("error")) %></div>
<div class="message"><%= JspHelper.escapeXml(request.getAttribute("message")) %></div>
<form action="<%= submitUrl %>" method="post" id="sessionsForm">
- <fieldset><legend>Active HttpSessions informations</legend>
- <input type="hidden" name="action" id="sessionsFormAction" value="injectSessions"/>
- <input type="hidden" name="sort" id="sessionsFormSort" value="<%= JspHelper.escapeXml(request.getAttribute("sort")) %>"/>
- <% String order = (String) request.getAttribute("order");
- if (order == null || "".equals(order)) {
- order = "ASC";
- }
- %>
- <input type="hidden" name="order" id="sessionsFormSortOrder" value="<%= JspHelper.escapeXml(order) %>"/>
- <input type="submit" name="refresh" id="refreshButton" value="Refresh Sessions list" onclick="document.getElementById('sessionsFormAction').value='refreshSessions'; return true;"/>
- <%= JspHelper.formatNumber(activeSessions.size()) %> active Sessions<br/>
- <table border="1" cellpadding="2" cellspacing="2" width="100%">
- <thead>
- <tr>
- <th><a onclick="document.getElementById('sessionsFormSort').value='id'; document.getElementById('refreshButton').click(); return true;">Session Id</a></th>
- <th><a onclick="document.getElementById('sessionsFormSort').value='locale'; document.getElementById('refreshButton').click(); return true;">Guessed Locale</a></th>
- <th><a onclick="document.getElementById('sessionsFormSort').value='user'; document.getElementById('refreshButton').click(); return true;">Guessed User name</a></th>
- <th><a onclick="document.getElementById('sessionsFormSort').value='CreationTime'; document.getElementById('refreshButton').click(); return true;">Creation Time</a></th>
- <th><a onclick="document.getElementById('sessionsFormSort').value='LastAccessedTime'; document.getElementById('refreshButton').click(); return true;">Last Accessed Time</a></th>
- <th><a onclick="document.getElementById('sessionsFormSort').value='UsedTime'; document.getElementById('refreshButton').click(); return true;">Used Time</a></th>
- <th><a onclick="document.getElementById('sessionsFormSort').value='InactiveTime'; document.getElementById('refreshButton').click(); return true;">Inactive Time</a></th>
- <th><a onclick="document.getElementById('sessionsFormSort').value='TTL'; document.getElementById('refreshButton').click(); return true;"><span title="Time To Live">TTL</span></a></th>
- </tr>
- </thead>
- <% if (activeSessions.size() > 10) { %>
- <tfoot><%-- <tfoot> is the same as <thead> --%>
- <tr>
- <th><a onclick="document.getElementById('sessionsFormSort').value='id'; document.getElementById('refreshButton').click(); return true;">Session Id</a></th>
- <th><a onclick="document.getElementById('sessionsFormSort').value='locale'; document.getElementById('refreshButton').click(); return true;">Guessed Locale</a></th>
- <th><a onclick="document.getElementById('sessionsFormSort').value='user'; document.getElementById('refreshButton').click(); return true;">Guessed User name</a></th>
- <th><a onclick="document.getElementById('sessionsFormSort').value='CreationTime'; document.getElementById('refreshButton').click(); return true;">Creation Time</a></th>
- <th><a onclick="document.getElementById('sessionsFormSort').value='LastAccessedTime'; document.getElementById('refreshButton').click(); return true;">Last Accessed Time</a></th>
- <th><a onclick="document.getElementById('sessionsFormSort').value='UsedTime'; document.getElementById('refreshButton').click(); return true;">Used Time</a></th>
- <th><a onclick="document.getElementById('sessionsFormSort').value='InactiveTime'; document.getElementById('refreshButton').click(); return true;">Inactive Time</a></th>
- <th><a onclick="document.getElementById('sessionsFormSort').value='TTL'; document.getElementById('refreshButton').click(); return true;"><span title="Time To Live">TTL</span></a></th>
- </tr>
- </tfoot>
- <% } // end if %>
- <tbody>
+ <fieldset><legend>Active HttpSessions informations</legend>
+ <input type="hidden" name="action" id="sessionsFormAction" value="injectSessions"/>
+ <input type="hidden" name="sort" id="sessionsFormSort" value="<%= JspHelper.escapeXml(request.getAttribute("sort")) %>"/>
+ <% String order = (String) request.getAttribute("order");
+ if (order == null || "".equals(order)) {
+ order = "ASC";
+ }
+ %>
+ <input type="hidden" name="order" id="sessionsFormSortOrder" value="<%= JspHelper.escapeXml(order) %>"/>
+ <input type="submit" name="refresh" id="refreshButton" value="Refresh Sessions list" onclick="document.getElementById('sessionsFormAction').value='refreshSessions'; return true;"/>
+ <%= JspHelper.formatNumber(activeSessions.size()) %> active Sessions<br/>
+ <table border="1" cellpadding="2" cellspacing="2" width="100%">
+ <thead>
+ <tr>
+ <th><a onclick="document.getElementById('sessionsFormSort').value='id'; document.getElementById('refreshButton').click(); return true;">Session Id</a></th>
+ <th><a onclick="document.getElementById('sessionsFormSort').value='id'; document.getElementById('refreshButton').click(); return true;">Type</a></th>
+ <th><a onclick="document.getElementById('sessionsFormSort').value='locale'; document.getElementById('refreshButton').click(); return true;">Guessed Locale</a></th>
+ <th><a onclick="document.getElementById('sessionsFormSort').value='user'; document.getElementById('refreshButton').click(); return true;">Guessed User name</a></th>
+ <th><a onclick="document.getElementById('sessionsFormSort').value='CreationTime'; document.getElementById('refreshButton').click(); return true;">Creation Time</a></th>
+ <th><a onclick="document.getElementById('sessionsFormSort').value='LastAccessedTime'; document.getElementById('refreshButton').click(); return true;">Last Accessed Time</a></th>
+ <th><a onclick="document.getElementById('sessionsFormSort').value='UsedTime'; document.getElementById('refreshButton').click(); return true;">Used Time</a></th>
+ <th><a onclick="document.getElementById('sessionsFormSort').value='InactiveTime'; document.getElementById('refreshButton').click(); return true;">Inactive Time</a></th>
+ <th><a onclick="document.getElementById('sessionsFormSort').value='TTL'; document.getElementById('refreshButton').click(); return true;"><span title="Time To Live">TTL</span></a></th>
+ </tr>
+ </thead>
+ <% if (activeSessions.size() > 10) { %>
+ <tfoot><%-- <tfoot> is the same as <thead> --%>
+ <tr>
+ <th><a onclick="document.getElementById('sessionsFormSort').value='id'; document.getElementById('refreshButton').click(); return true;">Session Id</a></th>
+ <th><a onclick="document.getElementById('sessionsFormSort').value='id'; document.getElementById('refreshButton').click(); return true;">Type</a></th>
+ <th><a onclick="document.getElementById('sessionsFormSort').value='locale'; document.getElementById('refreshButton').click(); return true;">Guessed Locale</a></th>
+ <th><a onclick="document.getElementById('sessionsFormSort').value='user'; document.getElementById('refreshButton').click(); return true;">Guessed User name</a></th>
+ <th><a onclick="document.getElementById('sessionsFormSort').value='CreationTime'; document.getElementById('refreshButton').click(); return true;">Creation Time</a></th>
+ <th><a onclick="document.getElementById('sessionsFormSort').value='LastAccessedTime'; document.getElementById('refreshButton').click(); return true;">Last Accessed Time</a></th>
+ <th><a onclick="document.getElementById('sessionsFormSort').value='UsedTime'; document.getElementById('refreshButton').click(); return true;">Used Time</a></th>
+ <th><a onclick="document.getElementById('sessionsFormSort').value='InactiveTime'; document.getElementById('refreshButton').click(); return true;">Inactive Time</a></th>
+ <th><a onclick="document.getElementById('sessionsFormSort').value='TTL'; document.getElementById('refreshButton').click(); return true;"><span title="Time To Live">TTL</span></a></th>
+ </tr>
+ </tfoot>
+ <% } // end if %>
+ <tbody>
<% Iterator iter = activeSessions.iterator();
while (iter.hasNext()) {
- Session currentSession = (Session) iter.next();
- String currentSessionId = JspHelper.escapeXml(currentSession.getId());
+ Session currentSession = (Session) iter.next();
+ String currentSessionId = JspHelper.escapeXml(currentSession.getId());
+ String type;
+ if (currentSession instanceof DeltaSession) {
+ if (((DeltaSession) currentSession).isPrimarySession()) {
+ type = "Primary";
+ } else {
+ type = "Backup";
+ }
+ } else if (currentSession instanceof DummyProxySession) {
+ type = "Proxy";
+ } else {
+ type = "Primary";
+ }
%>
- <tr>
- <td>
-<input type="checkbox" name="sessionIds" value="<%= currentSessionId %>" /><a href="<%= submitUrl %>&action=sessionDetail&sessionId=<%= currentSessionId %>"><%= currentSessionId %></a>
- </td>
- <td style="text-align: center;"><%= JspHelper.guessDisplayLocaleFromSession(currentSession) %></td>
- <td style="text-align: center;"><%= JspHelper.guessDisplayUserFromSession(currentSession) %></td>
- <td style="text-align: center;"><%= JspHelper.getDisplayCreationTimeForSession(currentSession) %></td>
- <td style="text-align: center;"><%= JspHelper.getDisplayLastAccessedTimeForSession(currentSession) %></td>
- <td style="text-align: center;"><%= JspHelper.getDisplayUsedTimeForSession(currentSession) %></td>
- <td style="text-align: center;"><%= JspHelper.getDisplayInactiveTimeForSession(currentSession) %></td>
- <td style="text-align: center;"><%= JspHelper.getDisplayTTLForSession(currentSession) %></td>
- </tr>
+ <tr>
+ <td><input type="checkbox" name="sessionIds" value="<%= currentSessionId %>" />
+ <%
+ if ("Proxy".equals(type)) {
+ out.print(currentSessionId);
+ } else {
+ %>
+ <a href="<%= submitUrl %>&action=sessionDetail&sessionId=<%= currentSessionId %>&sessionType=<%= type %>"><%= currentSessionId %></a>
+ <%
+ }
+ %>
+ </td>
+ <td style="text-align: center;"><%= type %></td>
+ <td style="text-align: center;"><%= JspHelper.guessDisplayLocaleFromSession(currentSession) %></td>
+ <td style="text-align: center;"><%= JspHelper.guessDisplayUserFromSession(currentSession) %></td>
+ <td style="text-align: center;"><%= JspHelper.getDisplayCreationTimeForSession(currentSession) %></td>
+ <td style="text-align: center;"><%= JspHelper.getDisplayLastAccessedTimeForSession(currentSession) %></td>
+ <td style="text-align: center;"><%= JspHelper.getDisplayUsedTimeForSession(currentSession) %></td>
+ <td style="text-align: center;"><%= JspHelper.getDisplayInactiveTimeForSession(currentSession) %></td>
+ <td style="text-align: center;"><%= JspHelper.getDisplayTTLForSession(currentSession) %></td>
+ </tr>
<% } // end while %>
- </tbody>
- </table>
- <p style="text-align: center;">
- <input type="submit" name="invalidate" value="Invalidate selected Sessions" onclick="document.getElementById('sessionsFormAction').value='invalidateSessions'; return true;"/>
- </p>
- </fieldset>
+ </tbody>
+ </table>
+ <p style="text-align: center;">
+ <input type="submit" name="invalidate" value="Invalidate selected Sessions" onclick="document.getElementById('sessionsFormAction').value='invalidateSessions'; return true;"/>
+ </p>
+ </fieldset>
</form>
<form method="get" action="<%=request.getContextPath()%>/html">
@@ -128,15 +156,15 @@
<%--div style="display: none;">
<p>
- <a href="http://validator.w3.org/check?uri=referer"><img
- src="http://www.w3.org/Icons/valid-html401"
- alt="Valid HTML 4.01!" height="31" width="88"></a>
- <a href="http://validator.w3.org/check?uri=referer"><img
- src="http://www.w3.org/Icons/valid-xhtml10"
- alt="Valid XHTML 1.0!" height="31" width="88" /></a>
- <a href="http://validator.w3.org/check?uri=referer"><img
- src="http://www.w3.org/Icons/valid-xhtml11"
- alt="Valid XHTML 1.1!" height="31" width="88" /></a>
+ <a href="http://validator.w3.org/check?uri=referer"><img
+ src="http://www.w3.org/Icons/valid-html401"
+ alt="Valid HTML 4.01!" height="31" width="88"></a>
+ <a href="http://validator.w3.org/check?uri=referer"><img
+ src="http://www.w3.org/Icons/valid-xhtml10"
+ alt="Valid XHTML 1.0!" height="31" width="88" /></a>
+ <a href="http://validator.w3.org/check?uri=referer"><img
+ src="http://www.w3.org/Icons/valid-xhtml11"
+ alt="Valid XHTML 1.1!" height="31" width="88" /></a>
</p>
</div--%>
diff --git a/tomcat-cas/webapps/manager/WEB-INF/web.xml b/tomcat-cas/webapps/manager/WEB-INF/web.xml
index 3d7fefe..4dd97ce 100644
--- a/tomcat-cas/webapps/manager/WEB-INF/web.xml
+++ b/tomcat-cas/webapps/manager/WEB-INF/web.xml
@@ -17,9 +17,11 @@
-->
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- version="2.5">
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+ http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
+ version="3.0"
+ metadata-complete="true">
<display-name>Tomcat Manager Application</display-name>
<description>
@@ -42,6 +44,19 @@
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
+ <!-- Uncomment this to show proxy sessions from the Backup manager or a
+ StoreManager in the sessions list for an application
+ <init-param>
+ <param-name>showProxySessions</param-name>
+ <param-value>true</param-value>
+ </init-param>
+ -->
+ <multipart-config>
+ <!-- 50MB max -->
+ <max-file-size>52428800</max-file-size>
+ <max-request-size>52428800</max-request-size>
+ <file-size-threshold>0</file-size-threshold>
+ </multipart-config>
</servlet>
<servlet>
<servlet-name>Status</servlet-name>
@@ -60,63 +75,7 @@
<!-- Define the Manager Servlet Mapping -->
<servlet-mapping>
<servlet-name>Manager</servlet-name>
- <url-pattern>/list</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>Manager</servlet-name>
- <url-pattern>/expire</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>Manager</servlet-name>
- <url-pattern>/sessions</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>Manager</servlet-name>
- <url-pattern>/start</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>Manager</servlet-name>
- <url-pattern>/stop</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>Manager</servlet-name>
- <url-pattern>/install</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>Manager</servlet-name>
- <url-pattern>/remove</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>Manager</servlet-name>
- <url-pattern>/deploy</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>Manager</servlet-name>
- <url-pattern>/undeploy</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>Manager</servlet-name>
- <url-pattern>/reload</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>Manager</servlet-name>
- <url-pattern>/save</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>Manager</servlet-name>
- <url-pattern>/serverinfo</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>Manager</servlet-name>
- <url-pattern>/roles</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>Manager</servlet-name>
- <url-pattern>/resources</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>Manager</servlet-name>
- <url-pattern>/findleaks</url-pattern>
+ <url-pattern>/text/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Status</servlet-name>
@@ -132,11 +91,25 @@
</servlet-mapping>
<filter>
+ <filter-name>SetCharacterEncoding</filter-name>
+ <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
+ <init-param>
+ <param-name>encoding</param-name>
+ <param-value>UTF-8</param-value>
+ </init-param>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>SetCharacterEncoding</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+
+ <filter>
<filter-name>CSRF</filter-name>
<filter-class>org.apache.catalina.filters.CsrfPreventionFilter</filter-class>
<init-param>
<param-name>entryPoints</param-name>
- <param-value>/html,/html/,/html/list</param-value>
+ <param-value>/html,/html/,/html/list,/index.jsp</param-value>
</init-param>
</filter>
@@ -145,107 +118,48 @@
<servlet-name>HTMLManager</servlet-name>
</filter-mapping>
- <!-- Define reference to the user database for looking up roles -->
- <resource-env-ref>
- <description>
- Link to the UserDatabase instance from which we request lists of
- defined role names. Typically, this will be connected to the global
- user database with a ResourceLink element in server.xml or the context
- configuration file for the Manager web application.
- </description>
- <resource-env-ref-name>users</resource-env-ref-name>
- <resource-env-ref-type>
- org.apache.catalina.UserDatabase
- </resource-env-ref-type>
- </resource-env-ref>
-
<!-- Define a Security Constraint on this Application -->
+ <!-- NOTE: None of these roles are present in the default users file -->
<security-constraint>
<web-resource-collection>
- <web-resource-name>Manager commands</web-resource-name>
- <url-pattern>/list</url-pattern>
- <url-pattern>/expire</url-pattern>
- <url-pattern>/sessions</url-pattern>
- <url-pattern>/start</url-pattern>
- <url-pattern>/stop</url-pattern>
- <url-pattern>/install</url-pattern>
- <url-pattern>/remove</url-pattern>
- <url-pattern>/deploy</url-pattern>
- <url-pattern>/undeploy</url-pattern>
- <url-pattern>/reload</url-pattern>
- <url-pattern>/save</url-pattern>
- <url-pattern>/serverinfo</url-pattern>
- <url-pattern>/roles</url-pattern>
- <url-pattern>/resources</url-pattern>
- <url-pattern>/findleaks</url-pattern>
- </web-resource-collection>
- <auth-constraint>
- <!-- NOTE: 1. These roles are not present in the default users file
- 2. The manager role is deprecated, it will be removed in
- Tomcat 7.
- 3. Use the manager-script role to take advantage of the new
- CSRF protection. Using the manager role or assigning both
- the manager-script and manager-gui roles to the same user
- will bypass the CSRF protection. -->
- <role-name>manager-script</role-name>
- <role-name>manager</role-name>
- </auth-constraint>
- </security-constraint>
-
- <security-constraint>
- <web-resource-collection>
- <web-resource-name>HTML Manager commands</web-resource-name>
+ <web-resource-name>HTML Manager interface (for humans)</web-resource-name>
<url-pattern>/html/*</url-pattern>
</web-resource-collection>
<auth-constraint>
- <!-- NOTE: 1. These roles are not present in the default users file
- 2. The manager role is deprecated, it will be removed in
- Tomcat 7.
- 3. Use just the manager-gui role to take advantage of the new
- CSRF protection. Assigning the manager role or manager-gui
- role along with either the manager-script or manager-jmx
- roles to the same user will bypass the CSRF protection. -->
<role-name>manager-gui</role-name>
- <role-name>manager</role-name>
</auth-constraint>
</security-constraint>
-
<security-constraint>
<web-resource-collection>
- <web-resource-name>JMX proxy</web-resource-name>
+ <web-resource-name>Text Manager interface (for scripts)</web-resource-name>
+ <url-pattern>/text/*</url-pattern>
+ </web-resource-collection>
+ <auth-constraint>
+ <role-name>manager-script</role-name>
+ </auth-constraint>
+ </security-constraint>
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>JMX Proxy interface</web-resource-name>
<url-pattern>/jmxproxy/*</url-pattern>
</web-resource-collection>
<auth-constraint>
- <!-- NOTE: 1. These roles are not present in the default users file
- 2. The manager role is deprecated, it will be removed in
- Tomcat 7.
- 3. Use the manager-jmx role to take advantage of the new
- CSRF protection. Using the manager role or assigning both
- the manager-jmx and manager-gui roles to the same user
- will bypass the CSRF protection. -->
<role-name>manager-jmx</role-name>
- <role-name>manager</role-name>
</auth-constraint>
</security-constraint>
-
<security-constraint>
<web-resource-collection>
- <web-resource-name>Status</web-resource-name>
+ <web-resource-name>Status interface</web-resource-name>
<url-pattern>/status/*</url-pattern>
</web-resource-collection>
<auth-constraint>
- <!-- NOTE: 1. These roles are not present in the default users file
- 2. The manager role is deprecated, it will be removed in
- Tomcat 7. -->
- <role-name>manager-status</role-name>
<role-name>manager-gui</role-name>
<role-name>manager-script</role-name>
<role-name>manager-jmx</role-name>
- <role-name>manager</role-name>
+ <role-name>manager-status</role-name>
</auth-constraint>
</security-constraint>
-
<!-- Define the Login Configuration for this Application -->
<login-config>
<auth-method>BASIC</auth-method>
@@ -273,16 +187,10 @@
</security-role>
<security-role>
<description>
- The role that is required to access to the Manager Status pages
+ The role that is required to access to the Manager Status pages
</description>
<role-name>manager-status</role-name>
</security-role>
- <security-role>
- <description>
- Deprecated role that can access all Manager functionality
- </description>
- <role-name>manager</role-name>
- </security-role>
<error-page>
<error-code>401</error-code>
@@ -292,5 +200,9 @@
<error-code>403</error-code>
<location>/WEB-INF/jsp/403.jsp</location>
</error-page>
+ <error-page>
+ <error-code>404</error-code>
+ <location>/WEB-INF/jsp/404.jsp</location>
+ </error-page>
</web-app>
diff --git a/tomcat-cas/webapps/manager/images/asf-logo.gif b/tomcat-cas/webapps/manager/images/asf-logo.gif
deleted file mode 100644
index 22eb9d7..0000000
--- a/tomcat-cas/webapps/manager/images/asf-logo.gif
+++ /dev/null
Binary files differ
diff --git a/tomcat-cas/webapps/manager/images/asf-logo.svg b/tomcat-cas/webapps/manager/images/asf-logo.svg
new file mode 100644
index 0000000..eaf91df
--- /dev/null
+++ b/tomcat-cas/webapps/manager/images/asf-logo.svg
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 7127.6 2890" enable-background="new 0 0 7127.6 2890" xml:space="preserve">
+<path fill="#6D6E71" d="M7104.7,847.8c15.3,15.3,22.9,33.7,22.9,55.2c0,21.5-7.6,39.9-22.9,55.4c-15.3,15.4-33.8,23.1-55.6,23.1
+ c-21.8,0-40.2-7.6-55.4-22.9c-15.1-15.3-22.7-33.7-22.7-55.2c0-21.5,7.6-39.9,22.9-55.4c15.3-15.4,33.7-23.1,55.4-23.1
+ C7070.9,824.9,7089.4,832.5,7104.7,847.8z M7098.1,951.9c13.3-13.6,20-29.8,20-48.7s-6.6-35-19.8-48.5
+ c-13.2-13.4-29.4-20.1-48.6-20.1c-19.2,0-35.4,6.7-48.7,20.2c-13.3,13.5-19.9,29.7-19.9,48.7c0,19,6.6,35.2,19.7,48.6
+ c13.1,13.4,29.3,20.1,48.5,20.1S7084.7,965.4,7098.1,951.9z M7087.1,888.1c0,14-6.1,22.8-18.4,26.4l22.5,30.5h-18.2l-20.3-28.3
+ h-18.6v28.3h-14.7v-84.6h31.8c12.8,0,22,2.2,27.6,6.6C7084.4,871.4,7087.1,878.4,7087.1,888.1z M7068.2,900c3-2.4,4.4-6.5,4.4-12
+ c0-5.5-1.5-9.4-4.5-11.6c-3-2.2-8.4-3.2-16-3.2h-18v30.5h17.5C7059.7,903.6,7065.3,902.4,7068.2,900z"/>
+<path fill="#6D6E71" d="M1803.6,499.8v155.4h-20V499.8h-56.8v-19.2h133.9v19.2H1803.6z"/>
+<path fill="#6D6E71" d="M2082.2,655.2v-76.9h-105.2v76.9h-20V480.5h20v78.9h105.2v-78.9h20v174.7H2082.2z"/>
+<path fill="#6D6E71" d="M2241.4,499.8v57.4h88.1v19.2h-88.1v59.8h101.8v19h-121.8V480.5H2340v19.2H2241.4z"/>
+<path fill="#D22128" d="M1574.5,1852.4l417.3-997.6h80.1l417.3,997.6h-105.4l-129.3-311.9h-448.2l-127.9,311.9H1574.5z M2032.6,970
+ l-205.1,493.2h404.7L2032.6,970z"/>
+<path fill="#D22128" d="M2596.9,1852.4V854.8H3010c171.4,0,295.1,158.8,295.1,313.3c0,163-115.2,316.1-286.6,316.1h-324.6v368.1
+ H2596.9z M2693.9,1397.1h318.9c118,0,193.9-108.2,193.9-229c0-125.1-92.7-226.2-202.3-226.2h-310.5V1397.1z"/>
+<path fill="#D22128" d="M3250.5,1852.4l417.3-997.6h80.1l417.3,997.6h-105.4l-129.3-311.9h-448.2l-127.9,311.9H3250.5z M3708.6,970
+ l-205.1,493.2h404.7L3708.6,970z"/>
+<path fill="#D22128" d="M4637.3,849.1c177,0,306.3,89.9,368.1,217.8l-78.7,47.8c-63.2-132.1-186.9-177-295.1-177
+ c-238.9,0-369.5,213.6-369.5,414.5c0,220.6,161.6,420.1,373.7,420.1c112.4,0,244.5-56.2,307.7-185.5l81.5,42.1
+ c-64.6,148.9-241.7,231.8-394.8,231.8c-274,0-466.5-261.3-466.5-514.2C4163.8,1106.3,4336.6,849.1,4637.3,849.1z"/>
+<path fill="#D22128" d="M5949.1,854.8v997.6h-98.4v-466.5h-591.5v466.5h-96.9V854.8h96.9v444h591.5v-444H5949.1z"/>
+<path fill="#D22128" d="M6844.6,1765.2v87.1h-670.2V854.8H6832v87.1h-560.6v359.7h489v82.9h-489v380.8H6844.6z"/>
+<path fill="#6D6E71" d="M1667.6,2063.6c11.8,3.5,22.2,8.3,31,14.2l-10.3,22.6c-9-6-18.6-10.4-28.9-13.4c-10.2-2.9-20-4.4-29.2-4.4
+ c-13.6,0-24.5,2.4-32.6,7.3c-8.1,4.9-12.2,11.8-12.2,20.7c0,7.6,2.3,14,6.8,19c4.5,5,10.2,8.9,17,11.7c6.8,2.8,16.1,6,28,9.6
+ c14.4,4.6,26,8.9,34.7,12.9c8.8,4,16.3,9.9,22.5,17.8c6.2,7.8,9.3,18.2,9.3,31c0,11.7-3.2,21.8-9.5,30.6
+ c-6.3,8.7-15.3,15.5-26.8,20.3c-11.6,4.8-24.9,7.2-40,7.2c-15.1,0-29.7-2.9-43.9-8.7c-14.2-5.8-26.4-13.6-36.6-23.4l10.7-21.6
+ c9.6,9.4,20.7,16.7,33.3,21.9c12.6,5.2,24.8,7.8,36.8,7.8c15.3,0,27.3-3,36.1-8.9c8.8-5.9,13.2-13.9,13.2-23.9
+ c0-7.8-2.3-14.3-6.9-19.4c-4.6-5.1-10.3-9-17.1-11.9c-6.8-2.8-16.1-6-28-9.6c-14.2-4.2-25.7-8.3-34.6-12.2
+ c-8.9-3.9-16.4-9.7-22.5-17.5c-6.1-7.7-9.2-17.9-9.2-30.6c0-10.9,3-20.4,9-28.6c6-8.2,14.6-14.6,25.6-19.1
+ c11.1-4.5,23.8-6.8,38.2-6.8C1643.8,2058.3,1655.7,2060.1,1667.6,2063.6z"/>
+<path fill="#6D6E71" d="M1980.1,2072.8c16.8,9.4,30.2,22.3,40,38.4c9.8,16.2,14.8,33.9,14.8,53.3c0,19.5-4.9,37.4-14.8,53.6
+ c-9.8,16.3-23.2,29.1-40,38.6c-16.8,9.5-35.3,14.3-55.2,14.3c-20.3,0-38.8-4.7-55.7-14.3c-16.8-9.5-30.2-22.4-40-38.6
+ c-9.8-16.3-14.8-34.1-14.8-53.6c0-19.5,4.9-37.3,14.8-53.5c9.8-16.2,23.2-29,40-38.3c16.8-9.4,35.4-14,55.7-14
+ C1944.8,2058.6,1963.2,2063.3,1980.1,2072.8z M1881.9,2092.7c-13.1,7.4-23.6,17.5-31.4,30.1c-7.8,12.6-11.8,26.5-11.8,41.7
+ c0,15.3,3.9,29.3,11.8,42c7.8,12.7,18.3,22.8,31.4,30.2c13.1,7.4,27.4,11.1,42.9,11.1c15.5,0,29.7-3.7,42.7-11.1
+ c13-7.4,23.3-17.4,31.1-30.2c7.7-12.7,11.6-26.7,11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30
+ c-13-7.4-27.2-11.2-42.6-11.2C1909.4,2081.5,1895.1,2085.2,1881.9,2092.7z"/>
+<path fill="#6D6E71" d="M2186.5,2082.4v74h98.4v23.2h-98.4v90.2h-24.1v-210.6h133.8v23.2H2186.5z"/>
+<path fill="#6D6E71" d="M2491.6,2082.4v187.4h-24.1v-187.4h-68.4v-23.2h161.4v23.2H2491.6z"/>
+<path fill="#6D6E71" d="M2871.8,2269.8l-56.8-177.4l-57.6,177.4h-24.5l-70.5-210.6h25.9l57.9,182.7l57.1-182.4l24.1-0.3l57.7,182.7
+ l57.1-182.7h25l-70.6,210.6H2871.8z"/>
+<path fill="#6D6E71" d="M3087.3,2216.6l-23.5,53.2h-25.6l94.4-210.6h25l94.1,210.6h-26.1l-23.5-53.2H3087.3z M3144.5,2086.6
+ l-46.9,106.8h94.4L3144.5,2086.6z"/>
+<path fill="#6D6E71" d="M3461.1,2202.7c-6,0.4-10.7,0.6-14.1,0.6h-56v66.5H3367v-210.6h80c26.2,0,46.6,6.2,61.2,18.5
+ c14.5,12.3,21.8,29.8,21.8,52.3c0,17.2-4.1,31.7-12.2,43.3c-8.1,11.6-19.8,20-35,25l49.2,71.5h-27.3L3461.1,2202.7z M3491.3,2167.6
+ c10.3-8.4,15.5-20.8,15.5-37c0-15.9-5.2-27.9-15.5-36c-10.3-8.1-25.1-12.2-44.3-12.2h-56v97.8h56
+ C3466.2,2180.2,3481,2176,3491.3,2167.6z"/>
+<path fill="#6D6E71" d="M3688.3,2082.4v69.2h106.2v23.2h-106.2v72.1h122.8v22.9h-146.9v-210.6h142.9v23.2H3688.3z"/>
+<path fill="#6D6E71" d="M4147,2082.4v74h98.4v23.2H4147v90.2h-24.1v-210.6h133.8v23.2H4147z"/>
+<path fill="#6D6E71" d="M4523.3,2072.8c16.8,9.4,30.2,22.3,40,38.4c9.8,16.2,14.8,33.9,14.8,53.3c0,19.5-4.9,37.4-14.8,53.6
+ c-9.8,16.3-23.2,29.1-40,38.6c-16.8,9.5-35.3,14.3-55.2,14.3c-20.3,0-38.8-4.7-55.7-14.3c-16.8-9.5-30.2-22.4-40-38.6
+ c-9.8-16.3-14.8-34.1-14.8-53.6c0-19.5,4.9-37.3,14.8-53.5c9.8-16.2,23.2-29,40-38.3c16.8-9.4,35.4-14,55.7-14
+ C4488.1,2058.6,4506.5,2063.3,4523.3,2072.8z M4425.2,2092.7c-13.1,7.4-23.6,17.5-31.4,30.1c-7.8,12.6-11.8,26.5-11.8,41.7
+ c0,15.3,3.9,29.3,11.8,42c7.8,12.7,18.3,22.8,31.4,30.2c13.1,7.4,27.4,11.1,42.9,11.1c15.5,0,29.7-3.7,42.7-11.1
+ c13-7.4,23.3-17.4,31.1-30.2c7.7-12.7,11.6-26.7,11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30
+ c-13-7.4-27.2-11.2-42.6-11.2C4452.6,2081.5,4438.3,2085.2,4425.2,2092.7z"/>
+<path fill="#6D6E71" d="M4854.7,2247.7c-15.7,15.5-37.3,23.3-64.8,23.3c-27.7,0-49.4-7.8-65.1-23.3c-15.7-15.5-23.6-37-23.6-64.6
+ v-124h24.1v124c0,20.3,5.8,36.1,17.3,47.5c11.6,11.4,27.3,17.1,47.3,17.1c20.1,0,35.8-5.7,47.1-17c11.4-11.3,17-27.2,17-47.7v-124
+ h24.1v124C4878.2,2210.7,4870.4,2232.2,4854.7,2247.7z"/>
+<path fill="#6D6E71" d="M5169.5,2269.8l-126.3-169.1v169.1h-24.1v-210.6h25l126.3,169.3v-169.3h23.8v210.6H5169.5z"/>
+<path fill="#6D6E71" d="M5478.4,2073.1c16.4,9.3,29.4,21.9,38.9,37.9c9.6,16,14.3,33.9,14.3,53.5s-4.8,37.6-14.3,53.6
+ c-9.5,16.1-22.6,28.7-39.3,37.9c-16.6,9.2-35.2,13.8-55.5,13.8h-84.3v-210.6h85.2C5443.7,2059.2,5462,2063.8,5478.4,2073.1z
+ M5362.3,2246.9h61.4c15.5,0,29.6-3.5,42.3-10.6c12.7-7.1,22.8-16.9,30.2-29.5c7.4-12.5,11.1-26.5,11.1-42
+ c0-15.5-3.8-29.4-11.3-41.9c-7.5-12.5-17.7-22.3-30.6-29.6c-12.8-7.2-27-10.9-42.6-10.9h-60.5V2246.9z"/>
+<path fill="#6D6E71" d="M5668.6,2216.6l-23.5,53.2h-25.6l94.4-210.6h25l94.1,210.6H5807l-23.5-53.2H5668.6z M5725.8,2086.6
+ l-46.9,106.8h94.4L5725.8,2086.6z"/>
+<path fill="#6D6E71" d="M5991,2082.4v187.4H5967v-187.4h-68.4v-23.2h161.4v23.2H5991z"/>
+<path fill="#6D6E71" d="M6175.9,2269.8v-210.6h24.1v210.6H6175.9z"/>
+<path fill="#6D6E71" d="M6493.7,2072.8c16.8,9.4,30.2,22.3,40,38.4c9.8,16.2,14.8,33.9,14.8,53.3c0,19.5-4.9,37.4-14.8,53.6
+ c-9.8,16.3-23.2,29.1-40,38.6c-16.8,9.5-35.3,14.3-55.2,14.3c-20.3,0-38.8-4.7-55.7-14.3c-16.8-9.5-30.2-22.4-40-38.6
+ c-9.8-16.3-14.8-34.1-14.8-53.6c0-19.5,4.9-37.3,14.8-53.5c9.8-16.2,23.2-29,40-38.3c16.8-9.4,35.4-14,55.7-14
+ C6458.5,2058.6,6476.9,2063.3,6493.7,2072.8z M6395.6,2092.7c-13.1,7.4-23.6,17.5-31.4,30.1c-7.8,12.6-11.8,26.5-11.8,41.7
+ c0,15.3,3.9,29.3,11.8,42c7.8,12.7,18.3,22.8,31.4,30.2c13.1,7.4,27.4,11.1,42.9,11.1c15.5,0,29.7-3.7,42.7-11.1
+ c13-7.4,23.3-17.4,31.1-30.2c7.7-12.7,11.6-26.7,11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30
+ c-13-7.4-27.2-11.2-42.6-11.2C6423,2081.5,6408.8,2085.2,6395.6,2092.7z"/>
+<path fill="#6D6E71" d="M6826.5,2269.8l-126.3-169.1v169.1h-24.1v-210.6h25l126.3,169.3v-169.3h23.8v210.6H6826.5z"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-4516.6152" y1="-2338.7222" x2="-4108.4111" y2="-1861.3982" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+ <stop offset="0" style="stop-color:#F69923"/>
+ <stop offset="0.3123" style="stop-color:#F79A23"/>
+ <stop offset="0.8383" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_1_)" d="M1230.1,13.7c-45.3,26.8-120.6,102.5-210.5,212.3l82.6,155.9c58-82.9,116.9-157.5,176.3-221.2
+ c4.6-5.1,7-7.5,7-7.5c-2.3,2.5-4.6,5-7,7.5c-19.2,21.2-77.5,89.2-165.5,224.4c84.7-4.2,214.9-21.6,321.1-39.7
+ c31.6-177-31-258-31-258S1323.4-41.4,1230.1,13.7z"/>
+<path fill="none" d="M1090.2,903.1c0.6-0.1,1.2-0.2,1.8-0.3l-11.9,1.3c-0.7,0.3-1.4,0.7-2.1,1
+ C1082.1,904.4,1086.2,903.7,1090.2,903.1z"/>
+<path fill="none" d="M1005.9,1182.3c-6.7,1.5-13.7,2.7-20.7,3.7C992.3,1185,999.2,1183.8,1005.9,1182.3z"/>
+<path fill="none" d="M432.9,1808.8c0.9-2.3,1.8-4.7,2.6-7c18.2-48,36.2-94.7,54-140.1c20-51,39.8-100.4,59.3-148.3
+ c20.6-50.4,40.9-99.2,60.9-146.3c21-49.4,41.7-97,62-142.8c16.5-37.3,32.8-73.4,48.9-108.3c5.4-11.7,10.7-23.2,16-34.6
+ c10.5-22.7,21-44.8,31.3-66.5c9.5-20,19-39.6,28.3-58.8c3.1-6.4,6.2-12.8,9.3-19.1c0.5-1,1-2,1.5-3.1l-10.2,1.1l-8-15.9
+ c-0.8,1.6-1.6,3.1-2.4,4.6c-14.5,28.8-28.9,57.9-43.1,87.2c-8.2,16.9-16.4,34-24.6,51c-22.6,47.4-44.8,95.2-66.6,143.3
+ c-22.1,48.6-43.7,97.5-64.9,146.5c-20.8,48.1-41.3,96.2-61.2,144.2c-20,48-39.5,95.7-58.5,143.2c-19.9,49.5-39.2,98.7-58,147.2
+ c-4.2,10.9-8.5,21.9-12.7,32.8c-15,39.2-29.7,77.8-44,116l12.7,25.1l11.4-1.2c0.4-1.1,0.8-2.3,1.3-3.4
+ C396.7,1905.4,414.9,1856.4,432.9,1808.8z"/>
+<path fill="none" d="M980,1186.8L980,1186.8c0.1,0,0.1,0,0.1-0.1C980.1,1186.8,980.1,1186.8,980,1186.8z"/>
+<path fill="#BE202E" d="M952.6,1323c-10.6,1.9-21.4,3.8-32.5,5.7c-0.1,0-0.1,0.1-0.2,0.1c5.6-0.8,11.2-1.7,16.6-2.6
+ C942,1325.2,947.3,1324.1,952.6,1323z"/>
+<path opacity="0.35" fill="#BE202E" d="M952.6,1323c-10.6,1.9-21.4,3.8-32.5,5.7c-0.1,0-0.1,0.1-0.2,0.1c5.6-0.8,11.2-1.7,16.6-2.6
+ C942,1325.2,947.3,1324.1,952.6,1323z"/>
+<path fill="#BE202E" d="M980.3,1186.7C980.2,1186.7,980.2,1186.7,980.3,1186.7c-0.1,0.1-0.2,0.1-0.2,0.1c1.8-0.2,3.5-0.5,5.2-0.8
+ c7-1,13.9-2.2,20.7-3.7C997.5,1183.8,989,1185.2,980.3,1186.7L980.3,1186.7L980.3,1186.7z"/>
+<path opacity="0.35" fill="#BE202E" d="M980.3,1186.7C980.2,1186.7,980.2,1186.7,980.3,1186.7c-0.1,0.1-0.2,0.1-0.2,0.1
+ c1.8-0.2,3.5-0.5,5.2-0.8c7-1,13.9-2.2,20.7-3.7C997.5,1183.8,989,1185.2,980.3,1186.7L980.3,1186.7L980.3,1186.7z"/>
+<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-7537.7339" y1="-2391.4075" x2="-4625.4141" y2="-2391.4075" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+ <stop offset="0.3233" style="stop-color:#9E2064"/>
+ <stop offset="0.6302" style="stop-color:#C92037"/>
+ <stop offset="0.7514" style="stop-color:#CD2335"/>
+ <stop offset="1" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_2_)" d="M858.6,784.7c25.1-46.9,50.5-92.8,76.2-137.4c26.7-46.4,53.7-91.3,80.9-134.7
+ c1.6-2.6,3.2-5.2,4.8-7.7c27-42.7,54.2-83.7,81.6-122.9L1019.5,226c-6.2,7.6-12.5,15.3-18.8,23.2c-23.8,29.7-48.6,61.6-73.9,95.5
+ c-28.6,38.2-58,78.9-87.8,121.7c-27.6,39.5-55.5,80.9-83.5,123.7c-23.8,36.5-47.7,74-71.4,112.5c-0.9,1.4-1.8,2.9-2.6,4.3
+ l107.5,212.3C811.8,873.6,835.1,828.7,858.6,784.7z"/>
+<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-7186.1777" y1="-2099.3059" x2="-5450.7183" y2="-2099.3059" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+ <stop offset="0" style="stop-color:#282662"/>
+ <stop offset="9.548390e-02" style="stop-color:#662E8D"/>
+ <stop offset="0.7882" style="stop-color:#9F2064"/>
+ <stop offset="0.9487" style="stop-color:#CD2032"/>
+</linearGradient>
+<path fill="url(#SVGID_3_)" d="M369,1981c-14.2,39.1-28.5,78.9-42.9,119.6c-0.2,0.6-0.4,1.2-0.6,1.8c-2,5.7-4.1,11.5-6.1,17.2
+ c-9.7,27.4-18,52.1-37.3,108.2c31.7,14.5,57.1,52.5,81.1,95.6c-2.6-44.7-21-86.6-56.2-119.1c156.1,7,290.6-32.4,360.1-146.6
+ c6.2-10.2,11.9-20.9,17-32.2c-31.6,40.1-70.8,57.1-144.5,53c-0.2,0.1-0.3,0.1-0.5,0.2c0.2-0.1,0.3-0.1,0.5-0.2
+ c108.6-48.6,163.1-95.3,211.2-172.6c11.4-18.3,22.5-38.4,33.8-60.6c-94.9,97.5-205,125.3-320.9,104.2l-86.9,9.5
+ C374.4,1966.3,371.7,1973.6,369,1981z"/>
+<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2418.5454" x2="-4461.8428" y2="-2418.5454" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+ <stop offset="0.3233" style="stop-color:#9E2064"/>
+ <stop offset="0.6302" style="stop-color:#C92037"/>
+ <stop offset="0.7514" style="stop-color:#CD2335"/>
+ <stop offset="1" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_4_)" d="M409.6,1786.3c18.8-48.5,38.1-97.7,58-147.2c19-47.4,38.5-95.2,58.5-143.2
+ c20-48,40.4-96.1,61.2-144.2c21.2-49,42.9-97.8,64.9-146.5c21.8-48.1,44-95.9,66.6-143.3c8.1-17.1,16.3-34.1,24.6-51
+ c14.2-29.3,28.6-58.4,43.1-87.2c0.8-1.6,1.6-3.1,2.4-4.6L681.4,706.8c-1.8,2.9-3.5,5.8-5.3,8.6c-25.1,40.9-50,82.7-74.4,125.4
+ c-24.7,43.1-49,87.1-72.7,131.7c-20,37.6-39.6,75.6-58.6,113.9c-3.8,7.8-7.6,15.5-11.3,23.2c-23.4,48.2-44.6,94.8-63.7,139.5
+ c-21.7,50.7-40.7,99.2-57.5,145.1c-11,30.2-21,59.4-30.1,87.4c-7.5,24-14.7,47.9-21.5,71.8c-16,56.3-29.9,112.4-41.2,168.3
+ L353,1935.1c14.3-38.1,28.9-76.8,44-116C401.1,1808.2,405.4,1797.3,409.6,1786.3z"/>
+<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="-7161.7642" y1="-2379.1431" x2="-5631.2524" y2="-2379.1431" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+ <stop offset="0" style="stop-color:#282662"/>
+ <stop offset="9.548390e-02" style="stop-color:#662E8D"/>
+ <stop offset="0.7882" style="stop-color:#9F2064"/>
+ <stop offset="0.9487" style="stop-color:#CD2032"/>
+</linearGradient>
+<path fill="url(#SVGID_5_)" d="M243.5,1729.4c-13.6,68.2-23.2,136.2-28,203.8c-0.2,2.4-0.4,4.7-0.5,7.1
+ c-33.7-54-124-106.8-123.8-106.2c64.6,93.7,113.7,186.7,120.9,278c-34.6,7.1-82-3.2-136.8-23.3c57.1,52.5,100,67,116.7,70.9
+ c-52.5,3.3-107.1,39.3-162.1,80.8c80.5-32.8,145.5-45.8,192.1-35.3C148.1,2414.2,74.1,2645,0,2890c22.7-6.7,36.2-21.9,43.9-42.6
+ c13.2-44.4,100.8-335.6,238-718.2c3.9-10.9,7.8-21.8,11.8-32.9c1.1-3,2.2-6.1,3.3-9.2c14.5-40.1,29.5-81.1,45.1-122.9
+ c3.5-9.5,7.1-19,10.7-28.6c0.1-0.2,0.1-0.4,0.2-0.6l-107.9-213.2C244.6,1724.4,244,1726.9,243.5,1729.4z"/>
+<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2117.1309" x2="-4461.8428" y2="-2117.1309" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+ <stop offset="0.3233" style="stop-color:#9E2064"/>
+ <stop offset="0.6302" style="stop-color:#C92037"/>
+ <stop offset="0.7514" style="stop-color:#CD2335"/>
+ <stop offset="1" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_6_)" d="M805.6,937c-3.1,6.3-6.2,12.7-9.3,19.1c-9.3,19.2-18.8,38.8-28.3,58.8
+ c-10.3,21.7-20.7,43.9-31.3,66.5c-5.3,11.4-10.6,22.9-16,34.6c-16.1,35-32.4,71.1-48.9,108.3c-20.3,45.8-41,93.4-62,142.8
+ c-20,47.1-40.3,95.9-60.9,146.3c-19.5,47.9-39.3,97.3-59.3,148.3c-17.8,45.4-35.9,92.1-54,140.1c-0.9,2.3-1.8,4.7-2.6,7
+ c-18,47.6-36.2,96.6-54.6,146.8c-0.4,1.1-0.8,2.3-1.3,3.4l86.9-9.5c-1.7-0.3-3.5-0.5-5.2-0.9c103.9-13,242.1-90.6,331.4-186.5
+ c41.1-44.2,78.5-96.3,113-157.3c25.7-45.4,49.8-95.8,72.8-151.5c20.1-48.7,39.4-101.4,58-158.6c-23.9,12.6-51.2,21.8-81.4,28.2
+ c-5.3,1.1-10.7,2.2-16.1,3.1c-5.5,1-11,1.8-16.6,2.6l0,0l0,0c0.1,0,0.1-0.1,0.2-0.1c96.9-37.3,158-109.2,202.4-197.4
+ c-25.5,17.4-66.9,40.1-116.6,51.1c-6.7,1.5-13.7,2.7-20.7,3.7c-1.7,0.3-3.5,0.6-5.2,0.8l0,0l0,0c0.1,0,0.1,0,0.1-0.1
+ c0,0,0.1,0,0.1,0l0,0c33.6-14.1,62-29.8,86.6-48.4c5.3-4,10.4-8.1,15.3-12.3c7.5-6.5,14.7-13.3,21.5-20.5c4.4-4.6,8.6-9.3,12.7-14.2
+ c9.6-11.5,18.7-23.9,27.1-37.3c2.6-4.1,5.1-8.3,7.6-12.6c3.2-6.2,6.3-12.3,9.3-18.3c13.5-27.2,24.4-51.5,33-72.8
+ c4.3-10.6,8.1-20.5,11.3-29.7c1.3-3.7,2.5-7.2,3.7-10.6c3.4-10.2,6.2-19.3,8.4-27.3c3.3-12,5.3-21.5,6.4-28.4l0,0l0,0
+ c-3.3,2.6-7.1,5.2-11.3,7.7c-29.3,17.5-79.5,33.4-119.9,40.8l79.8-8.8l-79.8,8.8c-0.6,0.1-1.2,0.2-1.8,0.3c-4,0.7-8.1,1.3-12.2,2
+ c0.7-0.3,1.4-0.7,2.1-1l-273,29.9C806.6,935,806.1,936,805.6,937z"/>
+<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="-7554.8232" y1="-2132.0981" x2="-4642.5034" y2="-2132.0981" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+ <stop offset="0.3233" style="stop-color:#9E2064"/>
+ <stop offset="0.6302" style="stop-color:#C92037"/>
+ <stop offset="0.7514" style="stop-color:#CD2335"/>
+ <stop offset="1" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_7_)" d="M1112.9,385.1c-24.3,37.3-50.8,79.6-79.4,127.5c-1.5,2.5-3,5.1-4.5,7.6
+ c-24.6,41.5-50.8,87.1-78.3,137c-23.8,43.1-48.5,89.3-74.3,139c-22.4,43.3-45.6,89.2-69.4,137.8l273-29.9
+ c79.5-36.6,115.1-69.7,149.6-117.6c9.2-13.2,18.4-27,27.5-41.3c28-43.8,55.6-92,80.1-139.9c23.7-46.3,44.7-92.2,60.7-133.5
+ c10.2-26.3,18.4-50.8,24.1-72.3c5-19,8.9-36.9,11.9-54.1C1327.9,363.5,1197.6,380.9,1112.9,385.1z"/>
+<path fill="#BE202E" d="M936.5,1326.1c-5.5,1-11,1.8-16.6,2.6l0,0C925.5,1328,931,1327.1,936.5,1326.1z"/>
+<path opacity="0.35" fill="#BE202E" d="M936.5,1326.1c-5.5,1-11,1.8-16.6,2.6l0,0C925.5,1328,931,1327.1,936.5,1326.1z"/>
+<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2027.484" x2="-4461.8433" y2="-2027.484" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+ <stop offset="0.3233" style="stop-color:#9E2064"/>
+ <stop offset="0.6302" style="stop-color:#C92037"/>
+ <stop offset="0.7514" style="stop-color:#CD2335"/>
+ <stop offset="1" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_8_)" d="M936.5,1326.1c-5.5,1-11,1.8-16.6,2.6l0,0C925.5,1328,931,1327.1,936.5,1326.1z"/>
+<path fill="#BE202E" d="M980,1186.8c1.8-0.2,3.5-0.5,5.2-0.8C983.5,1186.3,981.8,1186.6,980,1186.8L980,1186.8z"/>
+<path opacity="0.35" fill="#BE202E" d="M980,1186.8c1.8-0.2,3.5-0.5,5.2-0.8C983.5,1186.3,981.8,1186.6,980,1186.8L980,1186.8z"/>
+<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2037.7417" x2="-4461.8433" y2="-2037.7417" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+ <stop offset="0.3233" style="stop-color:#9E2064"/>
+ <stop offset="0.6302" style="stop-color:#C92037"/>
+ <stop offset="0.7514" style="stop-color:#CD2335"/>
+ <stop offset="1" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_9_)" d="M980,1186.8c1.8-0.2,3.5-0.5,5.2-0.8C983.5,1186.3,981.8,1186.6,980,1186.8L980,1186.8z"/>
+<path fill="#BE202E" d="M980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7L980.2,1186.7L980.2,1186.7L980.2,1186.7
+ C980.2,1186.7,980.2,1186.7,980.2,1186.7z"/>
+<path opacity="0.35" fill="#BE202E" d="M980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7L980.2,1186.7L980.2,1186.7
+ L980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7z"/>
+<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="-5738.0635" y1="-2039.799" x2="-5094.3457" y2="-2039.799" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+ <stop offset="0.3233" style="stop-color:#9E2064"/>
+ <stop offset="0.6302" style="stop-color:#C92037"/>
+ <stop offset="0.7514" style="stop-color:#CD2335"/>
+ <stop offset="1" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_10_)" d="M980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7L980.2,1186.7L980.2,1186.7L980.2,1186.7
+ C980.2,1186.7,980.2,1186.7,980.2,1186.7z"/>
+</svg>
diff --git a/tomcat-cas/webapps/manager/images/tomcat.gif b/tomcat-cas/webapps/manager/images/tomcat.gif
index 6175673..f2aa6f8 100644
--- a/tomcat-cas/webapps/manager/images/tomcat.gif
+++ b/tomcat-cas/webapps/manager/images/tomcat.gif
Binary files differ
diff --git a/tomcat-cas/webapps/manager/index.jsp b/tomcat-cas/webapps/manager/index.jsp
new file mode 100644
index 0000000..48f50ec
--- /dev/null
+++ b/tomcat-cas/webapps/manager/index.jsp
@@ -0,0 +1,18 @@
+<%--
+ 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.
+--%>
+<%@ page session="false" trimDirectiveWhitespaces="true" %>
+<% response.sendRedirect(request.getContextPath() + "/html"); %>
\ No newline at end of file
diff --git a/tomcat-cas/webapps/manager/status.xsd b/tomcat-cas/webapps/manager/status.xsd
index 6d9d63a..5322fd0 100644
--- a/tomcat-cas/webapps/manager/status.xsd
+++ b/tomcat-cas/webapps/manager/status.xsd
@@ -15,65 +15,70 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by peter lin (consultant) -->
-<!--W3C Schema generated by XMLSPY v5 rel. 4 U (http://www.xmlspy.com)-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
- <xs:complexType name="connector">
- <xs:sequence>
- <xs:element name="threadInfo" type="threadInfo"/>
- <xs:element name="requestInfo" type="requestInfo"/>
- <xs:element name="workers" type="workers"/>
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" use="required"/>
- </xs:complexType>
- <xs:complexType name="jvm">
- <xs:sequence>
- <xs:element name="memory" type="memory"/>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="memory">
- <xs:attribute name="free" type="xs:long" use="required"/>
- <xs:attribute name="total" type="xs:long" use="required"/>
- <xs:attribute name="max" type="xs:long" use="required"/>
- </xs:complexType>
- <xs:complexType name="requestInfo">
- <xs:attribute name="maxTime" type="xs:long" use="required"/>
- <xs:attribute name="processingTime" type="xs:int" use="required"/>
- <xs:attribute name="requestCount" type="xs:long" use="required"/>
- <xs:attribute name="errorCount" type="xs:long" use="required"/>
- <xs:attribute name="bytesReceived" type="xs:long" use="required"/>
- <xs:attribute name="bytesSent" type="xs:long" use="required"/>
- </xs:complexType>
- <xs:element name="status">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="jvm" type="jvm"/>
- <xs:element name="connector" type="connector"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:complexType name="threadInfo">
- <xs:attribute name="maxThreads" type="xs:int" use="required"/>
- <xs:attribute name="minSpareThreads" type="xs:int" use="required"/>
- <xs:attribute name="maxSpareThreads" type="xs:int" use="required"/>
- <xs:attribute name="currentThreadCount" type="xs:int" use="required"/>
- <xs:attribute name="currentThreadsBusy" type="xs:int" use="required"/>
- </xs:complexType>
- <xs:complexType name="worker">
- <xs:attribute name="stage" type="xs:string" use="required"/>
- <xs:attribute name="requestProcessingTime" type="xs:int" use="required"/>
- <xs:attribute name="requestBytesSent" type="xs:long" use="required"/>
- <xs:attribute name="requestBytesRecieved" type="xs:long" use="required"/>
- <xs:attribute name="remoteAddr" type="xs:string" use="required"/>
- <xs:attribute name="virtualHost" type="xs:string" use="required"/>
- <xs:attribute name="method" type="xs:string" use="required"/>
- <xs:attribute name="currentUri" type="xs:string" use="required"/>
- <xs:attribute name="currentQueryString" type="xs:string" use="required"/>
- <xs:attribute name="protocol" type="xs:string" use="required"/>
- </xs:complexType>
- <xs:complexType name="workers">
- <xs:sequence>
- <xs:element name="worker" type="worker"/>
- </xs:sequence>
- </xs:complexType>
+ <xs:element name="status">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="jvm" type="jvm"/>
+ <xs:element name="connector" type="connector" minOccurs="1" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:complexType name="connector">
+ <xs:sequence>
+ <xs:element name="threadInfo" type="threadInfo"/>
+ <xs:element name="requestInfo" type="requestInfo"/>
+ <xs:element name="workers" type="workers"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:string" use="required"/>
+ </xs:complexType>
+ <xs:complexType name="jvm">
+ <xs:sequence>
+ <xs:element name="memory" type="memory"/>
+ <xs:element name="memorypool" type="memorypool" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="memory">
+ <xs:attribute name="free" type="xs:long" use="required"/>
+ <xs:attribute name="total" type="xs:long" use="required"/>
+ <xs:attribute name="max" type="xs:long" use="required"/>
+ </xs:complexType>
+ <xs:complexType name="memorypool">
+ <xs:attribute name="name" type="xs:string" use="required"/>
+ <xs:attribute name="type" type="xs:string" use="required"/>
+ <xs:attribute name="usageInit" type="xs:long" use="required"/>
+ <xs:attribute name="usageCommitted" type="xs:long" use="required"/>
+ <xs:attribute name="usageMax" type="xs:long" use="required"/>
+ <xs:attribute name="usageUsed" type="xs:long" use="required"/>
+ </xs:complexType>
+ <xs:complexType name="requestInfo">
+ <xs:attribute name="maxTime" type="xs:long" use="required"/>
+ <xs:attribute name="processingTime" type="xs:int" use="required"/>
+ <xs:attribute name="requestCount" type="xs:long" use="required"/>
+ <xs:attribute name="errorCount" type="xs:long" use="required"/>
+ <xs:attribute name="bytesReceived" type="xs:long" use="required"/>
+ <xs:attribute name="bytesSent" type="xs:long" use="required"/>
+ </xs:complexType>
+ <xs:complexType name="threadInfo">
+ <xs:attribute name="maxThreads" type="xs:int" use="required"/>
+ <xs:attribute name="currentThreadCount" type="xs:int" use="required"/>
+ <xs:attribute name="currentThreadsBusy" type="xs:int" use="required"/>
+ </xs:complexType>
+ <xs:complexType name="worker">
+ <xs:attribute name="stage" type="xs:string" use="required"/>
+ <xs:attribute name="requestProcessingTime" type="xs:int" use="required"/>
+ <xs:attribute name="requestBytesSent" type="xs:long" use="required"/>
+ <xs:attribute name="requestBytesReceived" type="xs:long" use="required"/>
+ <xs:attribute name="remoteAddr" type="xs:string" use="required"/>
+ <xs:attribute name="virtualHost" type="xs:string" use="required"/>
+ <xs:attribute name="method" type="xs:string" use="required"/>
+ <xs:attribute name="currentUri" type="xs:string" use="required"/>
+ <xs:attribute name="currentQueryString" type="xs:string" use="required"/>
+ <xs:attribute name="protocol" type="xs:string" use="required"/>
+ </xs:complexType>
+ <xs:complexType name="workers">
+ <xs:sequence>
+ <xs:element name="worker" type="worker" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
</xs:schema>
diff --git a/tomcat-cas/webapps/manager/xform.xsl b/tomcat-cas/webapps/manager/xform.xsl
index f179a1e..61947f1 100644
--- a/tomcat-cas/webapps/manager/xform.xsl
+++ b/tomcat-cas/webapps/manager/xform.xsl
@@ -26,12 +26,12 @@
<xsl:template match="status">
<html>
<head>
- <TITLE>Tomcat Status</TITLE>
- <STYLE type="text/css">
- body, table, tr, td, a, div, span {
- vertical-align : top;
- }
- </STYLE>
+ <TITLE>Tomcat Status</TITLE>
+ <STYLE type="text/css">
+ body, table, tr, td, a, div, span {
+ vertical-align : top;
+ }
+ </STYLE>
</head>
<body>
<div style='font-size:20px;'>Tomcat Status</div>
@@ -44,55 +44,68 @@
<xsl:template match="jvm">
<xsl:apply-templates select="memory"/>
+ <b>Memory Pools</b><br />
+ <xsl:apply-templates select="memorypool"/>
+ <hr />
</xsl:template>
<xsl:template match="memory">
<table><tr>
- <td><b>JVM:</b></td>
- <td><b>free:</b> <xsl:value-of select="@free"/></td>
- <td><b>total:</b> <xsl:value-of select="@total"/></td>
- <td><b>max:</b> <xsl:value-of select="@max"/></td>
- </tr>
+ <td><b>JVM:</b></td>
+ <td><b>free:</b> <xsl:value-of select="@free"/></td>
+ <td><b>total:</b> <xsl:value-of select="@total"/></td>
+ <td><b>max:</b> <xsl:value-of select="@max"/></td>
+ </tr>
</table><hr />
</xsl:template>
- <xsl:template match="connector">
- <b>Connector -- </b> <xsl:value-of select="@name"/><br />
+ <xsl:template match="memorypool">
+ <table><tr>
+ <td><b>Name:</b> <xsl:value-of select="@name"/></td>
+ <td><b>Type:</b> <xsl:value-of select="@type"/></td>
+ <td><b>Initial:</b> <xsl:value-of select="@usageInit"/></td>
+ <td><b>Committed:</b> <xsl:value-of select="@usageCommitted"/></td>
+ <td><b>Maximum:</b> <xsl:value-of select="@usageMax"/></td>
+ <td><b>Used:</b> <xsl:value-of select="@usageUsed"/></td>
+ </tr>
+ </table>
+ </xsl:template>
- <xsl:apply-templates select="threadInfo"/>
- <xsl:apply-templates select="requestInfo"/>
- <xsl:apply-templates select="workers"/>
+ <xsl:template match="connector">
+ <b>Connector -- </b> <xsl:value-of select="@name"/><br />
+
+ <xsl:apply-templates select="threadInfo"/>
+ <xsl:apply-templates select="requestInfo"/>
+ <xsl:apply-templates select="workers"/>
</xsl:template>
<xsl:template match="threadInfo">
<table><tr>
- <td><b>threadInfo </b></td>
- <td><b>maxThreads:</b> <xsl:value-of select="@maxThreads"/></td>
- <td><b>minSpareThreads:</b> <xsl:value-of select="@minSpareThreads"/></td>
- <td><b>maxSpareThreads:</b> <xsl:value-of select="@maxSpareThreads"/></td>
- <td><b>currentThreadCount:</b> <xsl:value-of select="@currentThreadCount"/></td>
- <td><b>currentThreadsBusy:</b> <xsl:value-of select="@currentThreadsBusy"/></td>
- </tr>
+ <td><b>threadInfo</b></td>
+ <td><b>maxThreads:</b> <xsl:value-of select="@maxThreads"/></td>
+ <td><b>currentThreadCount:</b> <xsl:value-of select="@currentThreadCount"/></td>
+ <td><b>currentThreadsBusy:</b> <xsl:value-of select="@currentThreadsBusy"/></td>
+ </tr>
</table><hr />
</xsl:template>
<xsl:template match="requestInfo">
<table><tr>
- <td><b>requestInfo </b></td>
- <td><b>maxTime:</b> <xsl:value-of select="@maxTime"/></td>
- <td><b>processingTime:</b> <xsl:value-of select="@processingTime"/></td>
- <td><b>requestCount:</b> <xsl:value-of select="@requestCount"/></td>
- <td><b>errorCount:</b> <xsl:value-of select="@errorCount"/></td>
- <td><b>bytesReceived:</b> <xsl:value-of select="@bytesReceived"/></td>
- <td><b>bytesSent:</b> <xsl:value-of select="@bytesSent"/></td>
- </tr>
+ <td><b>requestInfo </b></td>
+ <td><b>maxTime:</b> <xsl:value-of select="@maxTime"/></td>
+ <td><b>processingTime:</b> <xsl:value-of select="@processingTime"/></td>
+ <td><b>requestCount:</b> <xsl:value-of select="@requestCount"/></td>
+ <td><b>errorCount:</b> <xsl:value-of select="@errorCount"/></td>
+ <td><b>bytesReceived:</b> <xsl:value-of select="@bytesReceived"/></td>
+ <td><b>bytesSent:</b> <xsl:value-of select="@bytesSent"/></td>
+ </tr>
</table><hr />
</xsl:template>
<xsl:template match="workers">
<table>
<tr><th>Stage</th><th>Time</th><th>B Sent</th><th>B Recv</th><th>Client</th><th>VHost</th><th>Request</th></tr>
- <xsl:apply-templates select="worker"/>
+ <xsl:apply-templates select="worker"/>
</table><hr />
</xsl:template>