1. Tigase 8.3.0 发行说明

1.1. Tigase XMPP 服务器 8.3.0 变更说明

1.1.1. 主要变化

1.1.2. 所有次要功能和行为变化

1.2. Tigase XMPP 服务器 8.3.0 变更说明

1.2.1. 主要变化

  • This version requires JDK17 to run

  • Added support for mam2#extended [#mam-73]

  • Rework certificate generation to utilise keygen tool instead of using sun.* API unavailable under JDK17

  • Added support for XEP-0440 SASL Channel Binding Type Capability and fixed and reenabled SCRAM-*-PLUS SASL mechanisms [#server-1335]

  • Added initial,preview support for SASL2 and Bind2 (disabled by default) - to enable, activate beans ‘urn:xmpp:bind:0’ and ‘urn:xmpp:sasl:2’ in ‘sess-man’ [#server-1332]

1.2.2. 所有次要功能和行为变化

  • 网络套接字缓冲区从 2K 增加到 4K,从而以提高从套接字读取数据时的性能。当并发用户连接的数量增加时, 它可以成比例地增加内存使用量。也可以使用 socket-buffer-size 属性配置此缓冲区的大小 - 请参阅文档。

  • Add configuration to log size generated by LoggerTask in Monitor and decrease default from 1M to 50K; Disable serialisation of monitor events; #servers-372

  • Add DOAP file; update documentation with supported features; #server-1076

  • Fix issue with NPE in JabberIqAuth plugin when no password was presented due to missing return statement; fixed similar issue where, after closing the connection, the execution of the code wasn’t terminated in JabberIqAuth and SaslAuth plugins #server-1317

  • Add support for XEP-0398 to feature list and updated list of supported features; #server-1316

  • Change try-catch statement in database schema loader to better catch edge cases; #serverdist-10

  • Remove wildcard certificate generation (as main DN) in certificate container to avoid issues that it entails (inability to override such self-signed certificate via ad-hoc commands!). Wildcards are now properly handled by CertificateGenerateor and are included correctly as SAN in addition to DN for main domain; Fix handling “default” certificates from repository; #server-1279

  • Change default watchdog ping from (forbidden by RFC) whitespace to xmpp; add warning if someone configures it as whitespace either way; server-1318

  • Improve XMPPDomBuilderHandler logging; #server-1323

  • Improved Stream Management code responsible for generating <r/> requests #server-1324 (#150)

  • Added socket-buffer-size option to ConnectionManager to configure SO_RCVBUF separately from internal network buffers #server-1325

  • Increased socket-buffer-size for client-to-server and intercluster connections and added documentation #server-1325

  • Fix MAX_PAUSE property name; #server-1326

  • Updated implementation of XEP-0377: Spam Reporting #server-1327

  • Fixed issue with errors being sent for unexpected <iq type=result/> stanzas #server-1328

  • Improved exceptions handling in StanzaProcessor #server-1328

  • Switch from jtds to MS own jdbc driver; #serverdist-12

  • Prevent re-delivery of certain S2S packets (sasl, features, dialback, etc) as it doesn’t make sense; #server-1320

  • Adjust log levels to avoid WARNINGS during startup for regular messages; #server-1115

  • Add ‘active in last x’ statistic; #server-1281

  • Include option to restart JVM on OOM (off by default)

  • Correctly process packets from mobile queue instead of re-adding currently filtered packet; #server-1331

  • Improvements to NativeMemoryTracking implementation with units; documentation; #server-1330

  • Improve MAM logging; #servers-384

  • Only count stanzas in StreamManagement #server-1333

  • Fixed advertisement stream features for unauthorized stream #server-1334

  • Fixed NPE during preparing stream features when connection is already closed #server-1334

  • Added initial support for SASL2 and Bind2 (preview feature, disabled by default) #server-1332

  • Added support for XEP-0440 SASL Channel Binding Type Capability and fixed and reenabled SCRAM-*-PLUS SASL mechanisms [#server-1335]

  • Fixed NPE during enabling of stream resumption #server-1332

  • Fixed sending block/unblock presences from blocking command for domain #server-1336

  • Better default for lastXmppPacketReceivedTime member to avoid WatchDog closing connection before lastXmppPacketReceivedTime is set; #server-1337

  • Add proper addressing validation in S2S connection and allow connections without ‘from’ set; #server-1338

1.3. Tigase XMPP Server 8.2.0 变更说明

1.3.1. 主要变化

  • 对 s2s 连接的改进:版本 8.2.0 带来了许多与 s2s 连接相关的改进:支持 TLS1.3,改进了身份验证和流协商期间的逻辑,解决了各种部署的连接问题

  • 更好地处理证书:现在可以将证书存储在数据库中,从而更容易在集群环境中管理它们。

  • 弃用基于``Element`` 的事件,支持基于对象的事件

  • 提高性能:减少内存使用并缩短启动时间

1.3.2. 所有次要功能和行为变化

  • #server-1050:没有 根凭证的数据库安装

  • #server-1062:弃用基于事件总线的元素

  • #server-1097: 无法配置额外的包过滤器

  • #server-1101: 启用 TLS1.3 会导致 s2s 连接失败

  • #server-1102:增加将 MAM 扩展到 MAM:2 的可能性

  • #server-1105: 增强添加 SSL 证书临时选项以设置默认值

  • #server-1119: 用数据库替代文件系统来存储证书

  • #server-1120: JabberIqRegister 应该允许同时执行 CAPTCHA 和电子邮件

  • #server-1132:如果只有一个方向有效,请不要使用 s2s 套接字

  • #server-1142: 注册后要求通过电子邮件通知客户激活帐户

  • #server-1158: 与服务器建立 JMX 连接会导致内存分配过多

  • #server-1162: 在@ConfigField 中允许接口

  • #server-1170: TLS 无限循环影响 Tigase XMPP 服务器性能

  • #server-1175: 与 diebesban.de 的连接因无效命名空间错误而停止

  • #server-1177: 能够在运行时更改日志级别

  • #server-1178: 从存储库中删除 ``online_status``(在线状态)

  • #server-1179: 在 XEP-0215 主机字段中添加对 {clusterNode(集群节点)} 的支持

  • #server-1181 MaxDailyCounterQueue 中的 NoSuchElementException

  • #server-1182: 在没有现有会话的情况下处理 <iq type=”result”/> 时的 NPE

  • #server-1187: SchemaLoader 不应在日志(URL 日志)中打印密码

  • #server-1192: 混淆存储库密码

  • #server-1190: 对不存在的用户执行 EditUser 会导致创建新用户

  • #server-1193: 对没有<body/> 的群聊消息发送推送通知

  • #server-1197: 无限循环,同时删减加密推送通知的主体以适应推送通知限制

  • #server-1199: 在 s2s 流协商完成之前不要发送任何数据包

  • #server-1200: 对高通量的连接使用适当大小的网络缓冲区

  • #server-1203: 在 CIDConnections.sendPacketsBack 中处理错误数据包

  • #server-1217: 防止同时执行架构升级

  • #server-1219: 执行数据库升级时,使用 config.tdsl 中的所有 JDBC URI 参数。

  • #server-1222: 添加对 XEP-0377:垃圾邮件报告的支持

  • #server-1229: 为 JabberIqRegister 启用 CAPTCHA 或电子邮件会损害密码更改功能。

  • #server-1229: 为 JabberIqRegister 启用 CAPTCHA 或电子邮件会损害密码更改功能。

  • #server-1233: 向 CertificateRepository 添加选项以从文件系统加载证书

  • #server-1234: 名册 API 改进

  • #server-1237: 修改 CertificateRepository,以便单独存储项目

  • #server-1238: 无法通过 ad-hoc 设置 MOTD。

  • #server-1243: 在基本发行版中包含 wait-for-it.sh 脚本

  • #server-1245: MethodStatistics 不适用于有重载方法的接口

  • #server-1251: 无法使用默认安装初始化 MAM 处理器

  • #server-1252: 从 Tig_OfflineMessages_DeleteMessage 中删除选择的 row_count()

  • #server-1253: ‘expired-processor’ 疑似不会定期删除过期的消息

  • #server-1254: 修复启动和关闭缓慢的问题

  • #server-1258: 无需引用/注入bean,但是允许实例化它们

  • #server-1260: UserConnectedEvent 应该是一个集群事件

  • #server-1261: 修订和改进 EventBus 开发者指南

  • #server-1269: SSL 问题被默认隐藏,难以识别

  • #server-1273: 添加选项以限制并发连接的资源数量

  • #server-1277: 修复 StreamManagementIOProcessor 中的 HUGE out queue

  • #server-1278: 在StreamManagementIOProcessor.serviceStopped 中的 NPE

  • #server-1282: XMPPProcessorAbstract.processToUserPacket() 以错误结果响应 IQ

  • #server-1284: 向 JabberIqAuth 添加验证

  • #server-1285: XEP-0157 条目中的错误字段类型

  • #server-1290: 根据 rfc7622 改进 StringPrep 以禁止 localpart/domain 中的空间

  • #server-1292: search.jabber.network 的 TLS 连接问题

  • #server-1297: 添加选项以推送插件,从而允许覆盖(OMEMO)加密消息中的未加密部分

  • #server-1303: 更好地处理 “The target is unavailable at this time.” / PacketInvalidTypeException

  • #server-1305: 允许在``upgrade-schema``任务期间创建管理员(如果不存在)用户

  • #server-1306: 修复正在使用的大量直接内存。

  • #server-1307: 修复 MAM 同步断开连接问题

  • #extras-3: 添加 AWS logback 和如何使用它的文档

  • #extras-4: 在发送邮件通知之前取消转义和规范化日志

  • #extras-7: 在带内注册期间添加电子邮件验证;更好地处理给不存在的邮件地址发送邮件所产生的异常问题

  • #extras-9: 弃用 mDNS 实施

  • #serverdist-8:从 XEP-0156 实现中删除 DNS 解析部分

1.4. Tigase XMPP Server 8.1.0 变更说明和公告

1.4.1. 主要变化

XMPP更多 扩展

遵循 Compliance Suites 中指定的 XMPP 指南,此版本中包含了许多扩展:

  • XEP-0157: XMPP 服务的联系地址 (server-995)可以在每个 VHost 基础上进行配置(server-1015)

  • XEP-0398: 用户头像到基于 vCard 的头像转换 (server-1017)

  • XEP-0156:发现另外一种 XMPP 连接方法 - Tigase 已经支持处理 DNS 查询并将我们的``webservice``标准化为 XEP-0156 (http-76)

  • XEP-0410: MUC Self-Ping (薛定谔的聊天) (muc-122)

  • XEP-0153: 基于 vCard 的头像 - 添加了对设置 MUC 房间的 vCard 头像 的支持 (muc-112)

  • XEP-0411: 书签转换 (pubsub-79)

  • XEP-0157:XMPP 服务的联系地址 (server-995)

改进了与其他服务器的连接

为服务器到服务器(联合,s2s)连接添加了“SASL-EXTERNAL”机制,极大地提高了对 XMPP 网络的适应性。可能可以同时使用 SASL-EXTERNAL 和回拨,这取决于其他服务器是否支持。

更好的安全性和隐私性

在连接方面,Tigase XMPP服务器 采用**强化模式**来调整网络安全设置(支持的协议,密码套件和适用的密钥长度)。我们决定让 强化模式 包含 3 级配置选项(基本遵循 Mozilla 的 SSL 配置生成器):relaxed, secure``(默认)和 ``strict,并进一步消除当前被认为不安全的密码套件。

我们还默认启用了我们的反垃圾邮件插件,因为我们喜欢万物可扩展,所以我们创建了一个指南,指导用户如何为反垃圾邮件插件创建自己的可插入过滤器。

多域(VHosts)支持更好

在 Tigase XMPP Server 中配置和服务多个域总是很容易的。在这个新发布的版本中,我们做得更好!首先 - 我们包括了``Default`` VHost 项,它可以为即时安装配置全局默认值,而无需更改配置文件并重启实例。

在内部,我们引入了*VHost Extensions* - 一种允许轻松添加并可在每个域基础上设置的可配置选项的机制。

最重要的是,我们重新设计了 SSL 证书的处理方式(尤其是通配符证书),现在它们会自动加载并分配给正确的域 - 不再需要手动配置 star-certificates。

移动优先

使用 **Tigase 的 PUSH 组件**并 通过 Apple 和 Google 的推送服务器发送到移动应用程序的通知现在已加密(#push-25),需要兼容的客户端)

MUC 组件现在允许用户注册永久昵称,这使得即使我们的客户端断开连接和离线也可以接收推送通知(#muc-115 <https://projects.tigase.net/issue/muc-115> __)

安装与管理

(web) 安装程序已简化,使得设置和配置 Tigase 更加容易(#http-78) - 现在只需要选择所需的数据库,提供详细信息并最后调整启用或禁用的组件和插件即可,但我们相信在提供的默认值下程序在大多数情况下可以正常工作。

安装和启动后,可以通过 Web 浏览器查看基本实例状态,或者打开 /server/ 端点(#server-1164 <https://projects.tigase.net/issue/server-1164> __),或来自 logs/server-info.html 的本地文件,并使用 Admin WebUI 管理安装,该安装得到了轻微的视觉提升(#http-90)

显著不同点

  • 由于创建存储库池的改进(#server-1149),启动时间显著减少

  • 改进了多线程,高并发脚本执行(#server-1154

  • StreamManagement 还是可用的,但在这个版本中,我们决定默认启用它。

  • 更多地方提供了对`XEP-0059: Result Set Management <https://xmpp.org/extensions/xep-0059.html>`__的支持 - 即PubSub节点发现和 jabber:iq:serach

  • 发布选项 已被添加到 PubSub (#pubsub-75)

1.4.2. 新的次要功能和行为变化

  • server-918:AWS 获取 EC2 实例的公共 IP 和/或 DNS 地址

  • server-985:添加对 SCRAM-SHA-512(-PLUS) 的支持

  • spam-8: 默认启用垃圾邮件处理器

  • server-1012:UserDomainFilter.groovy 加载失败

  • server-1014:无法从 8.0.0GA 升级到 8.1.0-SNAPSHOT

  • server-798:限制每个用户在一定时间段内存储在数据库中的消息数

  • server-827: 单独基于组件的统计信息

  • server-1026:NPE:在 JabberIqRegister/EmailConfirmationSender 中

  • pubsub-82: RetrieveItemsModule 中的 NPE

  • tigaseim-78:IPv6 连接问题

  • server-239:OSGi 模式 - 日志中的异常

  • server-1020:默认启用流管理

  • pubsub-83:PublishItemModule 中的 NPE

  • pubsub-81:事件执行期间的异常: tigase.pubsub.modules.PresenceCollectorModule.PresenceChangeEvent

  • server-1021:NPE:无法更新 BruteForceLocker

  • server-826:即使缓存被禁用,UserRepository 缓存也会强制同步

  • server-958:打开的 TCP 连接添加超时

  • server-1029:阅读收件人不通过碳复制

  • server-1015:允许配置 XEP-0157:基于每个 VHost 的联系地址

  • pubsub-65: RSM 和 jabber:搜索 pubsub 发现

  • server-1030:处理初始存在时 VCardTemp 中的 NPE

  • http-72:将 Content-Disposition 从附件更改为内联

  • server-1045:DiscoExtensionsForm 中的 NPE

  • server-1048:更新相关建议的JDK 的父 pom 和信息

  • push-23: [JDK12] 无法与 Push/FCM 建立加密连接

  • server-978:改进 VHost 配置/扩展

  • server-1068: 提高 LogFormat 的可读性(也许还有表现性能)

  • server-1070:改进隐私列表记录

  • server-1071: IOService.accept 中的 NPE

  • server-710:注册的改进

  • pubsub-79: XEP-0411:书签转换

  • pubsub-75: 添加对发布选项的支持

  • server-1017: XEP-0398: 用户头像到基于 vCard 的头像转换

  • server-994: 添加对实体功能的服务器支持:流功能

  • server-995: XEP-0157: XMPP 服务的联系地址

  • http-76:将 DNS 网络服务标准化为 XEP-0156

  • server-1109:将推荐的 JDK 版本添加到文档中

  • push-28:非 tigase 通知应该使用高优先级 (APNS)

  • server-1114:无法使用 StorkIM 在sure.im 上注册

  • server-1005:拼合模式以匹配版本控制文档

  • server-1116:未检查account_status

  • server-1074: 强化模式的改进

  • server-1125: StatsDumper.groovy 在 8.x 版本的文档中不起作用

  • http-85:密码重置不工作

  • server-1128:在XML 解析器中可能存在的漏洞

  • server-1130: NPE i JabberIqAuth

  • http-84: 可配置的 resetPassword 端点主机名

  • server-1129: GET 请求的 BOSH 超时

  • prv-436: 对话的合规性 - 联系开发人员

  • server-1100:CAAS 和 WS 测试人员无法连接到 wss://tigase.im:5291

  • server-1047:在 s2s 连接上添加 SASL-EXTERNAL

  • server-1103:为所有消息发送高优先级 PUSH 通知

  • pubsub-93:CapsChangeEvent 中的 NPE

  • server-1137:不需要设置 JAVA_HOME 来启动服务器

  • server-1136:升级模式 –help 不可用

  • utils-19:tigase-utils 不能与 JDK12 一起编译

  • server-1138: 加载过程中模式文件未被正确排序

  • pubsub-98: 带有表情符号字符的资源导致 MySQL 后端出现问题

  • server-1110:在 VHost 配置中禁用 TLS 不起作用

  • server-1078: 不要在链中发送根 CA 证书

  • server-1113: 如果自己的证书无效,请勿宣传 SASL-EXTERNAL

  • http-78:简化安装程序

  • server-1133: 无法通过 S2S 连接到 不正确的SSL服务器

  • serverdistribution-2:全球 tigase 指南中未正确链接 MUC 升级

  • server-1149:通过大量数据库连接减少启动时间

  • server-1148: 在关机期间 “错误!组件 <x> 架构版本未被加载到数据库中,或者它是旧版本!”

  • server-1153: 将与 username 相关的凭据重构为 credentialId 以避免混淆

  • servers-312: 没有集群连接发送数据包

  • server-1154: 多线程脚本执行产生错误结果

  • servers-294:无法从 tigase.im 连接到 rsocks.net

  • server-1111:无法建立 s2s 到 upload.pouet.ovh

  • server-1143: SASL 外部被使用时和OpenFire 的 S2S 连接问题

  • servers-309: 连接到 xabber.org 时出现问题:未授权:自签名证书

  • tigaseim-80: Siskin IM 推送服务器无法访问

  • server-1080: 通过 ad-hoc/rest 更新证书后,仅更新主证书

  • http-88:改进 REST 文档

  • http-87: 对每个请求使用``JavaStandaloneHttpServer``时的“超过请求接受时间”

  • server-1151: BruteForceLockerExtension(可能还有其他)设置未正确检索

  • http-89:如果要写入响应的连接不存在,则可丢弃 HTTP-API 收到的结果/错误包

  • pubsub-99:不会从具有白名单访问模式的节点发送 +notify 通知

  • pubsub-79: XEP-0411:书签转换

  • server-1157: SCRAM-SHA512 不工作

  • server-1159:改进会话的建立和终止的处理

  • server-1152: 来自 JDBCMsgRepository 的清理警告

  • server-1112:如果 SASL-EXTERNAL 失败,则回退到回拨

  • servers-292: S2S 的连接问题

  • acspubsub-19: REST 执行在其他节点上失败

  • server-1145: 存储/加载离线消息期间的竞争条件

  • http-90: 在 AdminUI 主页中添加直接链接并指向最有用任务。

  • spam-10:添加用于创建自定义过滤器的文档

  • server-1163: 审核和更新 SASL Custom Mechanisms and Configuration 文档

  • server-1164: 安装后报告-安装状态

  • systems-76:修复由于 TLSIO 中递归调用导致 StackOverflow 的问题;改进调试日志

  • server-1082: Sec-WebSocket-Accept 计算不正确

  • server-1083: 发送到完整 jid 的消息返回错误

  • push-25: 添加对加密推送的支持

  • server-1085: 改进对 UserRepository 节点中所有键值的检索

  • muc-115: 添加对 MUC 和离线消息传递的支持

  • muc-122: XEP-0410: MUC Self-Ping (薛定谔聊天)

  • muc-112: 支持为房间设置 vCard 头像

  • http-83:多线程访问 HttpExchange 实例的问题

  • httpapijetty-3: 支持 HTTP/2

  • httpapijetty-6: 更新Jetty 版本

1.5. Tigase XMPP Server 8.0.0 变更说明和公告

1.5.1. 主要变化

内核和 bean 配置

Tigase 现在使用内核和 Beans 编程风格进行操作。这对 Tigase 和你意味着什么呢?这真的是一个好消息。 Tigase XMPP 服务器现在作为一个内核程序运行,它将独立运行并处理服务器的所有核心功能。而组件和非必要功能现在将作为 Bean 加载。作为用户,您的体验不会发生太大变化。但是,无需重新启动 Tigase 即可加载和卸载 bean,这意味着程序将更加动态化。这意味着当不需要组件时,无需重新启动程序,内存占用的资源更少,正常运行时间更长!这也为 Tigase XMPP 服务器提供了更大的灵活性,从而可以更好的定制独特的解决方案。

新的配置文件格式

随着 Tigase 对内核和 Beans 编程风格的变化,我们也改变了配置文件的管理方式。尽管您仍将像编辑纯文本文件一样编辑 config.tdsl 文件,但一种称为 DSL 的新格式将被使用。域特定语言可能会添加更多行,但格式更简洁,并且提供了更安全的配置设计,因为配置验证是在域级别完成的。有关此格式以及如何配置 Tigase 的更多信息,请访问`DSL 配置指南 <#dslConfig>`__。

集群节点关闭更改

从 Tigase XMPP Server 8.0.0 开始,连接到集群节点上的用户将能够在节点关闭时使用``see-other-host``。 注意:这可能与所有客户端都不兼容。 Ad-hoc 命令旨在作为 groovy 脚本 ``Shutdown.groovy``可以 顺利地关闭集群节点。该脚本还允许 -timeout 设置延迟节点关闭,并提醒所有用户(通过标题消息)服务器将在一段时间后关闭。与该命令兼容的用户客户端将检测其他连接的集群并保持它们的连接。

如果发送命令来关闭整个集群,则``see-other-host``实现不会被发送,但超时设置仍可以被使用。

该脚本可以通过临时命令激活,或者使用 REST 从远程或 Tigase Admin UI 发送。

大量清理代码和存储库

对 v8 的结构和编码进行了多项更改,其中许多改变都与存储库的大小和旧调用有关。此处列出了其中一些改进:

  • 不传递值的空 JavaDocs 已被删除。

  • 所有代码都被重新格式化以符合`codestyle指南 <#tigaseCodeStyle>`__。

  • System.out.print*()printStackTrace() 的调用已从代码中删除。

  • 删除已弃用和未使用的类。

用于 StartTLS 的 BouncyCastle

BouncyCastle Crypto API 现在已被用于处理 StartTLS 协商。通过这样做,Tigase 现在在 SCRAM PLUS 身份验证实现中支持``tls-unique`` 。可以通过调用配置文件中的类来使用此 API:

c2s () {
    sslContextContainer(class: tigase.extras.bcstarttls.BCSSLContextContainer) {}
}

BouncyCastle 类包含在 dist-max 档案中。

默认虚拟主机属性更改

默认虚拟主机属性现在只能配置为域名,而不是带有选项的虚拟主机域列表。需要使用 ad-hoc 命令或 web AdminUI 配置其他虚拟主机域及其选项。参考 Virtual-Hosts 配置 了解更多详情。

所有生成物均已签名

自从 v8.0.0 开始工作以来,Tigase 要求对 Tigase XMPP 服务器和依赖项的所有更改都使用已知证书进行签名。这个版本标志着第一个完全签名的版本。

按比例缩小的安装方法

我们已经整理了 Tigase 的安装方法,现在推荐使用 web-installer 方法。 IzPack 安装程序(文件 tigase-server-<version>-b<build>.jar 安装方法已被删除)将不再为 v8.0.0 及更高版本生成。无法使用HTTP 或浏览器访问的人仍然可以手动安装。访问我们的`快速入门 <#quickstart>`__ 指南以获取有关其他方法的说明。

Tigase XMPP 服务器现在支持表情符号

MySQL 数据库现在支持表情符号,但可能需要更改某些设置,尽管它们不会影响现有数据库。 `访问此部分 <#emojisupportSQL>`__了解详细信息。

现在支持 XEP-0215 外部服务发现

Tigase 现在支持`XEP-0215 - External Service Discovery <https://xmpp.org/extensions/xep-0215.html>`__ 并允许 Tigase 发现通过 XMPP 协议不可用的服务。有关设置和配置信息,请访问`外部服务发现组件 <#_tigase_external_service_discovery>`__ 文档。

现在支持 XEP-0313 消息存档管理

XEP-0313 - 消息存档管理 现在由 Tigase 支持,具有自定义增强功能,比如全文搜索和按标签搜索。 MAM 要求在``config.tdsl``文件中启用 Tigase 的消息存档,并且必须在会话管理器设置中配置模式(XEP-0136 或 XEP-0313)。要打开 MAM,请参阅`位于此处 <#_support_for_mam>`__的配置指南。

XEP-0363 现在支持 HTTP 文件上传

XEP-0363 - HTTP 文件上传 现在支持使用 Tigase HTTP API 组件,现在允许更强大的一对多文件上传选项。配置详细信息可在文档的`HTTP 文件上传组件 <#XEP0363>`__ 部分获得。

启动现在使用自助法

Tigase 现在使用自助法启动,这将像以前一样从``config.tdsl``文件加载配置。然后 Tigase 将使用配置选项开始正常操作。 Tigase 的所有启动功能现在都将在 bootstrap bean 下运行。

CAPTCHA 系统现在可用于带内注册

XEP-0077 带内注册 可以选择使用数据表单来处理新注册。现在,您可以通过使用 CAPTCHA 解决方案来保护这些注册。通过启用此选项,您可以减少服务器上潜在的垃圾邮件发送者和机器人的数量。

架构更改

现在每个组件都有自己的数据库架构,它们不再和 Tigase XMPP 服务器版本绑定,从而更容易更改和更新单个组件,并且可能不会扰乱不使用某些组件的所有用户。有关更多详细信息,请参阅`架构更新部分 <#schemaChangev800>`__。

可收缩统计历史

现在如果系统内存资源超过一定数量,可以自动缩小统计历史记录。默认情况下,这是启用的,并且会在超过 95% 的内存使用时触发。此时将删除所有现有条目的一半。每次达到阈值时,相同的模式将继续把可用记录减半。因为设置了最少 5 个条目的硬设置,所以您将始终拥有最后 5 个条目。此设置可以通过将以下设置添加到您的 config.tdsl 文件并调整整数值来加以调整:

stats() {
  'stats-high-memory-level' = 95
}

统计信息现在可用于所有模块

对于任何 bean,您可以使用以下命令启用统计信息

bean (class) {
  statistics = true
}
垃圾邮件防护

Tigase XMPP Server v8.0.0 现在包括一些措施可以防止垃圾邮件机器人帐户在服务器上运行。

扩大了帐户注册限制

已扩展了帐户注册限制,现在您可以设置单独的计数器,或单独配置组件以实现自己的限制。访问 this section 了解配置详情。

使用带内注册创建的帐户现在将使用电子邮件来确认

为了创建一种更安全的方法来实现``JabberIqRegister``,Tigase XMPP 服务器现在需要在此过程中默认使用电子邮件来确认。 E-mail 必须是有效的,直到用户点击 E-mail 中生成的 URI 并激活帐户后,帐户才会进入待处理状态。这是一个插件,必须通过以下代码在 config.tdsl 文件中启用:

'account-registration-email-validator'() {}
进一步防止垃圾邮件

Tigase-spam 组件现在位于 dist-max 分发包中,并且具有此处描述的许多功能`in this section <#tigase_spam_filter>`__。

密码存储的变化

在 8.0.0 版之前,用户密码以明文形式存储在 tig_users 表中的 user_pw 数据库字段中。可以启用存储密码的 MD5 哈希值,但是这种有限的身份验证机制仅限 SASL PLAIN。然而,密码的 MD5哈希并不是真正安全的方法,因为可以使用彩虹表恢复这种机制。

因此,我们决定改变这一点,仅以 PBKDF2 形式存储密码的加密版本,这可以很容易地用于``SCRAM-SHA-1`` 身份验证机制或``SCRAM-SHA-256``。 SASL PLAIN 机制也可以使用这些加密密码。

现在在 Tigase v8.0.0 中**默认情况下**启用了加密密码的存储。

动态 TLS 缓冲区

TLS 的内存缓冲区不再保持服务器会话所需的最高缓冲区大小。缓冲区现在将在空闲连接期间释放内存。从而大大改善了程序占用空间。

现在支持 XEP-305 快速入门

由于实施了`XEP-0305: XMPP Quickstart <https://xmpp.org/extensions/xep-0305.html>`__ (#1936),建立连接会变快。该功能仅适用于``c2s`` 连接管理器(即端口 5222 上的连接),并需要在``c2s`` 中启用

c2s () {
    'pipelining' = true
}

数据库时间戳

数据库中的时间戳将使用 UTC 时间存储。

配置类型属性已更改

Config-type 现在使用 DSL 格式进行配置。访问 this section 了解更多信息。不同配置类型属性的名称已更改:default 替换 --gen-config-def--gen=config-all--gen-config-default``配置类型。 ``session-manager 替换 --gen-config-smconnection-managers 替换 --gen-config-cscomponent 替换 --gen-config-compsetup - 是为 Tigase XMPP 服务器的初始配置创建的一种新型配置。

备注

不再支持旧版本,升级到 v8.0.0 时必须手动将旧版本替换为新版本。

数据库监视器实现

现在在连接空闲时可以设置对数据库的连接测试,并自定义完成此操作的频率。访问 this section 了解更多详情。

数据包统计扩展

通过 XMPP 和正常关闭期间检索到的数据包统计信息现在已被分散到每个 XMLNS 的基础上。这些可以通过在``config.tdsl`` 文件中添加以下行来禁用:

'detailed-other-statistics' = false

XEP-0016 行为变化

XEP 指出,除了用户会话存在的时候,用户会话不存在时隐私列表也应该可以被使用。之前,Tigase 只会在检索消息时过滤结果,允许被阻止的用户存储离线消息。现在为正确反映 XEP已作更改,并且在没有用户会话时消息将被过滤。但是,如果您希望使用以前的版本,在此版本中离线消息先缓存然后过滤,您可以使用以下配置:

'sess-man' {
    'jabber:iq:privacy' () {
        privacyListOfflineCache (active: true) {
          size = 20000
        }
    }
}

默认情况下,缓存有 10000 个条目的限制,可以通过 size bean 设置,如上所示。

访问控制列表有新的 ACL 修饰符

ACL 中添加了新的权限,包括 了``DOMAIN_OWNER`` 和 ``DOMAIN_ADMIN``以减少权限检查,并添加了另一个级别的细化权限。有关详细信息,请参阅 Tigase ACL 配置以获取更多详细信息。

添加了忽略模式版本检查的选项

您现在可以跳过单个数据库的模式检查阶段。为此,请在数据源配置块中添加以下内容:

DataSource () {
  default () {
    'schema-management' = false
  }
}

这将执行以下操作:

  • 在存储库启动期间打印警告。

  • 跳过源的架构升级。

  • 跳过源的模式破坏。

防止暴力攻击

8.0.0 版通过防止暴力攻击提高了安全性。需要显式启用和配置功能(基于每个 VHost)。详细配置在`??? <#bruteForcePrevention>`__ (#8160)

新的次要功能和行为变化

  • #611 现在在 Tigase XMPP 服务器中启用了对每日消息的支持,并且可以使用 XEP-0133 服务管理 进行管理。

  • #1569 重新实现 XEP-0133 服务管理脚本 4.3 Disable User 和``4.4 Re-enable User``。

  • #1449 监控模块现在在 OSGi 模式下工作。

  • #1706 现在可以为单个虚拟主机设置状态订阅``auto-authorize``。

  • #1968 添加了代理包装器来处理与数据库连接池的重新连接,以帮助防止死锁线程。

  • #3511 SessionManager 中负责关闭 XMPP 的机制已更改为在关闭连接之前处理来自 TCP 连接的所有数据包。

  • #3802 LocalEventBus 和 ClusteredEventBus 的实现已经和 API 统一,现在可以作为 EventBus 使用。

  • #3918 现在会话建立广告是可选的,使会话建立符合 RFC 6121

  • #4111 根据输入容量更改输入缓冲区大小以使用 2 比 1 的比率。不再使用常量值。

  • #4212 数据库模式文件已被平化并进行了更好的整理。

  • #4501 CounterDataFileLogger 现在有一个上限,如果可用磁盘空间还剩下5% 或小于 100MB,其默认会缩小到 75%。

  • #4654 PubSub 组件已被更新,新架构在哈希数据库查找时使用 UTF-8 编码。

  • #4776 现在 DbSchemaLoader 如果命令行中缺少密码会提示输入密码。

  • #4788 推送组件添加到 dist-max 存档。

  • #4814 如果 auth 数据库使用编码密码,现在将自动禁用 SASL-SCRAM。

  • #4844 现在外部组件可以有分配给它们的 SSL 套接字连接。

  • #4859 Tigase ``DbSchemaLoader``现在可以在连接数据库时支持使用 SSL。

  • #4874 Tigase 测试套件已更新相应的 v8.0.0 的所有变化。

  • #4877 为**测试用**而实现的内存存储库。

  • #4880 Tigase 配置类型设置已减少和更改。有关更多详细信息,请参阅`此节 <#configType>`__。

  • `#4908 <https://projects.tigase.net/issues?q=Redmine%20ID:%204908>`__仅在监视器组件内限制管理员的临时执行。

  • #5005 详细的日志记录配置现在以 DSL 格式提供。有关详细信息,请参阅外部参照:[customLogging]。

  • #5069 数据包处理统计信息现在根据 XML 命名空间划分结果。

  • #5079 Tigase DbSchemaLoader 现在可以在调用时在一个命令中通过运用逗号分隔的列来处理多个 .sql 文件。

  • #5086 Tigase 服务监视器在延迟后加载,以防止启动期间出现 NPE。

  • #5149 StanzaReceiverStanzaSender 组件已被弃用,其不再是 Tigase XMPP 服务器的一部分。相关的 SQL 表 xmpp_stanzashort_news 也已从模式中删除。

  • #5150 所有 TigaseDB 表现在都使用 tig_ 前缀。

  • #5214 在为本地 jid 存储离线消息之前,检查是否存在收件人。

  • #5293 现在``DbSchemaLoader`` 遇到丢失的文件时将执行失败而不是跳过。

  • #5379 在 testrunner.sh 中改进了服务器就绪检测。

  • #5397 将不再创建 Webhelp 文档。

  • #5422 Beans 的错误现在将导致控制台日志中的 StackTrace 打印紧凑且更具可读性。

  • #5423 系统配置现在将作为``ConfigHolder.loadConfiguration`` 输出打印到日志文件中。

  • #5425 GetAnyFile``GetConfigFile``脚本移至消息路由器而不是基本配置。

  • #5429 现在调整后的动态排班设置使得单独的 bean可 用于多个实现。

  • #5430 现在``BindResource``设置为 FINER 日志级别以减少控制台输出的冗长度。

  • #5475 现在可以在 ``config.tdsl``文件中使用``env(‘env-1’, ‘def-value’)``行设置默认环境变量。 DSL 配置 部分中提供了详细信息。

  • #5496 ``Destroy Schema``任务现在添加到模式管理器。

  • #5583 现在,当离线消息存储已满时,错误消息会正常发送。

  • #5674 现在,所有组件在与数据库交互时都使用 UTC 时间戳。

  • #5800 更好地注释已弃用的代码,清理和删除以前标记为已弃用的代码。

  • #5964 服务器版本现已添加到 JMX 统计信息中。

  • #5982 tigase.conf 文件中添加了远程 JVM 调试配置,默认注释。

  • #6038 数据源池连接现在是同时初始化的,而不是一次一个,从而减少了初始化时间。

  • #6103 :literal:`RosterElement`不再保留`XMPPResourceConnection`实例,因为它缓存在其他地方。删除导致了所占内存量的净改善。

  • #6133 Tigase 现在根据服务器版本检查组件以确保兼容性。

  • #6163 Groovy 插件更新到 v2.4.12。

  • #6206 分开的 TigaseXMLTools 和 TigaseUtil 包以更好地与 JDK v9 兼容。

  • #6216 MongoDB 驱动程序现已更新到 v3.5.0。

  • #6560 tigase 反垃圾邮件组件现在包含在 tigase dist-max 存档中。

  • #6821 改进了来自 ConfigReader 错误的错误报告。

  • #6842 DefaultTypesConverter 不再需要区分大小写的枚举。

  • #7082 现在``ClassUtilBean``处理 Tigase 服务器的数据包部分的数据包过滤,但不包含 beans,mDNS 的其他改进。

  • #7433 SeeOtherHost 不再使用 PropertiesBeanConfigurator 来解析配置。

  • #7446 现在可以使用 Ad-hoc 命令管理用户凭证。

  • #7743 当未找到存储库时改进的错误消息。

  • #7773 Ad-hoc 命令现在可以不同步执行。

  • #2341 允许在添加好友时指定 SubscriptionType 以避免单独调用 .setBuddySubscription() 从而避免在不需要时将名册两次保存到数据库。

1.5.2. 修复

  • `#2750 <https://projects.tigase.net/issues?q=Redmine%20ID:%202750>`__多个工件和折旧文件清理。大量代码清理和 javadoc 清理。

  • #3582 架构文件经过简化,不再嵌入代码中。

  • `#3611 <https://projects.tigase.net/issues?q=Redmine%20ID:%203611>`__修复了因为 ACS 无法读取 PubSub 架构更改而导致的 TheadExceptionHandler。

  • `#3686 <https://projects.tigase.net/issues?q=Redmine%20ID:%203686>`__处理 XHTML-IM 的问题已得到修复,现在可以正确呈现具有多个 CData 项的消息。

  • #3689 从 CM 返回的数据包不再带有原始发送者的 jid。

  • #3803 添加了新调用``RouteEvent``来检查列表和检查事件,并确定哪些应该被转发到其他节点。

  • #3822 现在,如果为 EventBus 中未找到的事件注册了侦听器,则会引发错误。

  • #3910 修复了在执行 everyMinute 方法期间会话关闭时 SessionManager 中的 NPE。

  • #3911 修复了在线程负载分配期间连接断开的问题。

  • #4185 修复了由于重新连接时重置计数器而导致消息在流恢复时重复的错误。

  • #4447 修复了离线存储中过期消息会导致锁定的情况。

  • #4547 config.dump 文件现在与 init.tdsl 文件和 DSL 文件格式完全兼容。

  • #4672 修复了在配置``UnsupportedOperationException``期间出现的“UnsupportedOperationException”。

  • #4776 如果参数丢失,``DBSchemaLoader``现在会询问用户凭据。如果找不到指定的文件,则不再引发异常。

  • #4885 client-port-delay-listening 调用时不再导致异常。

  • #4973 将消息历史查询更改为现在在选择项目时包含了限制,从而防止 SQLTimeoutException。

  • `#5005 <https://projects.tigase.net/issues?q=Redmine%20ID:%205005>`__修复了禁用组件会导致服务器关闭的问题。

  • #5042 修复了实现自定义 SASL 提供程序,机制和回调处理程序工厂时的问题。

  • #5066 修复了使用 MongoDB 初始化数据库的问题。

  • #5076 last_login 和 last_logout 值现在在使用 SASL SCRAM 身份验证时被正确更新。

  • #5084 SCRAM 现在会在检索密码之前检查帐户是否被禁用。

  • #5085 修复了 Monitor Component 中的``too many beans implemented``错误。

  • #5088 会话关闭后删除了不必要的 SASL 处理请求。

  • #5118 修复了查询隐私列表期间的 NPE,然后缺少``type``。

  • #5303 修复了在 RegistrarBean 或``AbstractKernelBasedComponent``中注册的bean不会被配置覆盖的问题。

  • #5311 重新启动服务器时,不再从 MongoDB 转储离线消息。

  • `#5394 <https://projects.tigase.net/issues?q=Redmine%20ID:%205394>`__加载主 Derby 模式不再引发异常。

  • #5428 修复了每个域限制属性的 v-host 解析。

  • `#5450 <https://projects.tigase.net/issues?q=Redmine%20ID:%205450>`__当无法找到或访问默认或其他数据库时,服务器不再自动关闭。

  • #5458 修复了由``XMPPIOService::xmppStreamOpened()``方法引起的潜在超时。

  • #5480 修复了 Derby DB 中获取离线消息而导致 SQLException 的问题。

  • #5525 修复了连接建立期间返回的 S2S invalid-namespace 错误。

  • #5587 修复了在 Derby 中将消息存储到 AMP 离线数据库时由未关闭的 ResultSet 导致死锁的问题。

  • #5645 添加了在检索 bean 失败时对可能出现的 NPE 的修复。

  • #5670 config-dump 现在打印非活动组件和 bean 的配置来做记录。

  • #5692 以负优先级发送的消息偶尔会被丢弃并且未处理到``OfflineMessageHandler``。

  • #5727 修复了 MySQL 程序未正确终止的潜在问题。

  • #5750 除非请求 FINEST 级别,否则统计信息现在会过滤掉零值结果。

  • #5831 修复了``OutOfMemory``错误的发生。

  • #5864 修复了执行 BOSH 预绑定脚本时的 NPE。

  • #5867 修复了配置转储期间发生的 NPE。

  • #6000 修复了动态名册正确处理订阅请求状态的一些问题。

  • #6006 改进的配置文件和数据库模式处理。

  • #6041 修复了 vhosts DB 可能被``init.config``中的 vhosts 配置覆盖的潜在问题。

  • #6078 修复了 ClusterConnectionManager 以使用 custom_elements_limit 而不是固定值。

  • #6080 修复了数据包过滤从而不过滤集群节点信息请求。

  • #6083 修复了禁用某些组件时集群模式关闭服务器的问题。

  • #6135 如果未被全局启用,Tigase 现在可以正确选择性启用 TLS。

  • #6140 修复了发送服务器欢迎消息时的问题。

  • #6141 修复了启动时的 NPE。

  • #6234 修复了不必要地重复错误消息的问题。

  • #6284 现在Ad-hoc 命令刷新 SSL 证书,并且不再需要重新启动。

  • #6293 在 vCard 中设置空照片时,服务器不再发送不响应。

  • #6263 修复了临时命令响应中缺少的命名空间。

  • #6400 当 max-queue-size 太小并且服务器无法启动时添加了相应的错误。

  • #6408 修复了单个 WebSocket 帧包含多个 XML 节而不是每帧一个的问题。

  • #6411 现在调用主内核以顺利关闭。此外,为大型实例开放了超时期限。

  • #6574 SSL 证书上传处理现在已在集群模式中修复。

  • #6598 修复了集群节点之间的 EventBus 注册连接问题。

  • #6658 在集群不再连接或可用后,集群连接不再可能保持打开连接。

  • #6749 修复了 DerbyDB 的模式解析。

  • #6776 如果标头包含多个值,则修复失败的 Websocket 连接。

  • #6875 修复了在初始化 SessionManager 之前哪里可以接受 C2S 连接的问题。

  • #7037 修复了从 ``config.tdsl``文件解析负值时的错误。

  • #7055 改进元空间使用和其他内存使用调整。

  • #7304 现在虚拟主机日志正确遵循日志大小限制。

  • #7431 具有不同资源的同一用户之间的 AdHoc 请求不再因 `NoConnectionIdExecption` 错误而被丢弃。

  • #7434 调整 SeeOtherHotDualIP 以在集群节点数据库中使用新的表名。

  • #7491 来自 CertificateContainer 的堆栈跟踪不再打印到 tigase-console.log,但将打印到 tigase.log。

  • #7687 修复了身份验证超时后连接失败在清理后标记为活跃的错误。

  • #7747 修复了``ClusterRepoItemEvent``序列化问题导致的在集群模式下产生的不支持转换错误。

  • #7495 修复部分日志都被混淆的问题,添加了测试用例,文档

  • #8305 修复使用 MongoDB 时 SeeOtherHostDualIP 的问题

1.5.3. 组件更改

AMP

  • #7301 Tigase AMP 组件现在使用多个处理线程。

PubSub

  • #5033 现在PubSub 可以在 pubsub 项目中使用表情符号。

  • #5693 修复了 SessionManager 处理器的解析配置。

  • #5766 现在PubSub所有数据库使用 UTC 时间戳。

  • #5953 如果客户端在没有发送 <unavailable/> 存在的情况下断开连接,则固定存在不会从``presenceByService``集合中删除。

  • #6176 版本更改为 PubSub v4.0.0。

  • #7707 修复了 PubSub 中潜在的 NPE。

http-api

  • #4873 添加支持其可以将时间戳字段显示为数据,时间和时区字段。

  • #4876 使用 XML 存储库实现新设置,并更新默认配置以使用它。

  • #4888 现在``http-api``默认启用。

  • #5209 更新了由组件托管的页面的视觉样式。

  • #5290 修复了无效的属性名称。

  • #5316 帐户注册现在可以要求并发送确认电子邮件。

  • #5415 Web 安装程序现在检查配置中的消息存档冲突。

  • #5460 现在通过网络设置支持 MongoDB。

  • #5717 修复了在未显示管理 UI 中复选框的默认值。

  • #5950 支持添加 XEP-0363: HTTP File Upload.

  • #6159 修复了脚本目录不存在时抛出的 NPE。

  • #6176 版本更改为 tigase-http-api v2.0.0。

  • #6212 添加了通过 HTTP API 更改密码的机制。

  • #7307 修复了即使用户存在,脚本在处理 rest/user/ 请求时返回 404问题。

  • #7178 临时命令现在按组分类,以便更好地组织整理。

  • #7568 添加了 HTTP 请求标头的超时读取,添加了可配置的``accept-timeout``。

消息存档

  • #4867 修复了更改 MA jid 时的问题。

  • #4888 ``message-archive``默认启用。

  • #5033 更新消息存档以其可以与表情符号兼容。

  • #5391 添加了开始和结束所缺少的查询语句块以与 SQL Server 兼容。

  • #5604 修改了对静态字段和函数的访问。

  • #5681 通过修改哈希算法修复了具有不同 id 的群聊消息的重复的问题。

  • #6176 版本更改为消息存档 v2.0.0。

  • #7615 ``feature-not-implemented``对删除存储的消息时不再发生响应。

MUC

  • #4888 muc 现在默认启用。

  • #5033 MUC 组件现在与表情符号兼容。

  • #5066 修复了使用 MongoDB 存储库的问题。

  • #5085 删除了无效的注释参数值。

  • #5559 在更改默认房间配置时修复了 NPE。

  • #5666 用户在查询房间成员时可以添加多个``<item/>``元素进行查询。

  • #5715 欢迎消息现在可以全部都禁用,也可以在单个房间配置中禁用。

  • #5736 根据`XEP-0048 7.2.16 <https://xmpp.org/extensions/xep-0045.html#enter-subject>`__,没有主题的房间现在返回空的 <subject/> 元素。

  • #5813 修复了房间创建期间的 NPE。

  • #6176 版本更改为 tigase-muc v3.0.0。

  • #6395 修复了检索 MUC 用户期间的``tigase.db.UserNotFoundException`` 。

  • #6734 引入了 muc#roomconfig_maxresources 以允许为单个占用者配置最大资源数。

  • #7443 默认禁用 XEP-0091,添加历史属性验证。

socks5 代理

  • #2750 清理代码并删除空的 javadocs。

  • #5867 修复了禁用组件时配置转储期间的 NPE。

  • #6176 版本更改为 tigase-socks5 v2.0.0。

统计数据

  • #5206 修复了导致重复错误条目的异常。

  • #5728 修复了上传处理程序中的``MySQLIntegrityConstraintViolationException``。

  • #6161 从 javax.xml.ws 包中删除了类的使用,以实现 JDKv9 兼容性。

STUN 服务器

  • #6176 版本更改为 tigase-stun v2.0.0。

WebSocket