Prefix function names with spring-

* Add `spring-` prefix to function names

Fixes: #9

This commit renames each sub-module in the common, consumer, function
and supplier groups with a prefix of `spring-`.

* Update README.adoc links to new prefixed names
This commit is contained in:
Chris Bono
2024-01-02 13:07:00 -06:00
committed by GitHub
parent b9a3e59074
commit 84e732da08
596 changed files with 146 additions and 147 deletions

View File

@@ -0,0 +1,8 @@
dependencies {
api 'org.junit.jupiter:junit-jupiter-api'
api 'org.testcontainers:junit-jupiter'
optionalApi ftpserverCore
optionalApi 'org.springframework.integration:spring-integration-sftp'
optionalApi 'org.springframework:spring-websocket'
}

View File

@@ -0,0 +1,154 @@
/*
* Copyright 2015-2016 the original author or authors.
*
* Licensed 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
*
* https://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.
*/
package org.springframework.cloud.fn.test.support.file.remote;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Path;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.io.TempDir;
/**
* Abstract base class for tests requiring remote file servers, e.g. (S)FTP.
*
* @author Gary Russell
*
*/
public abstract class RemoteFileTestSupport {
protected static final int port = 0;
@TempDir
protected static Path remoteTemporaryFolder;
@TempDir
protected static Path localTemporaryFolder;
protected volatile File sourceRemoteDirectory;
protected volatile File targetRemoteDirectory;
protected volatile File sourceLocalDirectory;
protected volatile File targetLocalDirectory;
public File getSourceRemoteDirectory() {
return sourceRemoteDirectory;
}
public File getTargetRemoteDirectory() {
return targetRemoteDirectory;
}
public File getSourceLocalDirectory() {
return sourceLocalDirectory;
}
public File getTargetLocalDirectory() {
return targetLocalDirectory;
}
/**
* Default implementation creates the following folder structures:
*
* <pre class="code">
* $ tree remoteSource/
* remoteSource/
* ├── remoteSource1.txt - contains 'source1'
* ├── remoteSource2.txt - contains 'source2'
* remoteTarget/
* $ tree localSource/
* localSource/
* ├── localSource1.txt - contains 'local1'
* ├── localSource2.txt - contains 'local2'
* localTarget/
* </pre>
*
* The intent is tests retrieve from remoteSource and verify arrival in localTarget or send from localSource and verify
* arrival in remoteTarget.
* <p>
* Subclasses can change 'remote' in these names by overriding {@link #prefix()} or override this method completely to
* create a different structure.
* <p>
* While a single server exists for all tests, the directory structure is rebuilt for each test.
* @throws IOException IO Exception.
*/
@BeforeEach
public void setupFolders() throws IOException {
String prefix = prefix();
recursiveDelete(new File(remoteTemporaryFolder.toFile(), prefix + "Source"));
sourceRemoteDirectory = new File(remoteTemporaryFolder.toFile(), prefix + "Source");
sourceRemoteDirectory.mkdirs();
recursiveDelete(new File(remoteTemporaryFolder.toFile(), prefix + "Target"));
targetRemoteDirectory = new File(remoteTemporaryFolder.toFile(), prefix + "Target");
targetRemoteDirectory.mkdirs();
recursiveDelete(new File(localTemporaryFolder.toFile(), "localSource"));
sourceLocalDirectory = new File(localTemporaryFolder.toFile(), "localSource");
sourceLocalDirectory.mkdirs();
recursiveDelete(new File(localTemporaryFolder.toFile(), "localTarget"));
targetLocalDirectory = new File(localTemporaryFolder.toFile(), "localTarget");
targetLocalDirectory.mkdirs();
File file = new File(sourceRemoteDirectory, prefix + "Source1.txt");
file.createNewFile();
FileOutputStream fos = new FileOutputStream(file);
fos.write("source1".getBytes());
fos.close();
file = new File(sourceRemoteDirectory, prefix + "Source2.txt");
file.createNewFile();
fos = new FileOutputStream(file);
fos.write("source2".getBytes());
fos.close();
file = new File(sourceLocalDirectory, "localSource1.txt");
file.createNewFile();
fos = new FileOutputStream(file);
fos.write("local1".getBytes());
fos.close();
file = new File(sourceLocalDirectory, "localSource2.txt");
file.createNewFile();
fos = new FileOutputStream(file);
fos.write("local2".getBytes());
fos.close();
}
public static void recursiveDelete(File file) {
if (file != null && file.exists()) {
File[] files = file.listFiles();
if (files != null) {
for (File fyle : files) {
if (fyle.isDirectory()) {
recursiveDelete(fyle);
}
else {
fyle.delete();
}
}
}
file.delete();
}
}
/**
* Prefix for directory/file structure; default 'remote'.
* @return the prefix.
*/
protected String prefix() {
return "remote";
}
}

View File

@@ -0,0 +1,129 @@
/*
* Copyright 2015-2020 the original author or authors.
*
* Licensed 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
*
* https://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.
*/
package org.springframework.cloud.fn.test.support.ftp;
import java.io.File;
import java.util.Arrays;
import org.apache.ftpserver.FtpServer;
import org.apache.ftpserver.FtpServerFactory;
import org.apache.ftpserver.ftplet.Authentication;
import org.apache.ftpserver.ftplet.AuthenticationFailedException;
import org.apache.ftpserver.ftplet.FtpException;
import org.apache.ftpserver.ftplet.User;
import org.apache.ftpserver.ftplet.UserManager;
import org.apache.ftpserver.listener.ListenerFactory;
import org.apache.ftpserver.usermanager.impl.BaseUser;
import org.apache.ftpserver.usermanager.impl.ConcurrentLoginPermission;
import org.apache.ftpserver.usermanager.impl.TransferRatePermission;
import org.apache.ftpserver.usermanager.impl.WritePermission;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.springframework.cloud.fn.test.support.file.remote.RemoteFileTestSupport;
public class FtpTestSupport extends RemoteFileTestSupport {
private static final FtpServerFactory serverFactory = new FtpServerFactory();
private static volatile FtpServer server;
public String getTargetLocalDirectoryName() {
return targetLocalDirectory.getAbsolutePath() + File.separator;
}
@BeforeAll
public static void createServer() throws Exception {
serverFactory.setUserManager(new TestUserManager(remoteTemporaryFolder.toFile().getAbsolutePath()));
ListenerFactory factory = new ListenerFactory();
factory.setPort(0);
serverFactory.addListener("default", factory.createListener());
server = serverFactory.createServer();
server.start();
System.setProperty("ftp.factory.port", String.valueOf(serverFactory.getListener("default").getPort()));
System.setProperty("ftp.localDir",
localTemporaryFolder.toFile().getAbsolutePath() + File.separator + "localTarget");
}
@AfterAll
public static void stopServer() throws Exception {
server.stop();
System.clearProperty("ftp.factory.port");
System.clearProperty("ftp.localDir");
}
@Override
protected String prefix() {
return "ftp";
}
private static final class TestUserManager implements UserManager {
private final BaseUser testUser;
private TestUserManager(String homeDirectory) {
this.testUser = new BaseUser();
this.testUser.setAuthorities(Arrays.asList(new ConcurrentLoginPermission(1024, 1024),
new WritePermission(),
new TransferRatePermission(1024, 1024)));
this.testUser.setHomeDirectory(homeDirectory);
this.testUser.setName("TEST_USER");
}
@Override
public User getUserByName(String s) throws FtpException {
return this.testUser;
}
@Override
public String[] getAllUserNames() throws FtpException {
return new String[] { "TEST_USER" };
}
@Override
public void delete(String s) throws FtpException {
}
@Override
public void save(User user) throws FtpException {
}
@Override
public boolean doesExist(String s) throws FtpException {
return true;
}
@Override
public User authenticate(Authentication authentication) throws AuthenticationFailedException {
return this.testUser;
}
@Override
public String getAdminName() throws FtpException {
return "admin";
}
@Override
public boolean isAdmin(String s) throws FtpException {
return s.equals("admin");
}
}
}

