[[tigase810]]
= Tigase XMPP Server 8.1.0 announcement
:author: Wojciech Kapcia
:date: 2020-07-08

Tigase XMPP Server {project-version} Change notes and announcement

== Major Changes

=== More XMPP extensions

Following XMPP guidelines specified in _Compliance Suites_ a number of extensions was included in this release:

* *XEP-0157*: Contact Addresses for XMPP Services (https://projects.tigase.net/issue/server-995[server-995]) that can be configured on per VHost basis (https://projects.tigase.net/issue/server-1015[server-1015])
* *XEP-0398*: User Avatar to vCard-Based Avatars Conversion (https://projects.tigase.net/issue/server-1017[server-1017])
* *XEP-0156*: Discovering Alternative XMPP Connection Methods - Tigase already supported handling DNS queries and standardised our `webservice` to XEP-0156 (https://projects.tigase.net/issue/http-76[http-76])
* *XEP-0410*: MUC Self-Ping (Schrödinger's Chat) (https://projects.tigase.net/issue/http-76[muc-122])
* *XEP-0153*: vCard-Based Avatars - added support for setting *vCard avatar for MUC rooms* (https://projects.tigase.net/issue/http-76[muc-112])
* *XEP-0411*: Bookmarks Conversion (https://projects.tigase.net/issue/http-76[pubsub-79])
* *XEP-0157*: Contact Addresses for XMPP Services (https://projects.tigase.net/issue/server-995[server-995])

=== Improved connectivity with other servers

`SASL-EXTERNAL` mechanism was added for server-to-server (federated, s2s) connections greatly improving compliance with XMPP network. It's possible to use both SASL-EXTERNAL and Diallback depending on support in other servers.

=== Better security & privacy

When it comes to connectivity, Tigase XMPP Server sported *Hardened Mode* that adjusted networking security settings (supported protocols, cipher suites and keys' length where applicable). We decided include 3-level configuration option for *Hardened Mode* (roughly following _Mozilla's SSL Configuration Generator_): `relaxed`, `secure` (default) and `strict` and to further eliminate cipher suites that are currently considered insecure.

We also enabled by default our anti-spam plugin and because we like all-things-extensible we created a guide how to create your own pluggable filters for anti-spam-plugin.

=== Multiple domains (VHosts) support is even better

It was always quite easy to configure and serve multiple domains in Tigase XMPP Server. In this release we made it even better! First of all - we included `Default` VHost item, which allows configuring global defaults for the installation on the fly without having to change configuration files and restart the instance.

Internally, we introduced _VHost Extensions_ - a mechanism that allows easy addition of configurable options that can be set on per-domain basis.

On top of that we reworked how SSL certificates are handled (especially wildcard ones) and now they are loaded and assigned to correct domain automatically - no need to configure _star_-certificates manually anymore.

=== Mobile First

Notifications send to mobile applications via Apple's and Google's push servers using *Tigase's PUSH component* are now encrypted (https://projects.tigase.net/issue/push-25[#push-25]), requires compatible clients)

MUC component now allows users to register permanent nickname, which makes it possible to receive PUSH notifications even if our client disconnects and is offline (https://projects.tigase.net/issue/muc-115[#muc-115])

=== Installation & management

The (web) installer was simplified making setting up and configuring Tigase even easier (https://projects.tigase.net/issue/http-78[#http-78]) - now it's only needed to select desired database, provide it's details and eventually adjust which components and plugins should be enabled or disabled, but we believe that provided defaults should work well in most of the cases.

After the installation and startup, it's possible to see basic instance state via web browser either opening `/server/` endpoint (https://projects.tigase.net/issue/server-1164[#server-1164]), or local file from `logs/server-info.html`) and manage the installation using Admin WebUI, that received slight visual face-lift (https://projects.tigase.net/issue/http-90[#http-90])

=== Noteworthy

* Startup time was significantly reduced due to improvements of creating repository pools (https://projects.tigase.net/issue/server-1149[#server-1149])
* Multi-thread, highly concurrent script execution was improved (https://projects.tigase.net/issue/server-1154[#server-1154])
* StreamManagement was available, but in this version we decided to enabled it by default.
* More places offers support for https://xmpp.org/extensions/xep-0059.html[XEP-0059: Result Set Management] - namely PubSub nodes discovery and `jabber:iq:serach`
* https://xmpp.org/extensions/xep-0060.html#publisher-publish-options[Publishing Options] were added to PubSub (https://projects.tigase.net/issue/pubsub-75[#pubsub-75])

== New Minor Features & Behavior Changes

* https://projects.tigase.net/issue/server-918[server-918]: AWS obtain public IP and/or DNS address of the EC2 instance
* https://projects.tigase.net/issue/server-985[server-985]: Add support for SCRAM-SHA-512(-PLUS)
* https://projects.tigase.net/issue/spam-8[spam-8]: Enable spam processor by default
* https://projects.tigase.net/issue/server-1012[server-1012]: UserDomainFilter.groovy fails to load
* https://projects.tigase.net/issue/server-1014[server-1014]: Can't upgrade from 8.0.0GA to 8.1.0-SNAPSHOT
* https://projects.tigase.net/issue/server-798[server-798]: Limit number of messages that are stored in DB per user within a period of time
* https://projects.tigase.net/issue/server-827[server-827]: Seperate Component-based statistics
* https://projects.tigase.net/issue/server-1026[server-1026]: NPE: in JabberIqRegister/EmailConfirmationSender
* https://projects.tigase.net/issue/pubsub-82[pubsub-82]: NPE in RetrieveItemsModule
* https://projects.tigase.net/issue/tigaseim-78[tigaseim-78]: IPv6 connectivity issue
* https://projects.tigase.net/issue/server-239[server-239]: OSGi mode - exceptions in logs
* https://projects.tigase.net/issue/server-1020[server-1020]: Enable stream management by default
* https://projects.tigase.net/issue/pubsub-83[pubsub-83]: NPE in PublishItemModule
* https://projects.tigase.net/issue/pubsub-81[pubsub-81]: Exception during execution of event: tigase.pubsub.modules.PresenceCollectorModule.PresenceChangeEvent
* https://projects.tigase.net/issue/server-1021[server-1021]: NPE: Cannot update BruteForceLocker
* https://projects.tigase.net/issue/server-826[server-826]: UserRepository caches force synchronization even if caching is disabled
* https://projects.tigase.net/issue/server-958[server-958]: Add timeout for opened TCP connections
* https://projects.tigase.net/issue/server-1029[server-1029]: Read receipients are not copied via carbons
* https://projects.tigase.net/issue/server-1015[server-1015]: Allow configuring XEP-0157: Contact Addresses on per VHost basis
* https://projects.tigase.net/issue/pubsub-65[pubsub-65]: RSM and jabber:search for pubsub discovery
* https://projects.tigase.net/issue/server-1030[server-1030]: NPE in VCardTemp when processing initial presence
* https://projects.tigase.net/issue/http-72[http-72]: Change Content-Disposition from attachment to inline
* https://projects.tigase.net/issue/server-1045[server-1045]: NPE in DiscoExtensionsForm
* https://projects.tigase.net/issue/server-1048[server-1048]: Update parent pom and information about suggested JDK
* https://projects.tigase.net/issue/push-23[push-23]: [JDK12] Can't establish encrypted connection with Push/FCM
* https://projects.tigase.net/issue/server-978[server-978]: Improve VHost configuration / extending
* https://projects.tigase.net/issue/server-1068[server-1068]: Improve LogFormat readability (and maybe performance)
* https://projects.tigase.net/issue/server-1070[server-1070]: Improve privacy list loggging
* https://projects.tigase.net/issue/server-1071[server-1071]: NPE in IOService.accept
* https://projects.tigase.net/issue/server-710[server-710]: Registration improvements
* https://projects.tigase.net/issue/pubsub-79[pubsub-79]: XEP-0411: Bookmarks Conversion
* https://projects.tigase.net/issue/pubsub-75[pubsub-75]: Add support for Publishing Options
* https://projects.tigase.net/issue/server-1017[server-1017]: XEP-0398: User Avatar to vCard-Based Avatars Conversion
* https://projects.tigase.net/issue/server-994[server-994]: Add server support for Entity Capabilities: Stream Feature
* https://projects.tigase.net/issue/server-995[server-995]: XEP-0157: Contact Addresses for XMPP Services
* https://projects.tigase.net/issue/http-76[http-76]: Standardise DNS webservice to XEP-0156
* https://projects.tigase.net/issue/server-1109[server-1109]: Add recommended JDK version to documentation
* https://projects.tigase.net/issue/push-28[push-28]: Non-tigase notifications should use high priority (APNS)
* https://projects.tigase.net/issue/server-1114[server-1114]: Can't register on sure.im with StorkIM
* https://projects.tigase.net/issue/server-1005[server-1005]: Flatten schema to match versioning document
* https://projects.tigase.net/issue/server-1116[server-1116]: account_status is not checked
* https://projects.tigase.net/issue/server-1074[server-1074]: Hardened Mode improvements
* https://projects.tigase.net/issue/server-1125[server-1125]: StatsDumper.groovy doesn't work in documentation in 8.x
* https://projects.tigase.net/issue/http-85[http-85]: Pasword resset doesn't work
* https://projects.tigase.net/issue/server-1128[server-1128]: Possible vulnerability in XML parser
* https://projects.tigase.net/issue/server-1130[server-1130]: NPE i JabberIqAuth
* https://projects.tigase.net/issue/http-84[http-84]: Configurable `resetPassword` endpoint hostname
* https://projects.tigase.net/issue/server-1129[server-1129]: BOSH timeouts on GET requests
* https://projects.tigase.net/issue/prv-436[prv-436]: Conversations compliance - contact developers
* https://projects.tigase.net/issue/server-1100[server-1100]: CAAS and WS testers fail to connect to wss://tigase.im:5291
* https://projects.tigase.net/issue/server-1047[server-1047]: Add SASL-EXTERNAL on s2s conections
* https://projects.tigase.net/issue/server-1103[server-1103]: High priority PUSH notifications are sent for all messages
* https://projects.tigase.net/issue/pubsub-93[pubsub-93]: NPE in CapsChangeEvent
* https://projects.tigase.net/issue/server-1137[server-1137]: Don't require setting JAVA_HOME to start server
* https://projects.tigase.net/issue/server-1136[server-1136]: upgrade-schema --help not available
* https://projects.tigase.net/issue/utils-19[utils-19]: tigase-utils doesn't compile with JDK12
* https://projects.tigase.net/issue/server-1138[server-1138]: Schema files are not sorted correctly during loading
* https://projects.tigase.net/issue/pubsub-98[pubsub-98]: Resources with emoji chars are causing issues with MySQL backend
* https://projects.tigase.net/issue/server-1110[server-1110]: Disabling TLS in VHost configuration doesn't work
* https://projects.tigase.net/issue/server-1078[server-1078]: Don't send root CA certificate in chain
* https://projects.tigase.net/issue/server-1113[server-1113]: Don't advertise SASL-EXTERNAL if own certificate is not valid
* https://projects.tigase.net/issue/http-78[http-78]: Simplify installer
* https://projects.tigase.net/issue/server-1133[server-1133]: Not able to connect via S2S to server with incorrect SSL certificate
* https://projects.tigase.net/issue/serverdistribution-2[serverdistribution-2]: MUC upgrade not linked correctly in global tigase guide
* https://projects.tigase.net/issue/server-1149[server-1149]: Reduce startup time with a lot of database connections
* https://projects.tigase.net/issue/server-1148[server-1148]: "ERROR! Component <x> schema version is not loaded in the database or it is old!" during shutdown
* https://projects.tigase.net/issue/server-1153[server-1153]: Refactor Credentials related `username` to `credentialId` to avoid confussion
* https://projects.tigase.net/issue/servers-312[servers-312]: No cluster connection to send a packet
* https://projects.tigase.net/issue/server-1154[server-1154]: Multi-thread script execution yields wrong results
* https://projects.tigase.net/issue/servers-294[servers-294]: Can't connect from tigase.im to rsocks.net
* https://projects.tigase.net/issue/server-1111[server-1111]: Can't establish s2s to upload.pouet.ovh
* https://projects.tigase.net/issue/server-1143[server-1143]: S2S connectivity issue with OpenFire when SASL external is used
* https://projects.tigase.net/issue/servers-309[servers-309]: Issue when connecting to xabber.org: not-authorized: self signed certificate
* https://projects.tigase.net/issue/tigaseim-80[tigaseim-80]: Siskin IM push server is not accessible
* https://projects.tigase.net/issue/server-1080[server-1080]: After updating certificate via ad-hoc/rest only main certificate is updated
* https://projects.tigase.net/issue/http-88[http-88]: Improve REST documentation
* https://projects.tigase.net/issue/http-87[http-87]: "request accept time exceeded" for every request when using `JavaStandaloneHttpServer`
* https://projects.tigase.net/issue/server-1151[server-1151]: BruteForceLockerExtension (and possibly others) settings are not correctly retrieved
* https://projects.tigase.net/issue/http-89[http-89]: Drop result/error packages received by HTTP-API if no connection present to write response to
* https://projects.tigase.net/issue/pubsub-99[pubsub-99]: Notifications are not sent for +notify from nodes with whitelist access mode
* https://projects.tigase.net/issue/pubsub-79[pubsub-79]: XEP-0411: Bookmarks Conversion
* https://projects.tigase.net/issue/server-1157[server-1157]: SCRAM-SHA512 not working
* https://projects.tigase.net/issue/server-1159[server-1159]: Improve handling establishing and terminating of the session
* https://projects.tigase.net/issue/server-1152[server-1152]: Cleanup warnings from JDBCMsgRepository
* https://projects.tigase.net/issue/server-1112[server-1112]: Fallback to diallback if SASL-EXTERNAL fails
* https://projects.tigase.net/issue/servers-292[servers-292]: S2S connectivity issues
* https://projects.tigase.net/issue/acspubsub-19[acspubsub-19]: REST execution fails on other nodes
* https://projects.tigase.net/issue/server-1145[server-1145]: Race condition during storing/loading of offline messages
* https://projects.tigase.net/issue/http-90[http-90]: Add direct links to most useful task in AdminUI main page
* https://projects.tigase.net/issue/spam-10[spam-10]: Add documentation for creation of a custom filter
* https://projects.tigase.net/issue/server-1163[server-1163]: Review and update `SASL Custom Mechanisms and Configuration` documentation
* https://projects.tigase.net/issue/server-1164[server-1164]: After-installation report - installation status
* https://projects.tigase.net/issue/systems-76[systems-76]: Fix issue with StackOverflow due to recursive call in TLSIO; improve debug log
* https://projects.tigase.net/issue/server-1082[server-1082]: Sec-WebSocket-Accept not calculated correctly
* https://projects.tigase.net/issue/server-1083[server-1083]: Messages sent to full jid are returned with error
* https://projects.tigase.net/issue/push-25[push-25]: Add support for sending encrypted PUSHes
* https://projects.tigase.net/issue/server-1085[server-1085]: Improve retrieval of values for all keys in a node in UserRepository
* https://projects.tigase.net/issue/muc-115[muc-115]: Add support for MUC and offline message delivery
* https://projects.tigase.net/issue/muc-122[muc-122]: XEP-0410: MUC Self-Ping (Schrödinger's Chat)
* https://projects.tigase.net/issue/muc-112[muc-112]: Support for setting vCard avatar for room
* https://projects.tigase.net/issue/http-83[http-83]: Issue with multithreading access to HttpExchange instance
* https://projects.tigase.net/issue/httpapijetty-3[httpapijetty-3]: Support for HTTP/2
* https://projects.tigase.net/issue/httpapijetty-6[httpapijetty-6]: Update Jetty version


