diff --git a/plugins/pom.xml b/plugins/pom.xml
index 572b6538b4..df24f72a81 100644
--- a/plugins/pom.xml
+++ b/plugins/pom.xml
@@ -122,7 +122,7 @@
4.8.0-SNAPSHOT
- 9.4.43.v20210629
+ 10.0.16
diff --git a/pom.xml b/pom.xml
index 9f1223cd78..dd1a0315fc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -118,7 +118,7 @@
- 9.4.43.v20210629
+ 10.0.16
1.2.5
4.1.94.Final
1.70
diff --git a/xmppserver/pom.xml b/xmppserver/pom.xml
index 489a399278..673a02137e 100644
--- a/xmppserver/pom.xml
+++ b/xmppserver/pom.xml
@@ -148,8 +148,6 @@
org.jivesoftware.openfire.admin
- 11
- 11
true
@@ -266,7 +264,7 @@
org.eclipse.jetty.websocket
- websocket-server
+ websocket-jetty-server
${jetty.version}
diff --git a/xmppserver/src/main/java/org/eclipse/jetty/util/WebAppLoaderFix.java b/xmppserver/src/main/java/org/eclipse/jetty/util/WebAppLoaderFix.java
deleted file mode 100644
index d12d98c30a..0000000000
--- a/xmppserver/src/main/java/org/eclipse/jetty/util/WebAppLoaderFix.java
+++ /dev/null
@@ -1,232 +0,0 @@
-//
-// ========================================================================
-// Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd.
-// ------------------------------------------------------------------------
-// All rights reserved. This program and the accompanying materials
-// are made available under the terms of the Eclipse Public License v1.0
-// and Apache License v2.0 which accompanies this distribution.
-//
-// The Eclipse Public License is available at
-// http://www.eclipse.org/legal/epl-v10.html
-//
-// The Apache License v2.0 is available at
-// http://www.opensource.org/licenses/apache2.0.php
-//
-// You may elect to redistribute this code under either of these licenses.
-// ========================================================================
-//
-
-package org.eclipse.jetty.util;
-
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.net.URLClassLoader;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.jar.JarFile;
-
-public class WebAppLoaderFix
-{
- public static void checkAndClose(ClassLoader classLoader)
- {
- if (!isWindows() || !(classLoader instanceof URLClassLoader))
- {
- return;
- }
- HashSet leakedJarNames = preClose((URLClassLoader)classLoader);
- cleanupJarFileFactory(leakedJarNames);
- }
-
- private static boolean isWindows()
- {
- String osProp = System.getProperty("os.name").toLowerCase();
- return osProp.indexOf("win") >= 0;
- }
-
- private static HashSet preClose(URLClassLoader loader)
- {
- HashSet leakedJarNames = new HashSet<>();
- Field f = getClassField(URLClassLoader.class, "ucp");
- if (f != null)
- {
- Object obj = null;
- try
- {
- obj = f.get(loader);
- final Object ucp = obj;
- f = getClassField(ucp.getClass(), "loaders");
- if (f != null)
- {
- ArrayList loaders = null;
- try
- {
- loaders = (ArrayList) f.get(ucp);
- }
- catch (IllegalAccessException ex)
- {
- }
- for (int i = 0; loaders != null && i < loaders.size(); i++)
- {
- obj = loaders.get(i);
- f = getClassField(obj.getClass(), "jar");
- if (f != null)
- {
- try
- {
- obj = f.get(obj);
- } catch (IllegalAccessException ex)
- {
- }
- if (obj instanceof JarFile)
- {
- final JarFile jarFile = (JarFile) obj;
- leakedJarNames.add(jarFile.getName());
- }
- }
- }
- }
- }
- catch (IllegalAccessException ex)
- {
- }
- }
- return leakedJarNames;
- }
-
- private static Field getClassField(Class clz, String fieldName)
- {
- Field field = null;
- try
- {
- field = clz.getDeclaredField(fieldName);
- field.setAccessible(true);
- }
- catch (Exception e)
- {
- }
- return field;
- }
-
- private static void cleanupJarFileFactory(HashSet leakedJarNames) {
-
- Class classJarURLConnection = null;
- try
- {
- classJarURLConnection = Class.forName("sun.net.www.protocol.jar.JarURLConnection");
- }
- catch (ClassNotFoundException ex)
- {
- return;
- }
-
- Field f = getClassField(classJarURLConnection, "factory");
-
- if (f == null)
- {
- return;
- }
- Object obj = null;
- try
- {
- obj = f.get(null);
- } catch (IllegalAccessException ex)
- {
- return;
- }
-
- Class classJarFileFactory = obj.getClass();
- HashMap fileCache = null;
- f = getClassField(classJarFileFactory, "fileCache");
- if (f == null)
- {
- return;
- }
- try
- {
- obj = f.get(null);
- if (obj instanceof HashMap)
- {
- fileCache = (HashMap) obj;
- }
- }
- catch (IllegalAccessException ex)
- {
- }
- HashMap urlCache = null;
- f = getClassField(classJarFileFactory, "urlCache");
- if (f == null)
- {
- return;
- }
- try
- {
- obj = f.get(null);
- if (obj instanceof HashMap)
- {
- urlCache = (HashMap) obj;
- }
- }
- catch (IllegalAccessException ex)
- {
- }
-
- if (urlCache != null)
- {
- HashMap urlCacheTmp = (HashMap) urlCache.clone();
- Iterator it = urlCacheTmp.keySet().iterator();
- while (it.hasNext())
- {
- obj = it.next();
- if (!(obj instanceof JarFile))
- {
- continue;
- }
- JarFile jarFile = (JarFile) obj;
- if (leakedJarNames.contains(jarFile.getName()))
- {
- try
- {
- jarFile.close();
- }
- catch (IOException ex)
- {
- }
- if (fileCache != null)
- {
- fileCache.remove(urlCache.get(jarFile));
- }
- urlCache.remove(jarFile);
- }
- }
- }
- else if (fileCache != null)
- {
- HashMap fileCacheTmp = (HashMap) fileCache.clone();
- Iterator it = fileCacheTmp.keySet().iterator();
- while (it.hasNext())
- {
- Object key = it.next();
- obj = fileCache.get(key);
- if (!(obj instanceof JarFile))
- {
- continue;
- }
- JarFile jarFile = (JarFile) obj;
- if (leakedJarNames.contains(jarFile.getName()))
- {
- try
- {
- jarFile.close();
- }
- catch (IOException ex)
- {
- }
- fileCache.remove(key);
- }
- }
- }
- leakedJarNames.clear();
- }
-}
\ No newline at end of file
diff --git a/xmppserver/src/main/java/org/jivesoftware/openfire/container/AdminConsolePlugin.java b/xmppserver/src/main/java/org/jivesoftware/openfire/container/AdminConsolePlugin.java
index 7b32a96351..27969defd0 100644
--- a/xmppserver/src/main/java/org/jivesoftware/openfire/container/AdminConsolePlugin.java
+++ b/xmppserver/src/main/java/org/jivesoftware/openfire/container/AdminConsolePlugin.java
@@ -211,7 +211,7 @@ protected void startup() {
final ConnectionManager connectionManager = XMPPServer.getInstance().getConnectionManager();
final ConnectionConfiguration configuration = connectionManager.getListener( ConnectionType.WEBADMIN, true ).generateConnectionConfiguration();
- final SslContextFactory sslContextFactory = new EncryptionArtifactFactory( configuration ).getSslContextFactory();
+ final SslContextFactory.Server sslContextFactory = new EncryptionArtifactFactory( configuration ).getSslContextFactory();
final HttpConfiguration httpsConfig = new HttpConfiguration();
httpsConfig.setSendServerVersion( false );
@@ -489,6 +489,7 @@ private void createWebAppContext() {
final List initializers = new ArrayList<>();
initializers.add(new ContainerInitializer(new JasperInitializer(), null));
context.setAttribute("org.eclipse.jetty.containerInitializers", initializers);
+ context.setClassLoader(Thread.currentThread().getContextClassLoader());
context.setAttribute(InstanceManager.class.getName(), new SimpleInstanceManager());
context.setConfigurations(new Configuration[]{
new AnnotationConfiguration(),
@@ -501,7 +502,7 @@ private void createWebAppContext() {
new JettyWebXmlConfiguration()
});
final URL classes = getClass().getProtectionDomain().getCodeSource().getLocation();
- context.getMetaData().setWebInfClassesDirs(Collections.singletonList(Resource.newResource(classes)));
+ context.getMetaData().setWebInfClassesResources(Collections.singletonList(Resource.newResource(classes)));
// The index.html includes a redirect to the index.jsp and doesn't bypass
// the context security when in development mode
diff --git a/xmppserver/src/main/java/org/jivesoftware/openfire/container/PluginServletContext.java b/xmppserver/src/main/java/org/jivesoftware/openfire/container/PluginServletContext.java
index 3dccbc788a..5b0d59fd67 100644
--- a/xmppserver/src/main/java/org/jivesoftware/openfire/container/PluginServletContext.java
+++ b/xmppserver/src/main/java/org/jivesoftware/openfire/container/PluginServletContext.java
@@ -257,6 +257,11 @@ public ServletRegistration.Dynamic addServlet( String s, Class extends Servlet
return proxy.addServlet( s, aClass );
}
+ @Override
+ public ServletRegistration.Dynamic addJspFile(String servletName, String jspFile) {
+ return proxy.addJspFile(servletName, jspFile);
+ }
+
@Override
public T createServlet( Class aClass ) throws ServletException
{
@@ -382,4 +387,34 @@ public String getVirtualServerName()
{
return proxy.getVirtualServerName();
}
+
+ @Override
+ public int getSessionTimeout() {
+ return proxy.getSessionTimeout();
+ }
+
+ @Override
+ public void setSessionTimeout(int sessionTimeout) {
+ proxy.setSessionTimeout(sessionTimeout);
+ }
+
+ @Override
+ public String getRequestCharacterEncoding() {
+ return proxy.getRequestCharacterEncoding();
+ }
+
+ @Override
+ public void setRequestCharacterEncoding(String encoding) {
+ proxy.setRequestCharacterEncoding(encoding);
+ }
+
+ @Override
+ public String getResponseCharacterEncoding() {
+ return proxy.getResponseCharacterEncoding();
+ }
+
+ @Override
+ public void setResponseCharacterEncoding(String encoding) {
+ proxy.setResponseCharacterEncoding(encoding);
+ }
}
diff --git a/xmppserver/src/main/java/org/jivesoftware/openfire/http/HttpBindManager.java b/xmppserver/src/main/java/org/jivesoftware/openfire/http/HttpBindManager.java
index cda70cea5e..935b38bf7b 100644
--- a/xmppserver/src/main/java/org/jivesoftware/openfire/http/HttpBindManager.java
+++ b/xmppserver/src/main/java/org/jivesoftware/openfire/http/HttpBindManager.java
@@ -28,10 +28,10 @@
import org.eclipse.jetty.server.handler.gzip.GzipHandler;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
-import org.eclipse.jetty.util.WebAppLoaderFix;
import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.eclipse.jetty.util.thread.QueuedThreadPool;
import org.eclipse.jetty.webapp.WebAppContext;
+import org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerInitializer;
import org.jivesoftware.openfire.Connection;
import org.jivesoftware.openfire.ConnectionManager;
import org.jivesoftware.openfire.JMXManager;
@@ -479,7 +479,7 @@ private Connector createSSLConnector( final Server httpBindServer ) {
final ConnectionManager connectionManager = XMPPServer.getInstance().getConnectionManager();
final ConnectionConfiguration configuration = connectionManager.getListener( ConnectionType.BOSH_C2S, true ).generateConnectionConfiguration();
- final SslContextFactory sslContextFactory = new EncryptionArtifactFactory(configuration).getSslContextFactory();
+ final SslContextFactory.Server sslContextFactory = new EncryptionArtifactFactory(configuration).getSslContextFactory();
final HttpConfiguration httpsConfig = new HttpConfiguration();
httpsConfig.setSecureScheme("https");
@@ -645,12 +645,7 @@ public boolean isThisOriginAllowed(String origin) {
*/
protected Handler createBoshHandler()
{
- final int options;
- if(isHttpCompressionEnabled()) {
- options = ServletContextHandler.SESSIONS | ServletContextHandler.GZIP;
- } else {
- options = ServletContextHandler.SESSIONS;
- }
+ final int options = ServletContextHandler.SESSIONS;
final ServletContextHandler context = new ServletContextHandler( null, "/http-bind", options );
// Ensure the JSP engine is initialized correctly (in order to be able to cope with Tomcat/Jasper precompiled JSPs).
@@ -667,9 +662,10 @@ protected Handler createBoshHandler()
// Add compression filter when needed.
if (isHttpCompressionEnabled()) {
- final GzipHandler gzipHandler = context.getGzipHandler();
+ final GzipHandler gzipHandler = new GzipHandler();
gzipHandler.addIncludedPaths("/*");
gzipHandler.addIncludedMethods(HttpMethod.POST.asString());
+ context.insertHandler(gzipHandler);
}
return context;
@@ -690,7 +686,7 @@ protected Handler createWebsocketHandler()
context.setAllowNullPathInfo(true);
// Add the functionality-providers.
context.addServlet( new ServletHolder( new OpenfireWebSocketServlet() ), "/*" );
-
+ JettyWebSocketServletContainerInitializer.configure(context, null);
return context;
}
@@ -769,12 +765,6 @@ public void addJettyHandler( Handler handler )
*/
public void removeJettyHandler( Handler handler )
{
- if (handler instanceof WebAppContext) {
- // A work-around of the Jetty bug described at https://github.com/eclipse/jetty.project/issues/1425
- // NOTE: According to some comments on WebAppLoaderFix, this may stop working on Java 9.
- // Hopefully the Jetty team will have fixed the underlying bug by then
- WebAppLoaderFix.checkAndClose(((WebAppContext) handler).getClassLoader());
- }
extensionHandlers.removeHandler( handler );
if ( handler.isStarted() )
{
diff --git a/xmppserver/src/main/java/org/jivesoftware/openfire/spi/EncryptionArtifactFactory.java b/xmppserver/src/main/java/org/jivesoftware/openfire/spi/EncryptionArtifactFactory.java
index 5ceab9c366..9de4c9e245 100644
--- a/xmppserver/src/main/java/org/jivesoftware/openfire/spi/EncryptionArtifactFactory.java
+++ b/xmppserver/src/main/java/org/jivesoftware/openfire/spi/EncryptionArtifactFactory.java
@@ -60,7 +60,7 @@ public class EncryptionArtifactFactory
// lazy loaded factory objects. These re-usable objects should be lazy loaded, preventing initialization in situations where they're never going to be used.
private transient KeyManagerFactory keyManagerFactory;
- private transient SslContextFactory sslContextFactory;
+ private transient SslContextFactory.Server sslContextFactory;
/**
* Creates a new instance of the factory.
@@ -301,7 +301,7 @@ public SSLEngine createClientModeSSLEngine() throws UnrecoverableKeyException, N
return sslEngine;
}
- public synchronized SslContextFactory getSslContextFactory()
+ public synchronized SslContextFactory.Server getSslContextFactory()
{
if ( sslContextFactory != null )
{
diff --git a/xmppserver/src/main/java/org/jivesoftware/openfire/websocket/OpenfireWebSocketServlet.java b/xmppserver/src/main/java/org/jivesoftware/openfire/websocket/OpenfireWebSocketServlet.java
index eb4e26f604..9ca9575106 100644
--- a/xmppserver/src/main/java/org/jivesoftware/openfire/websocket/OpenfireWebSocketServlet.java
+++ b/xmppserver/src/main/java/org/jivesoftware/openfire/websocket/OpenfireWebSocketServlet.java
@@ -15,9 +15,8 @@
*/
package org.jivesoftware.openfire.websocket;
-import org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension;
-import org.eclipse.jetty.websocket.servlet.WebSocketServlet;
-import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
+import org.eclipse.jetty.websocket.server.JettyWebSocketServlet;
+import org.eclipse.jetty.websocket.server.JettyWebSocketServletFactory;
import org.jivesoftware.openfire.SessionManager;
import org.jivesoftware.openfire.XMPPServer;
import org.jivesoftware.openfire.http.HttpBindManager;
@@ -43,7 +42,7 @@
* forwarded to this plugin/servlet, which will in turn create a new {@link WebSocketClientConnectionHandler}
* for each new connection.
*/
-public class OpenfireWebSocketServlet extends WebSocketServlet {
+public class OpenfireWebSocketServlet extends JettyWebSocketServlet {
private static final long serialVersionUID = 1074354600476010708L;
private static final Logger Log = LoggerFactory.getLogger(OpenfireWebSocketServlet.class);
@@ -92,14 +91,15 @@ protected void service(HttpServletRequest request, HttpServletResponse response)
}
@Override
- public void configure(WebSocketServletFactory factory)
+ public void configure(JettyWebSocketServletFactory factory)
{
- if (WebSocketClientConnectionHandler.isCompressionEnabled()) {
- factory.getExtensionFactory().register("permessage-deflate", PerMessageDeflateExtension.class);
+ if (!WebSocketClientConnectionHandler.isCompressionEnabled()) {
+ factory.getAvailableExtensionNames().remove("permessage-deflate");
}
final int messageSize = JiveGlobals.getIntProperty("xmpp.parser.buffer.size", 1048576);
- factory.getPolicy().setMaxTextMessageBufferSize(messageSize * 5);
- factory.getPolicy().setMaxTextMessageSize(messageSize);
+ factory.setInputBufferSize(messageSize * 5);
+ factory.setOutputBufferSize(messageSize * 5);
+ factory.setMaxTextMessageSize(messageSize);
// Jetty's idle policy cannot be modified - it will bluntly kill the connection. Ensure that it's longer than
// the maximum amount of idle-time that Openfire allows for its client connections!
@@ -110,7 +110,7 @@ public void configure(WebSocketServletFactory factory)
} else {
maxJettyIdleMs = propValue.plus(Duration.of(30, ChronoUnit.SECONDS)).toMillis();
}
- factory.getPolicy().setIdleTimeout(maxJettyIdleMs);
+ factory.setIdleTimeout(Duration.ofMillis(maxJettyIdleMs));
factory.setCreator((req, resp) -> {
try {
@@ -125,7 +125,7 @@ public void configure(WebSocketServletFactory factory)
} catch (Exception e) {
Log.warn("Unable to load websocket factory", e);
}
- Log.warn("Failed to create websocket for {}:{} make a request at {}", req.getRemoteAddress(), req.getRemotePort(), req.getRequestPath() );
+ Log.warn("Failed to create websocket for {}:{} make a request at {}", req.getHttpServletRequest().getRemoteAddr(), req.getHttpServletRequest().getRemotePort(), req.getRequestPath() );
return null;
});
}
diff --git a/xmppserver/src/main/java/org/jivesoftware/openfire/websocket/WebSocketClientConnectionHandler.java b/xmppserver/src/main/java/org/jivesoftware/openfire/websocket/WebSocketClientConnectionHandler.java
index e950fb9c87..649b778f94 100644
--- a/xmppserver/src/main/java/org/jivesoftware/openfire/websocket/WebSocketClientConnectionHandler.java
+++ b/xmppserver/src/main/java/org/jivesoftware/openfire/websocket/WebSocketClientConnectionHandler.java
@@ -38,6 +38,7 @@
import org.xmpp.packet.StreamError;
import java.io.IOException;
+import java.net.InetSocketAddress;
import java.time.Duration;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
@@ -103,7 +104,7 @@ public void onConnect(Session session)
lastReceived = Instant.now();
wsSession = session;
final PacketDeliverer backupDeliverer = NettyClientConnectionHandler.BACKUP_PACKET_DELIVERY_ENABLED.getValue() ? new OfflinePacketDeliverer() : null;
- wsConnection = new WebSocketConnection(this, backupDeliverer, session.getRemoteAddress());
+ wsConnection = new WebSocketConnection(this, backupDeliverer, (InetSocketAddress) session.getRemoteAddress()); // TODO can't assume InetSocketAddress
websocketFramePingTask = new WebsocketFramePingTask();
if (KEEP_ALIVE_FRAME_PING_ENABLED_PROPERTY.getValue()) {
// Run the task every 10% of the interval, to get the timing roughly in-line with the configured interval.
diff --git a/xmppserver/src/main/resources/META-INF/admin.tld b/xmppserver/src/main/resources/META-INF/admin.tld
deleted file mode 100644
index d44160aa9f..0000000000
--- a/xmppserver/src/main/resources/META-INF/admin.tld
+++ /dev/null
@@ -1,245 +0,0 @@
-
-
- 1.3
- Tag Library for Openfire
- Tab Library for Openfire Admin Console
- admin
- admin
-
- tabs
- org.jivesoftware.admin.TabsTag
- JSP
-
- css
- false
- true
-
-
- currentcss
- false
- true
-
-
- role
- false
- true
-
-
- minEdition
- false
- true
-
-
- justlinks
- false
- true
-
-
-
- subnavbar
- org.jivesoftware.admin.SubnavTag
- JSP
-
- css
- false
- true
-
-
- currentcss
- false
- true
-
-
- role
- false
- true
-
-
- minEdition
- false
- true
-
-
-
- sidebar
- org.jivesoftware.admin.SidebarTag
- JSP
-
- css
- false
- true
-
-
- currentcss
- false
- true
-
-
- headercss
- false
- true
-
-
- role
- false
- true
-
-
- minEdition
- false
- true
-
-
-
- subsidebar
- org.jivesoftware.admin.SubSidebarTag
- JSP
-
- css
- false
- true
-
-
- currentcss
- false
- true
-
-
- role
- false
- true
-
-
- minEdition
- false
- true
-
-
-
- ASN1DER
- org.jivesoftware.admin.ASN1DERTag
- JSP
-
- value
- true
- true
-
-
-
- FlashMessage
- org.jivesoftware.admin.FlashMessageTag
- empty
-
-
- contentBox
- /META-INF/tags/admin/contentBox.tagx
-
-
- infobox
- /META-INF/tags/admin/infoBox.tagx
-
-
- infoBox
- /META-INF/tags/admin/infoBox.tagx
-
-
- replaceAll
- org.jivesoftware.admin.JSTLFunctions
- java.lang.String replaceAll(java.lang.String, java.lang.String, java.lang.String)
-
-
- split
- org.jivesoftware.admin.JSTLFunctions
- java.lang.String[] split(java.lang.String, java.lang.String)
-
-
- byteFormat
- org.jivesoftware.admin.JSTLFunctions
- java.lang.String byteFormat(long)
-
-
- urlEncode
- org.jivesoftware.admin.JSTLFunctions
- java.lang.String urlEncode(java.lang.String)
-
-
- urlDecode
- org.jivesoftware.admin.JSTLFunctions
- java.lang.String urlDecode(java.lang.String)
-
-
- escapeHTMLTags
- org.jivesoftware.admin.JSTLFunctions
- java.lang.String escapeHTMLTags(java.lang.String)
-
-
- serverIdentities
- org.jivesoftware.util.CertificateManager
- java.util.List getServerIdentities(java.security.cert.X509Certificate)
-
-
- clientIdentities
- org.jivesoftware.util.CertificateManager
- java.util.List getClientIdentities(java.security.cert.X509Certificate)
-
-
- getProperty
- org.jivesoftware.util.JiveGlobals
- java.lang.String getProperty(java.lang.String,java.lang.String)
-
-
- getIntProperty
- org.jivesoftware.util.JiveGlobals
- int getIntProperty(java.lang.String,int)
-
-
- getBooleanProperty
- org.jivesoftware.util.JiveGlobals
- boolean getBooleanProperty(java.lang.String,boolean)
-
-
- getLongProperty
- org.jivesoftware.util.JiveGlobals
- long getLongProperty(java.lang.String,long)
-
-
- getListProperty
- org.jivesoftware.util.JiveGlobals
- java.util.List getListProperty(java.lang.String,java.util.List)
-
-
- formatDate
- org.jivesoftware.util.JiveGlobals
- java.lang.String formatDate(java.util.Date)
-
-
- formatDateTime
- org.jivesoftware.util.JiveGlobals
- java.lang.String formatDateTime(java.util.Date)
-
-
- formatTime
- org.jivesoftware.util.JiveGlobals
- java.lang.String formatTime(java.util.Date)
-
-
- chopAtWord
- org.jivesoftware.util.StringUtils
- java.lang.String chopAtWord(java.lang.String,int)
-
-
- elapsedTime
- org.jivesoftware.util.StringUtils
- java.lang.String getElapsedTime(long)
-
-
- fullElapsedTime
- org.jivesoftware.util.StringUtils
- java.lang.String getFullElapsedTime(java.time.Duration)
-
-
-
diff --git a/xmppserver/src/main/webapp/META-INF/tags/admin/contentBox.tagx b/xmppserver/src/main/webapp/META-INF/tags/admin/contentBox.tagx
deleted file mode 100644
index 7fc4ecd432..0000000000
--- a/xmppserver/src/main/webapp/META-INF/tags/admin/contentBox.tagx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/xmppserver/src/main/webapp/META-INF/tags/admin/infoBox.tagx b/xmppserver/src/main/webapp/META-INF/tags/admin/infoBox.tagx
deleted file mode 100644
index 76b7c11a0c..0000000000
--- a/xmppserver/src/main/webapp/META-INF/tags/admin/infoBox.tagx
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
- ![](images/${type}-16x16.gif) |
-
-
- |
-
-
-
-
-
-
-
-
diff --git a/xmppserver/src/main/webapp/WEB-INF/admin.tld b/xmppserver/src/main/webapp/WEB-INF/admin.tld
deleted file mode 100644
index fd9e585574..0000000000
--- a/xmppserver/src/main/webapp/WEB-INF/admin.tld
+++ /dev/null
@@ -1,253 +0,0 @@
-
-
- 1.3
- Tag Library for Openfire
- Tab Library for Openfire Admin Console
- admin
- admin
-
- tabs
- org.jivesoftware.admin.TabsTag
- JSP
-
- css
- false
- true
-
-
- currentcss
- false
- true
-
-
- role
- false
- true
-
-
- minEdition
- false
- true
-
-
- justlinks
- false
- true
-
-
-
- subnavbar
- org.jivesoftware.admin.SubnavTag
- JSP
-
- css
- false
- true
-
-
- currentcss
- false
- true
-
-
- role
- false
- true
-
-
- minEdition
- false
- true
-
-
-
- sidebar
- org.jivesoftware.admin.SidebarTag
- JSP
-
- css
- false
- true
-
-
- currentcss
- false
- true
-
-
- headercss
- false
- true
-
-
- role
- false
- true
-
-
- minEdition
- false
- true
-
-
-
- subsidebar
- org.jivesoftware.admin.SubSidebarTag
- JSP
-
- css
- false
- true
-
-
- currentcss
- false
- true
-
-
- role
- false
- true
-
-
- minEdition
- false
- true
-
-
-
- ASN1DER
- org.jivesoftware.admin.ASN1DERTag
- JSP
-
- value
- true
- true
-
-
-
- FlashMessage
- org.jivesoftware.admin.FlashMessageTag
- empty
-
-
- contentBox
- /META-INF/tags/admin/contentBox.tagx
-
-
- infobox
- /META-INF/tags/admin/infoBox.tagx
-
-
- infoBox
- /META-INF/tags/admin/infoBox.tagx
-
-
- identityStoreConfig
- /META-INF/tags/admin/security/identityStoreConfig.tagx
-
-
- trustStoreConfig
- /META-INF/tags/admin/security/trustStoreConfig.tagx
-
-
- replaceAll
- org.jivesoftware.admin.JSTLFunctions
- java.lang.String replaceAll(java.lang.String, java.lang.String, java.lang.String)
-
-
- split
- org.jivesoftware.admin.JSTLFunctions
- java.lang.String[] split(java.lang.String, java.lang.String)
-
-
- byteFormat
- org.jivesoftware.admin.JSTLFunctions
- java.lang.String byteFormat(long)
-
-
- urlEncode
- org.jivesoftware.admin.JSTLFunctions
- java.lang.String urlEncode(java.lang.String)
-
-
- urlDecode
- org.jivesoftware.admin.JSTLFunctions
- java.lang.String urlDecode(java.lang.String)
-
-
- escapeHTMLTags
- org.jivesoftware.admin.JSTLFunctions
- java.lang.String escapeHTMLTags(java.lang.String)
-
-
- serverIdentities
- org.jivesoftware.util.CertificateManager
- java.util.List getServerIdentities(java.security.cert.X509Certificate)
-
-
- clientIdentities
- org.jivesoftware.util.CertificateManager
- java.util.List getClientIdentities(java.security.cert.X509Certificate)
-
-
- getProperty
- org.jivesoftware.util.JiveGlobals
- java.lang.String getProperty(java.lang.String,java.lang.String)
-
-
- getIntProperty
- org.jivesoftware.util.JiveGlobals
- int getIntProperty(java.lang.String,int)
-
-
- getBooleanProperty
- org.jivesoftware.util.JiveGlobals
- boolean getBooleanProperty(java.lang.String,boolean)
-
-
- getLongProperty
- org.jivesoftware.util.JiveGlobals
- long getLongProperty(java.lang.String,long)
-
-
- getListProperty
- org.jivesoftware.util.JiveGlobals
- java.util.List getListProperty(java.lang.String,java.util.List)
-
-
- formatDate
- org.jivesoftware.util.JiveGlobals
- java.lang.String formatDate(java.util.Date)
-
-
- formatDateTime
- org.jivesoftware.util.JiveGlobals
- java.lang.String formatDateTime(java.util.Date)
-
-
- formatTime
- org.jivesoftware.util.JiveGlobals
- java.lang.String formatTime(java.util.Date)
-
-
- chopAtWord
- org.jivesoftware.util.StringUtils
- java.lang.String chopAtWord(java.lang.String,int)
-
-
- elapsedTime
- org.jivesoftware.util.StringUtils
- java.lang.String getElapsedTime(long)
-
-
- fullElapsedTime
- org.jivesoftware.util.StringUtils
- java.lang.String getFullElapsedTime(java.time.Duration)
-
-
-
diff --git a/xmppserver/src/main/webapp/META-INF/admin.tld b/xmppserver/src/main/webapp/WEB-INF/classes/META-INF/admin.tld
similarity index 99%
rename from xmppserver/src/main/webapp/META-INF/admin.tld
rename to xmppserver/src/main/webapp/WEB-INF/classes/META-INF/admin.tld
index fd9e585574..20d8a079b1 100644
--- a/xmppserver/src/main/webapp/META-INF/admin.tld
+++ b/xmppserver/src/main/webapp/WEB-INF/classes/META-INF/admin.tld
@@ -4,9 +4,8 @@
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1">
- 1.3
- Tag Library for Openfire
Tab Library for Openfire Admin Console
+ 1.4
admin
admin
diff --git a/xmppserver/src/main/resources/META-INF/tags/admin/contentBox.tagx b/xmppserver/src/main/webapp/WEB-INF/classes/META-INF/tags/admin/contentBox.tagx
similarity index 100%
rename from xmppserver/src/main/resources/META-INF/tags/admin/contentBox.tagx
rename to xmppserver/src/main/webapp/WEB-INF/classes/META-INF/tags/admin/contentBox.tagx
diff --git a/xmppserver/src/main/resources/META-INF/tags/admin/infoBox.tagx b/xmppserver/src/main/webapp/WEB-INF/classes/META-INF/tags/admin/infoBox.tagx
similarity index 100%
rename from xmppserver/src/main/resources/META-INF/tags/admin/infoBox.tagx
rename to xmppserver/src/main/webapp/WEB-INF/classes/META-INF/tags/admin/infoBox.tagx
diff --git a/xmppserver/src/main/webapp/META-INF/tags/admin/security/identityStoreConfig.tagx b/xmppserver/src/main/webapp/WEB-INF/classes/META-INF/tags/admin/security/identityStoreConfig.tagx
similarity index 100%
rename from xmppserver/src/main/webapp/META-INF/tags/admin/security/identityStoreConfig.tagx
rename to xmppserver/src/main/webapp/WEB-INF/classes/META-INF/tags/admin/security/identityStoreConfig.tagx
diff --git a/xmppserver/src/main/webapp/META-INF/tags/admin/security/trustStoreConfig.tagx b/xmppserver/src/main/webapp/WEB-INF/classes/META-INF/tags/admin/security/trustStoreConfig.tagx
similarity index 100%
rename from xmppserver/src/main/webapp/META-INF/tags/admin/security/trustStoreConfig.tagx
rename to xmppserver/src/main/webapp/WEB-INF/classes/META-INF/tags/admin/security/trustStoreConfig.tagx