View File

@@ -0,0 +1,120 @@
/*
* Copyright 2015-2020 the original author or authors.
*
* Licensed 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
*
* https://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.
*/
package org.springframework.cloud.fn.test.support.sftp;
import java.io.File;
import java.io.InputStream;
import java.math.BigInteger;
import java.nio.ByteBuffer;
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.spec.RSAPublicKeySpec;
import java.util.Arrays;
import java.util.Collections;
import org.apache.sshd.common.file.virtualfs.VirtualFileSystemFactory;
import org.apache.sshd.server.SshServer;
import org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider;
import org.apache.sshd.sftp.server.SftpSubsystemFactory;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.springframework.cloud.fn.test.support.file.remote.RemoteFileTestSupport;
import org.springframework.core.io.ClassPathResource;
import org.springframework.util.Base64Utils;
import org.springframework.util.FileCopyUtils;
import org.springframework.util.StringUtils;
/**
* Provides an embedded SFTP Server for test cases.
*
* @author David Turanski
* @author Gary Russell
* @author Artem Bilan
*/
public class SftpTestSupport extends RemoteFileTestSupport {
private static SshServer server;
@Override
public String prefix() {
return "sftp";
}
@BeforeAll
public static void createServer() throws Exception {
server = SshServer.setUpDefaultServer();
server.setPasswordAuthenticator((username, password, session) ->
StringUtils.hasText(password) && !"badPassword".equals(password)); // fail if pub key validation failed
server.setPublickeyAuthenticator((username, key, session) -> key.equals(decodePublicKey("id_rsa_pp.pub")));
server.setPort(0);
server.setKeyPairProvider(new SimpleGeneratorHostKeyProvider(new File("hostkey.ser").toPath()));
server.setSubsystemFactories(Collections.singletonList(new SftpSubsystemFactory()));
server.setFileSystemFactory(new VirtualFileSystemFactory(remoteTemporaryFolder));
server.start();
System.setProperty("sftp.factory.port", String.valueOf(server.getPort()));
System.setProperty("sftp.consumer.localDir",
localTemporaryFolder + File.separator + "localTarget");
}
@AfterAll
public static void stopServer() throws Exception {
server.stop();
File hostkey = new File("hostkey.ser");
if (hostkey.exists()) {
hostkey.delete();
}
System.clearProperty("sftp.factory.port");
System.clearProperty("sftp.consumer.localDir");
}
private static PublicKey decodePublicKey(String key) {
try {
InputStream stream = new ClassPathResource(key).getInputStream();
byte[] keyBytes = FileCopyUtils.copyToByteArray(stream);
// strip any newline chars
while (keyBytes[keyBytes.length - 1] == 0x0a || keyBytes[keyBytes.length - 1] == 0x0d) {
keyBytes = Arrays.copyOf(keyBytes, keyBytes.length - 1);
}
byte[] decodeBuffer = Base64Utils.decode(keyBytes);
ByteBuffer bb = ByteBuffer.wrap(decodeBuffer);
int len = bb.getInt();
byte[] type = new byte[len];
bb.get(type);
if ("ssh-rsa".equals(new String(type))) {
BigInteger e = decodeBigInt(bb);
BigInteger m = decodeBigInt(bb);
RSAPublicKeySpec spec = new RSAPublicKeySpec(m, e);
return KeyFactory.getInstance("RSA").generatePublic(spec);
}
else {
throw new IllegalArgumentException("Only supports RSA");
}
}
catch (Exception e) {
throw new IllegalStateException("Failed to determine the test public key", e);
}
}
private static BigInteger decodeBigInt(ByteBuffer bb) {
int len = bb.getInt();
byte[] bytes = new byte[len];
bb.get(bytes);
return new BigInteger(bytes);
}
}

View File

@@ -0,0 +1,60 @@
/*
* Copyright 2014-2020 the original author or authors.
*
* Licensed 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
*
* https://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.
*/
package org.springframework.cloud.fn.test.support.websocket;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.AbstractWebSocketHandler;
public class WebsocketConsumerClientHandler extends AbstractWebSocketHandler {
final List<String> receivedMessages = new ArrayList<>();
final int waitMessageCount;
final CountDownLatch latch;
final long timeout;
final String id;
public WebsocketConsumerClientHandler(String id, int waitMessageCount, long timeout) {
this.id = id;
this.waitMessageCount = waitMessageCount;
this.latch = new CountDownLatch(waitMessageCount);
this.timeout = timeout;
}
@Override
public void handleTextMessage(WebSocketSession session, TextMessage message) {
receivedMessages.add(message.getPayload());
latch.countDown();
}
public void await() throws InterruptedException {
latch.await(timeout, TimeUnit.MILLISECONDS);
}
public List<String> getReceivedMessages() {
return receivedMessages;
}
}

View File

