Add XMPP consumer function
This commit is contained in:
@@ -1 +1 @@
|
||||
-DaltSnapshotDeploymentRepository=repo.spring.io::default::https://repo.spring.io/libs-snapshot-local -P spring
|
||||
-DaltSnapshotDeploymentRepository=repo.spring.io::default::https://repo.spring.io/libs-snapshot-local
|
||||
|
||||
@@ -36,7 +36,7 @@ The following are the various components of this repository.
|
||||
|link:functions/supplier/ftp-supplier/README.adoc[FTP]
|
||||
|link:functions/function/header-enricher-function/README.adoc[Header-Enricher]
|
||||
|link:functions/consumer/elasticsearch-consumer/README.adoc[Elasticsearch]
|
||||
|link:functions/supplier/geode-supplier/README.adoc[Geode]
|
||||
// |link:functions/supplier/geode-supplier/README.adoc[Geode]
|
||||
|link:functions/function/http-request-function/README.adoc[HTTP Request]
|
||||
|link:functions/consumer/file-consumer/README.adoc[File]
|
||||
|link:functions/supplier/http-supplier/README.adoc[HTTP]
|
||||
@@ -44,7 +44,7 @@ The following are the various components of this repository.
|
||||
|link:functions/consumer/ftp-consumer/README.adoc[FTP]
|
||||
|link:functions/supplier/jdbc-supplier/README.adoc[JDBC]
|
||||
|link:functions/function/object-detection-function/README.adoc[Object Detection(Tensorflow)]
|
||||
|link:functions/consumer/geode-consumer/README.adoc[Geode]
|
||||
// |link:functions/consumer/geode-consumer/README.adoc[Geode]
|
||||
|link:functions/supplier/jms-supplier/README.adoc[JMS]
|
||||
|link:functions/function/semantic-segmentation-function/README.adoc[Semantic Segmentation(Tensorflow)]
|
||||
|link:functions/consumer/jdbc-consumer/README.adoc[JDBC]
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
<module>tensorflow-common</module>
|
||||
<module>cdc-debezium-common</module>
|
||||
<module>cdc-debezium-boot-starter</module>
|
||||
<module>xmpp-common</module>
|
||||
</modules>
|
||||
<build>
|
||||
<plugins>
|
||||
|
||||
24
functions/common/xmpp-common/pom.xml
Normal file
24
functions/common/xmpp-common/pom.xml
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>org.springframework.cloud.fn</groupId>
|
||||
<artifactId>spring-functions-parent</artifactId>
|
||||
<version>4.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../spring-functions-parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<artifactId>xmpp-common</artifactId>
|
||||
<name>xmpp-common</name>
|
||||
<description>XMPP common</description>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.integration</groupId>
|
||||
<artifactId>spring-integration-xmpp</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* 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.common.xmpp;
|
||||
|
||||
import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;
|
||||
import org.jxmpp.stringprep.XmppStringprepException;
|
||||
import org.jxmpp.util.XmppStringUtils;
|
||||
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.integration.xmpp.config.XmppConnectionFactoryBean;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
@Configuration
|
||||
@EnableConfigurationProperties(XmppConnectionFactoryProperties.class)
|
||||
public class XmppConnectionFactoryConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public XmppConnectionFactoryBean xmppConnectionFactoryBean(XmppConnectionFactoryProperties properties) throws XmppStringprepException {
|
||||
|
||||
XmppConnectionFactoryBean xmppConnectionFactoryBean = new XmppConnectionFactoryBean();
|
||||
xmppConnectionFactoryBean.setSubscriptionMode(properties.getSubscriptionMode());
|
||||
|
||||
XMPPTCPConnectionConfiguration.Builder builder = XMPPTCPConnectionConfiguration.builder();
|
||||
builder.setSecurityMode(properties.getSecurityMode());
|
||||
builder.setHost(properties.getHost());
|
||||
builder.setPort(properties.getPort());
|
||||
if (StringUtils.hasText(properties.getResource())) {
|
||||
builder.setResource(properties.getResource());
|
||||
}
|
||||
|
||||
if (StringUtils.hasText(properties.getServiceName())) {
|
||||
builder.setUsernameAndPassword(properties.getUser(), properties.getPassword())
|
||||
.setXmppDomain(properties.getServiceName());
|
||||
}
|
||||
else {
|
||||
builder.setUsernameAndPassword(XmppStringUtils.parseLocalpart(properties.getUser()), properties.getPassword())
|
||||
.setXmppDomain(properties.getUser());
|
||||
}
|
||||
|
||||
xmppConnectionFactoryBean.setConnectionConfiguration(builder.build());
|
||||
|
||||
return xmppConnectionFactoryBean;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,138 @@
|
||||
/*
|
||||
* 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.common.xmpp;
|
||||
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import org.jivesoftware.smack.ConnectionConfiguration;
|
||||
import org.jivesoftware.smack.roster.Roster;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Daniel Frey
|
||||
* @since 4.0.0
|
||||
*/
|
||||
@ConfigurationProperties("xmpp.factory")
|
||||
@Validated
|
||||
public class XmppConnectionFactoryProperties {
|
||||
|
||||
/**
|
||||
* The Resource to bind to on the XMPP Host.
|
||||
* - Can be empty, server will generate one if not set
|
||||
*/
|
||||
private String resource;
|
||||
|
||||
/**
|
||||
* The User the connection should connect as.
|
||||
*/
|
||||
private String user;
|
||||
|
||||
/**
|
||||
* The Password for the connected user.
|
||||
*/
|
||||
private String password;
|
||||
|
||||
/**
|
||||
* The Service Name to set for the XMPP Domain.
|
||||
*/
|
||||
private String serviceName;
|
||||
|
||||
/**
|
||||
* XMPP Host server to connect to.
|
||||
*/
|
||||
private String host;
|
||||
|
||||
/**
|
||||
* Port for connecting to the host.
|
||||
* - Default Client Port: 5222
|
||||
*/
|
||||
private int port = 5222;
|
||||
|
||||
private Roster.SubscriptionMode subscriptionMode = Roster.getDefaultSubscriptionMode();
|
||||
|
||||
private ConnectionConfiguration.SecurityMode securityMode = ConnectionConfiguration.SecurityMode.required;
|
||||
|
||||
public void setResource(String resource) {
|
||||
this.resource = resource;
|
||||
}
|
||||
|
||||
public String getResource() {
|
||||
return resource;
|
||||
}
|
||||
|
||||
public void setUser(String user) {
|
||||
this.user = user;
|
||||
}
|
||||
|
||||
@NotEmpty(message = "user is required")
|
||||
public String getUser() {
|
||||
return user;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
@NotEmpty(message = "port is required")
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setServiceName(String serviceName) {
|
||||
this.serviceName = serviceName;
|
||||
}
|
||||
|
||||
public String getServiceName() {
|
||||
return serviceName;
|
||||
}
|
||||
|
||||
public void setHost(String host) {
|
||||
this.host = host;
|
||||
}
|
||||
|
||||
@NotEmpty(message = "host is required")
|
||||
public String getHost() {
|
||||
return host;
|
||||
}
|
||||
|
||||
public void setPort(int port) {
|
||||
this.port = port;
|
||||
}
|
||||
|
||||
public int getPort() {
|
||||
return port;
|
||||
}
|
||||
|
||||
public void setSubscriptionMode(Roster.SubscriptionMode subscriptionMode) {
|
||||
this.subscriptionMode = subscriptionMode;
|
||||
}
|
||||
|
||||
public Roster.SubscriptionMode getSubscriptionMode() {
|
||||
return subscriptionMode;
|
||||
}
|
||||
|
||||
public void setSecurityMode(ConnectionConfiguration.SecurityMode securityMode) {
|
||||
this.securityMode = securityMode;
|
||||
}
|
||||
|
||||
public ConnectionConfiguration.SecurityMode getSecurityMode() {
|
||||
return securityMode;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -30,6 +30,7 @@
|
||||
<module>twitter-consumer</module>
|
||||
<module>wavefront-consumer</module>
|
||||
<module>rsocket-consumer</module>
|
||||
<module>xmpp-consumer</module>
|
||||
<module>zeromq-consumer</module>
|
||||
</modules>
|
||||
<build>
|
||||
|
||||
30
functions/consumer/xmpp-consumer/README.adoc
Normal file
30
functions/consumer/xmpp-consumer/README.adoc
Normal file
@@ -0,0 +1,30 @@
|
||||
# XMPP Consumer
|
||||
|
||||
A consumer that allows you to send messages through a XMPP server.
|
||||
|
||||
## Beans for injection
|
||||
|
||||
You can import the `XmppConsumerConfiguration` in the application and then inject the following bean.
|
||||
|
||||
`Consumer<Message<?> xmppConsumer`
|
||||
|
||||
You need to inject this as `Consumer<Message<?> xmppConsumer`.
|
||||
|
||||
You can use `xmppConsumer` as a qualifier when injecting.
|
||||
|
||||
**NOTE:** This is a functional endpoint. One will need to subscribe to this endpoint in order to start accepting data
|
||||
on it.
|
||||
|
||||
## Configuration Options
|
||||
|
||||
All configuration properties are prefixed with `xmpp.consumer`.
|
||||
|
||||
For more information on the various options available, please see link:src/main/java/org/springframework/cloud/fn/consumer/xmpp/XmppConsumerProperties.java[XmppConsumerProperties].
|
||||
|
||||
## Tests
|
||||
|
||||
See this link:src/test/java/org/springframework/cloud/fn/consumer/xmpp/[test suite] for the various ways, this consumer is used.
|
||||
|
||||
## Other usage
|
||||
|
||||
See this https://github.com/spring-cloud/stream-applications/blob/master/applications/sink/xmpp-sink/README.adoc[README] where this consumer is used to create a Spring Cloud Stream application where it makes a XMPP Sink.
|
||||
34
functions/consumer/xmpp-consumer/pom.xml
Normal file
34
functions/consumer/xmpp-consumer/pom.xml
Normal file
@@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>org.springframework.cloud.fn</groupId>
|
||||
<artifactId>spring-functions-parent</artifactId>
|
||||
<version>4.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../spring-functions-parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<artifactId>xmpp-consumer</artifactId>
|
||||
<name>xmpp-consumer</name>
|
||||
<description>XMPP consumer</description>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud.fn</groupId>
|
||||
<artifactId>xmpp-common</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.springframework.cloud.fn</groupId>-->
|
||||
<!-- <artifactId>function-test-support</artifactId>-->
|
||||
<!-- <version>${project.version}</version>-->
|
||||
<!-- <scope>test</scope>-->
|
||||
<!-- </dependency>-->
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* 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.consumer.xmpp;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import org.jivesoftware.smack.XMPPConnection;
|
||||
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.cloud.fn.common.xmpp.XmppConnectionFactoryConfiguration;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.integration.xmpp.XmppHeaders;
|
||||
import org.springframework.integration.xmpp.outbound.ChatMessageSendingMessageHandler;
|
||||
import org.springframework.messaging.Message;
|
||||
import org.springframework.messaging.support.MessageBuilder;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Daniel Frey
|
||||
* @since 4.0.0
|
||||
*/
|
||||
@Configuration
|
||||
@EnableConfigurationProperties(XmppConsumerProperties.class)
|
||||
@Import(XmppConnectionFactoryConfiguration.class)
|
||||
public class XmppConsumerConfiguration {
|
||||
|
||||
@Bean
|
||||
public ChatMessageSendingMessageHandler chatMessageSendingMessageHandler(XMPPConnection xmppConnection) {
|
||||
|
||||
return new ChatMessageSendingMessageHandler(xmppConnection);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Consumer<Message<?>> xmppConsumer(ChatMessageSendingMessageHandler chatMessageSendingMessageHandler, XmppConsumerProperties properties) {
|
||||
return message -> {
|
||||
|
||||
Message<?> send = MessageBuilder
|
||||
.fromMessage(message)
|
||||
.setHeaderIfAbsent(XmppHeaders.TO, properties.getChatTo())
|
||||
.build();
|
||||
|
||||
chatMessageSendingMessageHandler.handleMessage(send);
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* 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.consumer.xmpp;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Daniel Frey
|
||||
* @since 4.0.0
|
||||
*/
|
||||
@ConfigurationProperties("xmpp.consumer")
|
||||
@Validated
|
||||
public class XmppConsumerProperties {
|
||||
|
||||
/**
|
||||
* XMPP handle to send message to.
|
||||
*/
|
||||
private String chatTo;
|
||||
|
||||
public void setChatTo(String chatTo) {
|
||||
this.chatTo = chatTo;
|
||||
}
|
||||
|
||||
public String getChatTo() {
|
||||
return chatTo;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -0,0 +1 @@
|
||||
This directory is used as a default location in which Openfire stores backups of keystore files.
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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>
|
||||
@@ -0,0 +1,10 @@
|
||||
version: "3.7"
|
||||
services:
|
||||
Openfire:
|
||||
image: fishbowler/openfire:latest
|
||||
ports:
|
||||
- "5222:5222"
|
||||
volumes:
|
||||
- ./_data/openfire/conf:/var/lib/openfire/conf
|
||||
command:
|
||||
- -demoboot
|
||||
@@ -0,0 +1,181 @@
|
||||
/*
|
||||
* 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.consumer.xmpp;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.time.Duration;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import org.jivesoftware.smack.ConnectionConfiguration;
|
||||
import org.jivesoftware.smack.SmackException;
|
||||
import org.jivesoftware.smack.StanzaCollector;
|
||||
import org.jivesoftware.smack.XMPPException;
|
||||
import org.jivesoftware.smack.filter.StanzaTypeFilter;
|
||||
import org.jivesoftware.smack.packet.Stanza;
|
||||
import org.jivesoftware.smack.tcp.XMPPTCPConnection;
|
||||
import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.jxmpp.stringprep.XmppStringprepException;
|
||||
import org.testcontainers.containers.DockerComposeContainer;
|
||||
import org.testcontainers.junit.jupiter.Container;
|
||||
import org.testcontainers.junit.jupiter.Testcontainers;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.SpringBootConfiguration;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.integration.xmpp.XmppHeaders;
|
||||
import org.springframework.messaging.Message;
|
||||
import org.springframework.messaging.support.MessageBuilder;
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.awaitility.Awaitility.await;
|
||||
|
||||
/**
|
||||
* @author Daniel Frey
|
||||
*
|
||||
* @since 4.0.0
|
||||
*/
|
||||
@SpringBootTest(
|
||||
properties = {
|
||||
"xmpp.factory.user=john",
|
||||
"xmpp.factory.password=secret",
|
||||
"xmpp.factory.host=localhost",
|
||||
"xmpp.factory.service-name=localhost",
|
||||
"xmpp.factory.security-mode=disabled"
|
||||
}
|
||||
)
|
||||
@DirtiesContext
|
||||
@Testcontainers
|
||||
public class XmppConsumerConfigurationTests {
|
||||
|
||||
private static final String XMPP_HOST = "localhost";
|
||||
private static final int XMPP_PORT = 5222;
|
||||
private static final String FROM = "john";
|
||||
private static final String TO = "jane";
|
||||
private static final String TO_PW = "secret";
|
||||
private static final String SERVICE_NAME = "localhost";
|
||||
|
||||
@Container
|
||||
private static final DockerComposeContainer XMPP_CONTAINER =
|
||||
new DockerComposeContainer(new File("src/test/docker-compose/xmpp/docker-compose.yml"))
|
||||
.withExposedService("Openfire", XMPP_PORT);
|
||||
|
||||
@Autowired
|
||||
private Consumer<Message<?>> xmppConsumer;
|
||||
|
||||
// A client connection is needed to receive the message from the xmpp server
|
||||
// to verify it was received successfully
|
||||
private XMPPTCPConnection clientConnection;
|
||||
|
||||
@BeforeEach
|
||||
void setup() throws IOException, SmackException, XMPPException, InterruptedException {
|
||||
|
||||
XMPPTCPConnectionConfiguration.Builder builder = XMPPTCPConnectionConfiguration.builder();
|
||||
builder.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
|
||||
builder.setHost(XMPP_HOST);
|
||||
builder.setPort(XMPP_PORT);
|
||||
builder.setResource(SERVICE_NAME);
|
||||
builder.setUsernameAndPassword(TO, TO_PW)
|
||||
.setXmppDomain(SERVICE_NAME);
|
||||
|
||||
this.clientConnection = new XMPPTCPConnection(builder.build());
|
||||
this.clientConnection.connect();
|
||||
this.clientConnection.login();
|
||||
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
void teardown() {
|
||||
|
||||
this.clientConnection.instantShutdown();
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
void messageHandlerConfiguration() {
|
||||
|
||||
StanzaCollector collector
|
||||
= this.clientConnection.createStanzaCollector(StanzaTypeFilter.MESSAGE);
|
||||
|
||||
Message<?> testMessage =
|
||||
MessageBuilder.withPayload("test")
|
||||
.setHeader(XmppHeaders.TO, TO + "@" + SERVICE_NAME)
|
||||
.build();
|
||||
|
||||
await().atMost(Duration.ofSeconds(20)).pollDelay(Duration.ofMillis(100))
|
||||
.untilAsserted(() -> {
|
||||
|
||||
xmppConsumer.accept(testMessage);
|
||||
|
||||
Stanza stanza = collector.nextResult();
|
||||
assertStanza(stanza);
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
void xmppMessageHandlerConfiguration() throws XmppStringprepException {
|
||||
|
||||
StanzaCollector collector
|
||||
= this.clientConnection.createStanzaCollector(StanzaTypeFilter.MESSAGE);
|
||||
|
||||
Message<?> testMessage =
|
||||
MessageBuilder.withPayload(org.jivesoftware.smack.packet.MessageBuilder.buildMessage().addBody("en_us", "test").to(TO + "@" + SERVICE_NAME).build())
|
||||
.build();
|
||||
|
||||
await().atMost(Duration.ofSeconds(20)).pollDelay(Duration.ofMillis(100))
|
||||
.untilAsserted(() -> {
|
||||
|
||||
xmppConsumer.accept(testMessage);
|
||||
|
||||
Stanza stanza = collector.nextResult();
|
||||
assertStanza(stanza);
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void assertStanza(Stanza stanza) {
|
||||
assertTo(stanza);
|
||||
assertFrom(stanza);
|
||||
}
|
||||
|
||||
private void assertTo(Stanza stanza) {
|
||||
|
||||
assertThat(stanza.getTo().asBareJid().asUnescapedString()).isEqualTo(TO + "@" + SERVICE_NAME);
|
||||
|
||||
}
|
||||
|
||||
private void assertFrom(Stanza stanza) {
|
||||
|
||||
assertThat(stanza.getFrom().asBareJid().asUnescapedString()).isEqualTo(FROM + "@" + SERVICE_NAME);
|
||||
|
||||
}
|
||||
|
||||
@SpringBootConfiguration
|
||||
@EnableAutoConfiguration
|
||||
@Import(XmppConsumerConfiguration.class)
|
||||
static class XmppConsumerTestApplication { }
|
||||
|
||||
}
|
||||
@@ -42,11 +42,6 @@
|
||||
<artifactId>ftp-supplier</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud.fn</groupId>
|
||||
<artifactId>geode-supplier</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud.fn</groupId>
|
||||
<artifactId>http-supplier</artifactId>
|
||||
@@ -142,11 +137,6 @@
|
||||
<artifactId>ftp-consumer</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud.fn</groupId>
|
||||
<artifactId>geode-consumer</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud.fn</groupId>
|
||||
<artifactId>jdbc-consumer</artifactId>
|
||||
@@ -197,6 +187,11 @@
|
||||
<artifactId>twitter-consumer</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud.fn</groupId>
|
||||
<artifactId>xmpp-consumer</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud.fn</groupId>
|
||||
<artifactId>wavefront-consumer</artifactId>
|
||||
|
||||
@@ -44,7 +44,8 @@
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud.fn</groupId>
|
||||
<artifactId>geode-common</artifactId>
|
||||
<version>${java-functions.version}</version>
|
||||
<!-- <version>${java-functions.version}</version>-->
|
||||
<version>1.2.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud.fn</groupId>
|
||||
@@ -82,11 +83,11 @@
|
||||
<artifactId>ftp-supplier</artifactId>
|
||||
<version>${java-functions.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud.fn</groupId>
|
||||
<artifactId>geode-supplier</artifactId>
|
||||
<version>${java-functions.version}</version>
|
||||
</dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.springframework.cloud.fn</groupId>-->
|
||||
<!-- <artifactId>geode-supplier</artifactId>-->
|
||||
<!-- <version>${java-functions.version}</version>-->
|
||||
<!-- </dependency>-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud.fn</groupId>
|
||||
<artifactId>http-supplier</artifactId>
|
||||
@@ -193,11 +194,11 @@
|
||||
<artifactId>ftp-consumer</artifactId>
|
||||
<version>${java-functions.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud.fn</groupId>
|
||||
<artifactId>geode-consumer</artifactId>
|
||||
<version>${java-functions.version}</version>
|
||||
</dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.springframework.cloud.fn</groupId>-->
|
||||
<!-- <artifactId>geode-consumer</artifactId>-->
|
||||
<!-- <version>${java-functions.version}</version>-->
|
||||
<!-- </dependency>-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud.fn</groupId>
|
||||
<artifactId>jdbc-consumer</artifactId>
|
||||
|
||||
Reference in New Issue
Block a user