Tigase v7.1.4

New Minor Features & Behavior Changes

Important

It’s essential to persist items before upgrading to Tigase XMPP Server 8.0.0!

Fixes

  • #8086 Improve detecting incorrect payload while configuring room affiliation/roles

Tigase v7.1.3

New Minor Features & Behavior Changes

Option to allow external connections using SSL

Previously only plain socket and TLS connections were supported. This change allows using also SSL sockets.

Fixes

  • #6363 Fix missing namespaces in packets sent as responses for adhoc commands.
  • #6408 Fix issue with multiple XML stanzas sent in single WebSocket frame.
  • #6521 Fix ordering of recents queries - always use timestamps for comparison in Unified Archiving component.
  • #6657 Fix missing index on tig_ma_jids in Unified Archiving component.

Tigase v7.1.2

New Minor Features & Behavior Changes

Input Buffer algorithm changed

The algorithm charged with resizing the input buffer size has been reworked. The new algorithm now takes less steps to shrink the input buffer to an appropriate size. This has improved memory usage under operation, and leaves Tigase XMPP Server with a smaller footprint when idle.

TLS Buffer size reduced

As the input buffer has gotten smaller, so has the TLS buffer. We are now able to utilized 2k per connection instead of an allocated 16k (and 2k thereafter). This significantly reduces the amount of memory needed to run Tigase, and will benefit both high and low activity servers.

Fixes

  • #5750 Statistics retrieved over XMPP now adhere to level rules.
  • #5864 Fixed NPE on pre-bind Bosh session script.
  • #6000 Fixed issue with dynamic rosters not being recognised while broadcasting presence.

Tigase v7.1.1

AMP plugin has had some updates

Offline message retrieval has been slightly changed to use different methods. If you are using the below configuration:

sess-man/plugins-conf/http\://jabber.org/protocol/offline/amp-repo-class=tigase.archive.unified.db.JDBCFlexibleOfflineMessageRetrievalRepository
sess-man/plugins-conf/amp/amp-repo-class=tigase.archive.unified.db.JDBCFlexibleOfflineMessageRetrievalRepository

Replace it with these settings to use proper retrieval method.

sess-man/plugins-conf/http\://jabber.org/protocol/offline/amp-repo-class=tigase.archive.unified.db.JDBCFlexibleOfflineMessageRetrievalRepositoryWithRecents
sess-man/plugins-conf/amp/amp-repo-class=tigase.archive.unified.db.JDBCFlexibleOfflineMessageRetrievalRepositoryWithRecents

Tigase v7.1.0

Tigase v7.1.1 includes changes made for v7.1.0, so below is included major changes and highlights for v7.1.0 of Tigase. The lists of specific fixes will not be included in this documentation.

Major Changes

Tigase has undergone a few major changes to our code and structure. To continue to use Tigase, a few changes may be needed to be made to your systems. Please see them below:

HTTP Component renamed

The HTTP component has been renamed, if you still have the old tigase.rest.RestMessageReciever in your init.properties file, please update the component name to:

tigase.http.HttpMessageReceiver
New JDK v8 required

As Oracle has dropped support for version 7 of its Java runtime environment and developer kit, we have moved to version 8 of the JDK. Furthermore, some new features and fixes for Tigase Server now require the use of JDK v8 or later. Please upgrade your Java packages from this link.

Changes to Database Schemas

Tigase has undergone a number or database schema changes, the current versions being main database schema v7.1 and pubsub schema v3.2.0. If you are upgrading to v7.1.0 from a previous version of Tigase, it is recommended you visit this section in the documentation to prepare your new installation.

Presence Plugin Split

The plugin handling all presence processing has been split from one plugin (Presence.java) into separate plugins: - PresenceAbstract.java handles most common presence-related methods, and is also used by the following two plugins. - PresenceSubscription.java to handle subscription presence processing like for roster updates. - PresenceState.java to handle initial presences from new logins.

New Features & Components

New HTTP API

