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 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 @@ - - - - -
- - - - - - - -
- -
-
-
- -
- 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