@@ -0,0 +1,80 @@
/*
* Copyright 2014-2022 the original author or authors.
*
* Licensed 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
*
* https://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.
*/
package org.springframework.cloud.fn.test.support.xmpp;
import java.time.Duration;
import org.junit.jupiter.api.BeforeAll;
import org.testcontainers.containers.BindMode;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.junit.jupiter.Testcontainers;
/**
* @author Chris Bono
*/
@Testcontainers(disabledWithoutDocker = true)
public interface XmppTestContainerSupport {
/**
* Default XMPP Host.
*/
String XMPP_HOST = "localhost";
/**
* Sample John User setup by config.
*/
String JOHN_USER = "john";
/**
* Sample Jane User setup by config.
*/
String JANE_USER = "jane";
/**
* Password for sample users.
*/
String USER_PW = "secret";
/**
* Default Service Name.
*/
String SERVICE_NAME = "localhost";
/**
* The container.
*/
GenericContainer<?> XMPP_CONTAINER = new GenericContainer<>("fishbowler/openfire:v4.7.0")
.withExposedPorts(5222)
.withClasspathResourceMapping("xmpp/conf", "/var/lib/openfire/conf", BindMode.READ_ONLY)
.withCommand("-demoboot")
.withStartupTimeout(Duration.ofSeconds(120))
.withStartupAttempts(3);
@BeforeAll
static void startContainer() {
XMPP_CONTAINER.start();
}
static String getXmppHost() {
return XMPP_HOST;
}
static Integer getXmppMappedPort() {
return XMPP_CONTAINER.getFirstMappedPort();
}
}

View File

@@ -0,0 +1,30 @@
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,26D1755B05980BA01B1E8D3B65EF98D3
J5fMQDf0HrwcnfYujq+q05GEOSEMVWMU0vr0hBtz2WvUeaFBBVAvUWbJo7PHTdDV
vEdSv+k8FazOkIZpeOW26pKNaLSuFfN+lgtAW4p4yqGQhbL8byh+Ka5uGaPH1xQj
o4exMFqbwFaHG10LJoPp5NnK+T64w8McJEihBPxv/qwtsz0YhhDVl/1eSwKsGa5y
Usfdv0QbjNDtpV7+sy7OunpaaKjb8iQ/PbFDsX0TSiy6jJflPwCYVUoh3jCEJze3
OUKwoQu7AiHmUrsnLtDuL49Q5hV+f9+IPJlzSqU5Fu8PlfCowH+e8WWLVQkh7Hht
iwOQs5UIWH+Nzbguu3Gbph5lqMtgkQwK6/PSFLQXuJmf9l6eo7E+Wh5mFWwoIENT
mKUlgVU0ymajPHcA7uOVXl5XX+Mt0DiMdGiB4N6RJ1OjWgqlRSJbVmGPrnZWmjdW
VltNux6JrO1bOgwtApCouDZhnP7/JDhM2PCa/F2+XCc6s8Hnmmt+gBw6IM4fb+YH
2gf1jx5Onp1yuBGe6tvbrfPAdXYU1R3kd2+Yf5mdsu2+xiC4wBKSfjleoHN4xJ/b
wopjQvGV5dj/VjdUt99lMHGWPr+p4NmdEBoriCgjYuRjRDvCiTV2qKZe2MU+0CVE
/jCA8iMRQnx3LMjnmJXP/96j2fyXHMowClTF43Cvdc5jh622WITOOFAIq9RfIXdS
47G6FAN54V+Qt0pXEgIOmvG+B2C24A041fo3jUPZxFRSYYuv9vG6QJby3kCsaqqt
ngYs2JSKx9CfOfGfyPbNt2/CO/bBsXgYzLR7REx5My1Mp9YsDmeIgbcd2V5hw/Me
rlSXrG4Eqs9gRDrBUvsydUOJFC1PlnIXH3VSBc6X9o4n2H6XECOsJQSeXLCaeMav
deKb0r1HvdbAYrdqw6mRM8Ok3fpSoD3mUsZQ8fp3luO3tHL1lddxHb7EsKzt/ubh
B9lEzDTcILlINlCl41X0OZKr/c+Ec8EdaSvITYJj0fvaZmDF7Wcs/dDWNft2XUaD
VcptOKbQVE1ufbrc2s1BdKOriAC6dSVKVDrAUQD/MlhT3p/YwbjSY2MqwRKztWRv
sA1Kqjg1IdUQzQizRKuHa322qnduLjHy0rb0ElrMpFe3B+OcIPs1E7Gvo4BVQ5jU
5GqHm83iaFIQaXmEsrVtCOBygVf00+WNRV3WFTOP9UEWFgtxsaHAU8UZhsDbKcZ5
l/w6kQdNElQuJA+1n1OxRZ5wIpfrRIMaxBQg2plUTVb9Tgz1qTZxHIEYPAAePfvX
tDn9SBiktj/8dhy1T0ko89yXCekpGxkU9rbmAd4Lrp6Wbc6+bKt4KzAqw319qq9U
Pslq7EKNM0Zq5pfwn1MRjzvmyHxz2sYHeij0CmuZY7xuOa4NzXt1vr6nSlIpX77W
ng/Rnd7qpyG2IWYihi6ztFHyj9h3FEcBHMk4JINLcdYOxXICz3KsRMfntrwQ4E6O
NFJ3fPpVNkk4GZcxy6idNkUBz1s8ixVWC8yi36byxE+TTRtcvqXQnJVgs63vMUlC
HVwaGau4YeUp4Nj2ZO44Srd/kQRy8yuCOPDdlJEiO6eDD4+XKedJQg1LuGeoXMVn
-----END RSA PRIVATE KEY-----

View File

@@ -0,0 +1 @@
AAAAB3NzaC1yc2EAAAADAQABAAABAQC6MIzgyVi8G1+HRhFHPWRH+3w/8/uxtiuIfb4puVPjHI53Lvf5odzfhv0T6Z2/jSXmI3I6dpjbsgiptdCTX4kqUFLXxkuJR4LHatNtgO1w32aVIdAvfj7KtrL3SmP2XWqQGVcUWHEn2H1RHFHKdC6ArYFb1X8p5N/BHSQjuttaeVi9FsDxvC5euIbtDEEJmmvjjfWlI1m/6qCqMYxDWA9i9APU/rB0QwFNUQ6HuZ2QzEaU/hQMGmqgW5o1I/W8JR0bqis8wZQDLv1fwCkXpWG5BAuiJH+FJMxRAkfEMBpVwO7Sl0ufePVuSM2BMAAe+4a75sVp8ahbOId6y0GUTeJl

View File