Tigase now features an HTTP API that not only allows web client chat, but administrators can change settings, manage users, and even write and run scripts all from the comfort of a browser window. Furthermore, commands can be passed through this interface using REST to create and run custom scripts and commands. We plan on expanding on the look and feel of this interface as time goes on, but in the meantime enjoy the real-time XMPP experience now with a user-friendly GUI.

New Admin HTTP interface

Tigase now comes with its own build-in web XMPP client! It can be accessed from http://yourhost.com:8080/ui/. For more details, see the Admin UI guide.

Added support for XEP-0334

XEP-0334 is now supported. See this section for details.

Kernel Bean Configurator has been Improved

Added aliases for bean properties to allow for a 'high level' of configuration. Instead of using

component/bean-name/property=value

The following easier to use method will work

component/property=value
Support for XEP-0352

Client State Indication is now enabled by default on Tigase XMPP Servers. Details here.

One Certificate for multiple Vhosts

Tigase now allows for wildcards in setting server certificate per Vhosts. See more in this section.

Maximum users setting for MUC

Administrators can now set that maximum number of users allowed on specific MUCs. See MUC Room Configuration.

HTTP Rest API Support

Tigase now supports REST commands via HTTP, they can be sent from ad-hoc commands, a web interface, or other REST tools. See documentation for more.

Empty Nicknames

Tigase can now support users with empty nicknames. See this for details.

Offline Message Limits

Tigase now has support to enable and change Offline Message Limits as handled by AMP. Documentation here.

Offline Message Sink

A new way to store offline messages has been implemented, it may not replace standard offline messages, but can be used in other ways. Documentation here.

Adding Components to trusted list

Components can now be added to trusted list and will be shared with all clustered servers. #3244

Tigase Mailer Extension now Included

Tigase Mailer extension is now included in distributions of Tigase server. This extension enables the monitor component to deliver E-mails to and from specified e-mail addresses when monitor are triggered. For more information see monitor mailer section.

EventBus implemented

Tigase now has a simple PubSub component called EventBus to report tasks and triggers. More details are available Here.

XEP-0191 Blocking Command Support added

Blocking Command support has been added to Tigase, all functions of XEP-0191 should be implemented. See Admin Guide for details.

Stream management now has new settings available for stream timeout

Maximum stream timeout and default stream timeout times can now be set in init.properties. Details of these two settings can be found here.

JVM Default configuration updated

Default tigase.conf file has been updated with the following change in JVM options:

PRODUCTION_HEAP_SETTINGS=" -Xms5G -Xmx5G " # heap memory settings must be adjusted on per deployment-base!
JAVA_OPTIONS="${GC} ${EX} ${ENC} ${DRV} ${JMX_REMOTE_IP} -server ${PRODUCTION_HEAP_SETTINGS} -XX:MaxDirectMemorySize=128m "

As the comment says, we recommend adjusting the heap memory settings for your specific installations. #3567

Java Garbage Collection Settings have been improved

After significant testing and investigation, we have improved the Java GC settings to keep memory usage from becoming too high on systems. #3248

For more information about JVM defaults and changes to settings, see our Documentation.

New Rest API added to obtain a JID login time

GetUserInfo command has been expanded to obtain user login and logout times in addition to standard information. See this section for full details.

New init.properties properties

--ws-allow-unmasked-frames=false Allows for unmasked frames to be sent to Tigase server VIA Websocket and not force-close the connection when set to true. RFC 6455 specifies that all clients must mask frames that it sends to the server over Websocket connections. If unmasked frames are sent, regardless of any encryption, the server must close the connection. Some clients however, may not support masking frames, or you may wish to bypass this security measure for development purposes.

--vhost-disable-dns-check=true Disables DNS checking for vhosts when changed or edited. When new vhosts are created, Tigase will automatically check for SRV records and proper DNS settings for the new vhosts to ensure connectivity for outside users, however if these validations fail, you will be unable to save those changes. This setting allows you to bypass that checking.

Connection Watchdog

A watchdog property is now available to monitor stale connections and sever them before they become a problem. More details here.

Web Installer Setup Page now has restricted access

The Web Installer Setup Page, available through http://yourserver.com/8080/setup/ now requires an admin level JID or a user/password combo specified in init.properties. See the Web Installer section for default settings. See Component Properties section for details on the new property.

Offline Message Receipts Storage now Configurable

Admins may now configure Offline Message Receipts Storage to specify filters and controls as to what they want stored in offline messages. See more details here.

Account Registration Limits

In order to protect Tigase servers from DOS attacks, a limit on number of account registrations per second has been implemented. See this link for configuration settings.

Enable Silent Ignore on Packets Delivered to Unavailable Resources

You can now have Tigase ignore packets delivered to unavailable resources to avoid having a packet bounce around and create unnecessary traffic. Learn how here.

Cluster Connections Improved

Cluster commands now operate at CLUSTER priority, giving the packets higher status than HIGH which otherwise has caused issues during massive disconnects. New Configuration options come with this change. The first being able to change the number of connections for CLUSTER packets using the following init.property setting:

cl-comp/cluster-sys-connections-per-node[I]=2

Also a new class which implements the new connection selection interface, but uses the old mechanism where any connection can send any command.

cl-comp/connection-selector=tigase.cluster.ClusterConnectionSelectorOld
Cluster Connections Testing Implemented

Watchdog has now been added to test cluster connections by default. Watchdog sends an XMPP ping to all cluster connections every 30 seconds and checks to see if a ping response has been received in the last 3 minutes. If not, the cluster connection will be dropped automatically. Global watchdog settings will not impact cluster testing feature.

Cluster Map implemented

Tigase can now generate cluster maps through a new API. See the development guide for a description of the API.

New Licensing Procedures

With the release of Tigase XMPP server v7.1.0, our licensing procedures have changed. For more information about how to obtain, retain, and install your license, please see this section.

Message Archive expanded to include non-body elements

Message Archive can now be configured to store messages that may not have body element, this option is explained in this section.

New Ability to Purge Data from Unified Archive

Data from Unified Archive or Message Archive can be automatically or manually purged depending on age or expired status. Information on configuring this is available here.

Server Statistics Expanded

Server Statistics for Tigase XMPP Server have been expanded, and now will print at the close of a server session, or may be obtained in the normal way. Note that some statistics have changed since previous versions, and may have different formatting. See the Statistics Description section of the Administration guide for all current server statistics.

Force Redirection

It’s possible now to redirect connections on one port to be forced to connect to another port using the force-redirect-to setting. Details here.

Dual IP installtions

Tigase now has a Dual IP setup which can now use a separate internal and external IP and use a DNS resolver for the connection redirection. Setup instructions are Located here.

Error counting

It is now possible to conduct error counting and collect it from statistics. This feature is explained in more detail here.

New Database Disconnections Counter

3 new statistics were added to basic-conf to help monitor database connection stability, and how often the XMPP Server needs to reconnect to the database. The list of new statistics are listed here.

New Known Cluster Statistic

A new statistic has been added to cl-comp displaying the number of connected Cluster Nodes if there are more than one. Displayed as an INFO level statistic.

New Documentation Structure

There has been a lot of changes and fixes to our documentation over the last few months. If you have links to any of our documentation, please update them as the filenames may have changed.

Full XML of last available presence may be saved to repository

A more detailed last available presence can now be made from some configuration changes, along with a timestamp before the entire presence stanza is saved to the repository. More information is available here.

Setting available to enable automatic subscriptions

Tigase supports enabling automatic presence subscriptions and roster authorizations. For more information on these settings, check the Automatic Subscriptions section.

Stacktrace on Shutdown

Tigase will now dump the stacktrace upon shutdown by default. For more information, check this description.

New logic handling re-delivery of packets

Previously, Tigase would retry delivering command packets that failed to send after a brief delay of 60 seconds. This new method can provide relief in situations where command packet queues can get full. The new logic works like this: The delay for retries, after the first delay of 60 seconds will increase by a factor of 1.5, so the 2nd retry will then be 90 seconds, and then 135 and so on, until the retry limit has been reached (default is 15). Included in this is a new setting for setting the retry count, available here.