@@ -0,0 +1,12 @@
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<root level="WARN">
<appender-ref ref="STDOUT"/>
</root>
<logger name="org.testcontainers" level="ERROR"/>
<logger name="com.github.dockerjava" level="ERROR"/>
</configuration>

View File

@@ -0,0 +1,59 @@
<available>
<plugin name="Bookmarks" latest="1.1.1" changelog="https://igniterealtime.org/projects/openfire/plugins/1.1.1/bookmarks/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.1.1/bookmarks.jar" author="Ignite Realtime" description="Allows clients to store URL and group chat bookmarks (XEP-0048)" icon="https://igniterealtime.org/projects/openfire/plugins/1.1.1/bookmarks/logo_small.gif" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.1.1/bookmarks/readme.html" fileSize="1683910"/>
<plugin name="External Service Discovery" latest="1.0.1" changelog="https://igniterealtime.org/projects/openfire/plugins/1.0.1/externalservicediscovery/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.0.1/externalservicediscovery.jar" author="Guus der Kinderen" description="Allows XMPP entities to discover services external to the XMPP network, such as STUN and TURN servers." icon="https://igniterealtime.org/projects/openfire/plugins/1.0.1/externalservicediscovery/logo_small.png" minServerVersion="4.2.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.0.1/externalservicediscovery/readme.html" fileSize="95337"/>
<plugin name="MUC Service Discovery Extensions" latest="1.0.0" changelog="https://igniterealtime.org/projects/openfire/plugins/1.0.0/mucextinfo/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.0.0/mucextinfo.jar" author="Guus der Kinderen" description="Allows an admin to configure Extended Service Discovery information to Multi User Chat entities." minServerVersion="4.5.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.0.0/mucextinfo/readme.html" fileSize="52992"/>
<plugin name="SIP Phone Plugin" latest="1.2.6" changelog="https://igniterealtime.org/projects/openfire/plugins/1.2.6/sip/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.2.6/sip.jar" author="Ignite Realtime" description="Provides support for SIP account management" icon="https://igniterealtime.org/projects/openfire/plugins/1.2.6/sip/logo_small.gif" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.2.6/sip/readme.html" fileSize="1159930"/>
<plugin name="Fastpath Service" latest="4.4.5" changelog="https://igniterealtime.org/projects/openfire/plugins/4.4.5/fastpath/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/4.4.5/fastpath.jar" author="Jive Software" description="Support for managed queued chat requests, such as a support team might use." icon="https://igniterealtime.org/projects/openfire/plugins/4.4.5/fastpath/logo_small.gif" minServerVersion="4.1.1" readme="https://igniterealtime.org/projects/openfire/plugins/4.4.5/fastpath/readme.html" fileSize="1698700"/>
<plugin name="TikiToken" latest="0.2.0" changelog="https://igniterealtime.org/projects/openfire/plugins/0.2.0/tikitoken/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/0.2.0/tikitoken.jar" author="Tiki Wiki CMS Groupware" description="Allows users to authenticate with a Tiki token." icon="https://igniterealtime.org/projects/openfire/plugins/0.2.0/tikitoken/logo_small.png" minServerVersion="4.1.3" readme="https://igniterealtime.org/projects/openfire/plugins/0.2.0/tikitoken/readme.html" licenseType="gpl" fileSize="358495"/>
<plugin name="HTTP File Upload" latest="1.1.5" changelog="https://igniterealtime.org/projects/openfire/plugins/1.1.5/httpfileupload/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.1.5/httpfileupload.jar" author="Guus der Kinderen" description="Allows clients to share files, as described in the XEP-0363 'HTTP File Upload' specification." icon="https://igniterealtime.org/projects/openfire/plugins/1.1.5/httpfileupload/logo_small.png" minServerVersion="4.1.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.1.5/httpfileupload/readme.html" fileSize="6277079"/>
<plugin name="Hazelcast Plugin" latest="2.6.0" changelog="https://igniterealtime.org/projects/openfire/plugins/2.6.0/hazelcast/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/2.6.0/hazelcast.jar" author="Ignite Realtime" description="Adds clustering support" icon="https://igniterealtime.org/projects/openfire/plugins/2.6.0/hazelcast/logo_small.png" minServerVersion="4.7.0" readme="https://igniterealtime.org/projects/openfire/plugins/2.6.0/hazelcast/readme.html" fileSize="10346090"/>
<plugin name="Draw-IO" latest="0.0.1" changelog="https://igniterealtime.org/projects/openfire/plugins/0.0.1/draw/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/0.0.1/draw.jar" author="Ignite Realtime" description="Web Diagramming Tool that uses SVG and HTML for rendering" icon="https://igniterealtime.org/projects/openfire/plugins/0.0.1/draw/logo_small.gif" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/0.0.1/draw/readme.html" licenseType="Apache 2.0" fileSize="40136123"/>
<plugin name="IPFS" latest="0.0.1" changelog="https://igniterealtime.org/projects/openfire/plugins/0.0.1/ipfs/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/0.0.1/ipfs.jar" author="igniterealtime.org" description="Enables Openfire to become an IPFS node." icon="https://igniterealtime.org/projects/openfire/plugins/0.0.1/ipfs/logo_small.gif" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/0.0.1/ipfs/readme.html" licenseType="Apache 2.0" fileSize="31727587"/>
<plugin name="Registration" latest="1.7.3" changelog="https://igniterealtime.org/projects/openfire/plugins/1.7.3/registration/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.7.3/registration.jar" author="Ryan Graham" description="Performs various actions whenever a new user account is created." icon="https://igniterealtime.org/projects/openfire/plugins/1.7.3/registration/logo_small.gif" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.7.3/registration/readme.html" fileSize="60708"/>
<plugin name="Search" latest="1.7.3" changelog="https://igniterealtime.org/projects/openfire/plugins/1.7.3/search/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.7.3/search.jar" author="Ryan Graham" description="Provides support for Jabber Search (XEP-0055)" icon="https://igniterealtime.org/projects/openfire/plugins/1.7.3/search/logo_small.gif" minServerVersion="4.1.1" readme="https://igniterealtime.org/projects/openfire/plugins/1.7.3/search/readme.html" fileSize="71795"/>
<plugin name="Client Control" latest="2.1.8" changelog="https://igniterealtime.org/projects/openfire/plugins/2.1.8/clientControl/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/2.1.8/clientControl.jar" author="Jive Software" description="Controls clients allowed to connect and available features" icon="https://igniterealtime.org/projects/openfire/plugins/2.1.8/clientControl/logo_small.gif" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/2.1.8/clientControl/readme.html" fileSize="355175"/>
<plugin name="Candy" latest="0.0.0" changelog="https://igniterealtime.org/projects/openfire/plugins/2.2.0-release-3/candy/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/2.2.0-release-3/candy.jar" author="Guus der Kinderen" description="Adds the (third-party) Candy web client to Openfire." icon="https://igniterealtime.org/projects/openfire/plugins/2.2.0-release-3/candy/logo_small.png" minServerVersion="4.7.0" readme="https://igniterealtime.org/projects/openfire/plugins/2.2.0-release-3/candy/readme.html" fileSize="591517"/>
<plugin name="Presence Service" latest="1.7.1" changelog="https://igniterealtime.org/projects/openfire/plugins/1.7.1/presence/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.7.1/presence.jar" author="Jive Software" description="Exposes presence information through HTTP." icon="https://igniterealtime.org/projects/openfire/plugins/1.7.1/presence/logo_small.gif" minServerVersion="4.1.1" readme="https://igniterealtime.org/projects/openfire/plugins/1.7.1/presence/readme.html" fileSize="29451"/>
<plugin name="Subscription" latest="1.4.1" changelog="https://igniterealtime.org/projects/openfire/plugins/1.4.1/subscription/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.4.1/subscription.jar" author="Ryan Graham" description="Automatically accepts or rejects subscription requests" icon="https://igniterealtime.org/projects/openfire/plugins/1.4.1/subscription/logo_small.gif" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.4.1/subscription/readme.html" fileSize="20989"/>
<plugin name="inVerse" latest="9.1.1 Release 1" changelog="https://igniterealtime.org/projects/openfire/plugins/9.1.1.1/inverse/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/9.1.1.1/inverse.jar" author="Guus der Kinderen" description="Adds the (third-party, Converse-based) inVerse web client to Openfire." icon="https://igniterealtime.org/projects/openfire/plugins/9.1.1.1/inverse/logo_small.png" minServerVersion="4.1.5" readme="https://igniterealtime.org/projects/openfire/plugins/9.1.1.1/inverse/readme.html" fileSize="6031840"/>
<plugin name="Push Notification" latest="0.9.1" changelog="https://igniterealtime.org/projects/openfire/plugins/0.9.1/pushnotification/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/0.9.1/pushnotification.jar" author="Guus der Kinderen" description="Adds Push Notification (XEP-0357) support to Openfire." icon="https://igniterealtime.org/projects/openfire/plugins/0.9.1/pushnotification/logo_small.png" minServerVersion="4.6.4" readme="https://igniterealtime.org/projects/openfire/plugins/0.9.1/pushnotification/readme.html" fileSize="25753"/>
<plugin name="Email on Away" latest="1.0.3" changelog="https://igniterealtime.org/projects/openfire/plugins/1.0.3/emailOnAway/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.0.3/emailOnAway.jar" author="Nick Mossie" description="Messages sent to alternate location when recipient is away" minServerVersion="2.3.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.0.3/emailOnAway/readme.html" fileSize="5923"/>
<plugin name="Certificate Manager" latest="1.1.0" changelog="https://igniterealtime.org/projects/openfire/plugins/1.1.0/certificatemanager/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.1.0/certificatemanager.jar" author="Guus der Kinderen" description="Adds certificate management features." icon="https://igniterealtime.org/projects/openfire/plugins/1.1.0/certificatemanager/logo_small.png" minServerVersion="4.3.0 Alpha" readme="https://igniterealtime.org/projects/openfire/plugins/1.1.0/certificatemanager/readme.html" fileSize="47750"/>
<plugin name="Random Avatar Generator Plugin" latest="1.0.0" changelog="https://igniterealtime.org/projects/openfire/plugins/1.0.0/randomavatar/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.0.0/randomavatar.jar" author="Guus der Kinderen" description="Generates semi-random avatar images." icon="https://igniterealtime.org/projects/openfire/plugins/1.0.0/randomavatar/logo_small.gif" minServerVersion="4.1.5" readme="https://igniterealtime.org/projects/openfire/plugins/1.0.0/randomavatar/readme.html" fileSize="423022"/>
<plugin name="JmxWeb Plugin" latest="0.9.0" changelog="https://igniterealtime.org/projects/openfire/plugins/0.9.0/jmxweb/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/0.9.0/jmxweb.jar" author="igniterealtime.org" description="JmxWeb plugin is web based platform for managing and monitoring openfire via JMX." minServerVersion="4.3.0" readme="https://igniterealtime.org/projects/openfire/plugins/0.9.0/jmxweb/readme.html" licenseType="Apache 2.0" fileSize="20177522"/>
<plugin name="MUC Service" latest="0.2.3" changelog="https://igniterealtime.org/projects/openfire/plugins/0.2.3/mucservice/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/0.2.3/mucservice.jar" author="Roman Soldatow" description="MUC administration over REST Interface" icon="https://igniterealtime.org/projects/openfire/plugins/0.2.3/mucservice/logo_small.gif" minServerVersion="3.9.1" readme="https://igniterealtime.org/projects/openfire/plugins/0.2.3/mucservice/readme.html" fileSize="2568312"/>
<plugin name="User Status Plugin" latest="1.2.2" changelog="https://igniterealtime.org/projects/openfire/plugins/1.2.2/userstatus/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.2.2/userstatus.jar" author="Stefan Reuter" description="Openfire plugin to save the user status to the database." icon="https://igniterealtime.org/projects/openfire/plugins/1.2.2/userstatus/logo_small.gif" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.2.2/userstatus/readme.html" licenseType="gpl" fileSize="28372"/>
<plugin name="GoJara" latest="2.2.3" changelog="https://igniterealtime.org/projects/openfire/plugins/2.2.3/gojara/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/2.2.3/gojara.jar" author="Holger Bergunde / Daniel Henninger / Axel-F. Brand" description="XEP-0321: Remote Roster Management support" icon="https://igniterealtime.org/projects/openfire/plugins/2.2.3/gojara/logo_small.png" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/2.2.3/gojara/readme.html" fileSize="345882"/>
<plugin name="Spam blacklist" latest="1.0.0" changelog="https://igniterealtime.org/projects/openfire/plugins/1.0.0/blacklistspam/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.0.0/blacklistspam.jar" author="Ignite Realtime" description="Uses an external blacklist to reject traffic from specific addresses." icon="https://igniterealtime.org/projects/openfire/plugins/1.0.0/blacklistspam/logo_small.png" readme="https://igniterealtime.org/projects/openfire/plugins/1.0.0/blacklistspam/readme.html" fileSize="15946"/>
<plugin name="User Service" latest="2.1.2" changelog="https://igniterealtime.org/projects/openfire/plugins/2.1.2/userservice/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/2.1.2/userservice.jar" author="Roman Soldatow, Justin Hunt" description="(Deprecated) Please use the REST API Plugin. Allows administration of users via HTTP requests." icon="https://igniterealtime.org/projects/openfire/plugins/2.1.2/userservice/logo_small.gif" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/2.1.2/userservice/readme.html" fileSize="2414018"/>
<plugin name="Packet Filter" latest="3.3.1" changelog="https://igniterealtime.org/projects/openfire/plugins/3.3.1/packetFilter/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/3.3.1/packetFilter.jar" author="Nate Putnam" description="Rules to enforce ethical communication" icon="https://igniterealtime.org/projects/openfire/plugins/3.3.1/packetFilter/logo_small.gif" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/3.3.1/packetFilter/readme.html" fileSize="106311"/>
<plugin name="User Creation" latest="1.4.0" changelog="https://igniterealtime.org/projects/openfire/plugins/1.4.0/userCreation/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.4.0/userCreation.jar" author="Jive Software" description="Creates users and populates rosters." minServerVersion="4.3.0" fileSize="1643940"/>
<plugin name="Openfire WebSocket" latest="1.2.1" changelog="https://igniterealtime.org/projects/openfire/plugins/1.2.1/websocket/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.2.1/websocket.jar" author="Tom Evans" description="Provides WebSocket support for Openfire." icon="https://igniterealtime.org/projects/openfire/plugins/1.2.1/websocket/logo_small.gif" minServerVersion="4.1.5" readme="https://igniterealtime.org/projects/openfire/plugins/1.2.1/websocket/readme.html" fileSize="122092"/>
<plugin name="Email Listener" latest="1.2.1" changelog="https://igniterealtime.org/projects/openfire/plugins/1.2.1/emailListener/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.2.1/emailListener.jar" author="Jive Software" description="Listens for emails and sends alerts to specific users." icon="https://igniterealtime.org/projects/openfire/plugins/1.2.1/emailListener/logo_small.gif" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.2.1/emailListener/readme.html" fileSize="21292"/>
<plugin name="PionTurn" latest="0.0.4" changelog="https://igniterealtime.org/projects/openfire/plugins/0.0.4/pionturn/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/0.0.4/pionturn.jar" author="Ignite Realtime" description="Provides a TURN/STUN Server for Openfire" icon="https://igniterealtime.org/projects/openfire/plugins/0.0.4/pionturn/logo_small.gif" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/0.0.4/pionturn/readme.html" licenseType="Apache 2.0" fileSize="5914466"/>
<plugin name="Thread Dump" latest="1.1.0" changelog="https://igniterealtime.org/projects/openfire/plugins/1.1.0/threaddump/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.1.0/threaddump.jar" author="Ignite Realtime" description="A plugin that can be used to generate diagnostics." icon="https://igniterealtime.org/projects/openfire/plugins/1.1.0/threaddump/logo_small.png" readme="https://igniterealtime.org/projects/openfire/plugins/1.1.0/threaddump/readme.html" fileSize="53219"/>
<plugin name="Avatar Resizer" latest="1.0.1" changelog="https://igniterealtime.org/projects/openfire/plugins/1.0.1/avatarResizer/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.0.1/avatarResizer.jar" author="Guus der Kinderen" description="Ensures vCard-based avatars are not to large for comfort." icon="https://igniterealtime.org/projects/openfire/plugins/1.0.1/avatarResizer/logo_small.gif" readme="https://igniterealtime.org/projects/openfire/plugins/1.0.1/avatarResizer/readme.html" fileSize="10624"/>
<plugin name="Load Statistic" latest="1.2.1" changelog="https://igniterealtime.org/projects/openfire/plugins/1.2.1/loadStats/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.2.1/loadStats.jar" author="Jive Software" description="Logs load statistics to a file" icon="https://igniterealtime.org/projects/openfire/plugins/1.2.1/loadStats/logo_small.gif" minServerVersion="3.9.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.2.1/loadStats/readme.html" fileSize="11888"/>
<plugin name="STUN server plugin" latest="1.2.3" changelog="https://igniterealtime.org/projects/openfire/plugins/1.2.3/stunserver/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.2.3/stunserver.jar" author="Ignite Realtime" description="Adds STUN functionality to Openfire" icon="https://igniterealtime.org/projects/openfire/plugins/1.2.3/stunserver/logo_small.gif" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.2.3/stunserver/readme.html" fileSize="125304"/>
<plugin name="JID Validation" latest="0.0.0" url="https://igniterealtime.org/projects/openfire/plugins/1.0/jidvalidation.jar" author="Manasse Ngudia" description="Provides support for JID Validation Service" minServerVersion="4.4.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.0/jidvalidation/readme.html" licenseType="gpl" fileSize="9947"/>
<plugin name="Content Filter" latest="1.8.1" changelog="https://igniterealtime.org/projects/openfire/plugins/1.8.1/contentFilter/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.8.1/contentFilter.jar" author="Conor Hayes" description="Scans message packets for defined patterns" icon="https://igniterealtime.org/projects/openfire/plugins/1.8.1/contentFilter/logo_small.gif" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.8.1/contentFilter/readme.html" fileSize="73660"/>
<plugin name="REST API" latest="1.10.0" changelog="https://igniterealtime.org/projects/openfire/plugins/1.10.0/restAPI/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.10.0/restAPI.jar" author="Roman Soldatow" description="Allows administration over a RESTful API." icon="https://igniterealtime.org/projects/openfire/plugins/1.10.0/restAPI/logo_small.gif" minServerVersion="4.7.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.10.0/restAPI/readme.html" fileSize="15341133"/>
<plugin name="Broadcast" latest="1.9.2" changelog="https://igniterealtime.org/projects/openfire/plugins/1.9.2/broadcast/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.9.2/broadcast.jar" author="Ignite Realtime" description="The broadcast plugin broadcasts messages to all users in the system or to specific groups" icon="https://igniterealtime.org/projects/openfire/plugins/1.9.2/broadcast/logo_small.gif" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.9.2/broadcast/readme.html" fileSize="15163"/>
<plugin name="JSXC" latest="4.4.0 Release 1" changelog="https://igniterealtime.org/projects/openfire/plugins/4.4.0.1/jsxc/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/4.4.0.1/jsxc.jar" author="Guus der Kinderen" description="Adds the (third-party) JSXC web client to Openfire." icon="https://igniterealtime.org/projects/openfire/plugins/4.4.0.1/jsxc/logo_small.png" minServerVersion="4.4.0" readme="https://igniterealtime.org/projects/openfire/plugins/4.4.0.1/jsxc/readme.html" fileSize="2597663"/>
<plugin name="Non-SASL Authentication" latest="1.0.0" changelog="https://igniterealtime.org/projects/openfire/plugins/1.0.0/nonSaslAuthentication/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.0.0/nonSaslAuthentication.jar" author="Guus der Kinderen" description="This plugin implements a the (obsolete!) XEP-0078 specification for authentication using the jabber:iq:auth namespace." minServerVersion="4.1.0 Alpha" readme="https://igniterealtime.org/projects/openfire/plugins/1.0.0/nonSaslAuthentication/readme.html" fileSize="10803"/>
<plugin name="MotD (Message of the Day)" latest="1.2.3" changelog="https://igniterealtime.org/projects/openfire/plugins/1.2.3/motd/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.2.3/motd.jar" author="Ryan Graham" description="Allows admins to have a message sent to users each time they log in." icon="https://igniterealtime.org/projects/openfire/plugins/1.2.3/motd/logo_small.gif" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.2.3/motd/readme.html" fileSize="31649"/>
<plugin name="CallbackOnOffline" latest="1.2.1" changelog="https://igniterealtime.org/projects/openfire/plugins/1.2.1/callbackOnOffline/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.2.1/callbackOnOffline.jar" author="Pavel Goski / Krzysztof Misztal" description="Url is called when recipient is offline" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.2.1/callbackOnOffline/readme.html" fileSize="4322732"/>
<plugin name="Rdp" latest="0.0.1" changelog="https://igniterealtime.org/projects/openfire/plugins/0.0.1/rdp/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/0.0.1/rdp.jar" author="igniterealtime.org" description="RDP Gateway for Remote Desktop Control Changelog" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/0.0.1/rdp/readme.html" licenseType="Apache 2.0" fileSize="27297204"/>
<plugin name="XML Debugger Plugin" latest="1.7.5" changelog="https://igniterealtime.org/projects/openfire/plugins/1.7.5/xmldebugger/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.7.5/xmldebugger.jar" author="Ignite Realtime" description="Prints XML traffic to the stdout (raw and interpreted XML)" minServerVersion="4.5.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.7.5/xmldebugger/readme.html" fileSize="25828"/>
<plugin name="Push Server" latest="1.0.0" changelog="https://igniterealtime.org/projects/openfire/plugins/1.0.0/pushserver/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.0.0/pushserver.jar" author="Busoft Teknoloji A.Ş." description="Send push notifications to mobile devices through FCM or APNS" icon="https://igniterealtime.org/projects/openfire/plugins/1.0.0/pushserver/logo_small.png" minServerVersion="4.3.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.0.0/pushserver/readme.html" fileSize="10321722"/>
<plugin name="DB Access" latest="1.2.3" changelog="https://igniterealtime.org/projects/openfire/plugins/1.2.3/dbaccess/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.2.3/dbaccess.jar" author="Daniel Henninger" description="Provides administrators with a simple direct access interface to their Openfire DB." icon="https://igniterealtime.org/projects/openfire/plugins/1.2.3/dbaccess/logo_small.gif" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.2.3/dbaccess/readme.html" fileSize="11766"/>
<plugin name="User Import Export" latest="2.7.0" changelog="https://igniterealtime.org/projects/openfire/plugins/2.7.0/userImportExport/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/2.7.0/userImportExport.jar" author="Ryan Graham" description="Enables import and export of user data" icon="https://igniterealtime.org/projects/openfire/plugins/2.7.0/userImportExport/logo_small.gif" minServerVersion="4.3.0" readme="https://igniterealtime.org/projects/openfire/plugins/2.7.0/userImportExport/readme.html" fileSize="842649"/>
<plugin name="RawPropertyEditor" latest="1.0.2" changelog="https://igniterealtime.org/projects/openfire/plugins/1.0.2/rawpropertyeditor/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.0.2/rawpropertyeditor.jar" author="Liam Gregory" description="RawPropertyEditor Plugin" icon="https://igniterealtime.org/projects/openfire/plugins/1.0.2/rawpropertyeditor/logo_small.gif" minServerVersion="4.7.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.0.2/rawpropertyeditor/readme.html" fileSize="1763765"/>
<plugin name="Just married" latest="1.2.4" changelog="https://igniterealtime.org/projects/openfire/plugins/1.2.4/justmarried/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.2.4/justmarried.jar" author="Holger Bergunde" description="Allows admins to rename or copy users" icon="https://igniterealtime.org/projects/openfire/plugins/1.2.4/justmarried/logo_small.png" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.2.4/justmarried/readme.html" fileSize="39579"/>
<plugin name="NodeJs" latest="0.1.1" changelog="https://igniterealtime.org/projects/openfire/plugins/0.1.1/nodejs/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/0.1.1/nodejs.jar" author="igniterealtime.org" description="Integrates NodeJs Applications with Openfire." icon="https://igniterealtime.org/projects/openfire/plugins/0.1.1/nodejs/logo_small.gif" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/0.1.1/nodejs/readme.html" licenseType="Apache 2.0" fileSize="20432"/>
<plugin name="Pade" latest="1.7.2" changelog="https://igniterealtime.org/projects/openfire/plugins/1.7.2/pade/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/1.7.2/pade.jar" author="Ignite Realtime" description="Web-based chat, groupchat, telephones, audio and video conferencing solution using ConverseJS, Jitsi and FreeSWITCH" icon="https://igniterealtime.org/projects/openfire/plugins/1.7.2/pade/logo_small.gif" minServerVersion="4.7.0" readme="https://igniterealtime.org/projects/openfire/plugins/1.7.2/pade/readme.html" fileSize="245590151"/>
<plugin name="Ohun" latest="0.0.2" changelog="https://igniterealtime.org/projects/openfire/plugins/0.0.2/ohun/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/0.0.2/ohun.jar" author="Ignite Realtime" description="Simple group audio conferencing plugin for Openfire" icon="https://igniterealtime.org/projects/openfire/plugins/0.0.2/ohun/logo_small.gif" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/0.0.2/ohun/readme.html" licenseType="Apache 2.0" fileSize="23580824"/>
<plugin name="Monitoring Service" latest="2.3.1" changelog="https://igniterealtime.org/projects/openfire/plugins/2.3.1/monitoring/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/2.3.1/monitoring.jar" author="Ignite Realtime" description="Monitors conversations and statistics of the server." icon="https://igniterealtime.org/projects/openfire/plugins/2.3.1/monitoring/logo_small.gif" minServerVersion="4.7.0" readme="https://igniterealtime.org/projects/openfire/plugins/2.3.1/monitoring/readme.html" fileSize="29748287"/>
<plugin name="Jingle Nodes Plugin" latest="0.2.1" changelog="https://igniterealtime.org/projects/openfire/plugins/0.2.1/jingleNodes/changelog.html" url="https://igniterealtime.org/projects/openfire/plugins/0.2.1/jingleNodes.jar" author="Jingle Nodes (Rodrigo Martins)" description="Provides support for Jingle Nodes" icon="https://igniterealtime.org/projects/openfire/plugins/0.2.1/jingleNodes/logo_small.gif" minServerVersion="4.0.0" readme="https://igniterealtime.org/projects/openfire/plugins/0.2.1/jingleNodes/readme.html" fileSize="1039232"/>
</available>

View File

@@ -0,0 +1,42 @@
#
# This file defines the configuration properties required
# when using the Atlassian Crowd integration for Openfire.
#
# https://confluence.atlassian.com/display/CROWD/The+crowd.properties+file
#
# To activate the Crowd integration for Openfire, you must define
# the following Openfire system properties:
#
# provider.admin.className org.jivesoftware.openfire.crowd.CrowdAdminProvider
# provider.auth.className org.jivesoftware.openfire.crowd.CrowdAuthProvider
# provider.group.className org.jivesoftware.openfire.crowd.CrowdGroupProvider
# provider.user.className org.jivesoftware.openfire.crowd.CrowdUserProvider
# provider.vcard.className org.jivesoftware.openfire.crowd.CrowdVCardProvider
#
# In addition, you may customize the Crowd provider using the following Openfire
# system properties:
#
# admin.authorizedGroups <comma-separated list of Crowd groups having Openfire admin rights>
# crowd.groups.cache.ttl.seconds 3600
# crowd.users.cache.ttl.seconds 3600
#
# The REST URL for your Crowd server.
crowd.server.url=https://YOUR-CROWD-SERVER:8095/crowd/
# These properties are required to authenticate with the Crowd server.
# They must match the values specified in the Crowd configuration.
application.name=openfire
application.password=<password>
# Other optional configuration properties.
#http.proxy.host=
#http.proxy.port=
#http.proxy.username=
#http.proxy.password=
# These properties can be used to tune the Crowd integration.
#http.max.connections=20
#http.timeout=5000
#http.socket.timeout=20000

View File

@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<jive>
<adminConsole>
<port>9090</port>
<securePort>9091</securePort>
</adminConsole>
<connectionProvider>
<className>org.jivesoftware.database.EmbeddedConnectionProvider</className>
</connectionProvider>
<autosetup>
<run>true</run>
<locale>en</locale>
<xmpp>
<auth>
<anonymous>true</anonymous>
</auth>
<domain>localhost</domain>
<fqdn>localhost</fqdn>
</xmpp>
<database>
<mode>embedded</mode>
</database>
<admin>
<email>admin@example.com</email>
<password>admin</password>
</admin>
<users>
<user1>
<username>john</username>
<password>secret</password>
<name>John Doe</name>
<email>john.doe@example.com</email>
<roster>
<item1>
<jid>jane@localhost</jid>
<nickname>Jane</nickname>
</item1>
</roster>
</user1>
<user2>
<username>jane</username>
<password>secret</password>
<name>Jane Doe</name>
<email>jane.doe@example.com</email>
<roster>
<item1>
<jid>john@localhost</jid>
<nickname>John</nickname>
</item1>
</roster>
</user2>
</users>
</autosetup>
</jive>

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<jive>
<adminConsole>
<port>9090</port>
<securePort>9091</securePort>
</adminConsole>
<connectionProvider>
<className>org.jivesoftware.database.DefaultConnectionProvider</className>
</connectionProvider>
<setup>true</setup>
<locale>en</locale>
<fqdn>localhost</fqdn>
</jive>

View File

@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
This file stores security-related properties needed by Openfire.
You may edit this file to manage encrypted properties and
encryption configuration value. Note however that you should not
edit this file while Openfire is running, or it may be overwritten.
It is important to note that Openfire will store encrypted property
values securely "at rest" (e.g. in the database or XML), but the
values will be managed as clear text strings in memory at runtime for
interoperability and performance reasons. Encrypted property values
are not visible via the Openfire console, but they may be edited or
deleted as needed.
-->
<security>
<encrypt>
<!-- This can be set to "AES" or "Blowfish" (default) at setup time -->
<algorithm>Blowfish</algorithm>
<key>
<!--
If this is a new server setup, you may set a custom encryption key
by setting a value for the <new /> encryption key element only.
To change the encryption key, provide values for both new and old
encryption keys here. The "old" key must match the unencrypted value
of the "current" key. The server will update the existing property
values in the database, re-encrypting them using the new key. After
the encrypted properties have been updated, the new key will itself
be encrypted and re-written into this file as <current />.
Note that if the current encryption key becomes invalid, any property
values secured by the original key will be inaccessible as well.
The key value can be any string, and it will be hashed, filled, and/or
truncated to produce a compatible key for the corresponding algorithm.
Note that leading and trailing spaces will be ignored. A strong key
will contain sixteen characters or more.
<old></old>
<new></new>
-->
<current></current>
</key>
<property>
<!--
This list includes the names of properties that have been marked for
encryption. Any XML properties (from openfire.xml) that are listed here
will be encrypted automatically upon first use. Other properties
(already in the database) can be added to this list at runtime via the
"System Properties" page in the Openfire console.
-->
<name>database.defaultProvider.username</name>
<name>database.defaultProvider.password</name>
</property>
</encrypt>
<!--
Any other property defined in this file will be treated as an encrypted
property. The value (in clear text) will be encrypted and migrated into
the Openfire database during the next startup. The property name will
be added to the list of encrypted properties and the clear text value
will be removed from this file.
<foo><bar>Secr3t$tr1ng!</bar></foo>
-->
</security>

View File

@@ -0,0 +1 @@
This directory is used as a default location in which Openfire stores backups of keystore files.

View File

@@ -0,0 +1,4 @@
<version>
<openfire latest="4.7.3" changelog="https://igniterealtime.org/builds/openfire/docs/latest/changelog.html" url="https://igniterealtime.org/downloads/"/>
</version>