我有一个相当标准的 ejabberd 安装,由 MySQL 支持,我想预先配置 PubSub 节点以设置send_last_published_item
为never
或on_sub
。目前,我有用户可以订阅多达 50 个 PubSub 节点,这些节点在登录后会淹没客户端,我想稍微调低一点,因为我预计这个数字将来会大幅上升。
我更新了 ejabberd.yml 并设置了一些值,default_node_config
然后通过以下方式创建了一个新节点
<iq type='set' id='some-id'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<create node='123'/>
</pubsub>
</iq>
但是,当我检查数据库时,新节点忽略了 的所有默认值default_node_config
。此节点未被其他人修改,它是使用忽略默认值的配置全新创建的:
SELECT * FROM `pubsub_node_option` WHERE nodeid=9;
nodeid name val
9 access_model presence
9 deliver_notifications true
9 deliver_payloads true
9 itemreply none
9 max_items 1
9 max_payload_size 250000
9 notification_type headline
9 notify_config false
9 notify_delete false
9 notify_retract false
9 persist_items true
9 presence_based_delivery true
9 publish_model publishers
9 purge_offline false
9 roster_groups_allowed []
9 rsm true
9 send_last_published_item on_sub_and_presence
9 sql true
9 subscribe true
这些值与默认值非常相似ejabberd/src/node_flat.erl
。
配置如下:
mod_pubsub:
db_type: sql
access_createnode: pubsub_createnode
plugins:
- flat
- pep
force_node_config:
## Avoid buggy clients to make their bookmarks public
storage:bookmarks:
access_model: whitelist
default_node_config:
send_last_published_item: never
notification_type: normal
notify_retract: false
max_items: 4
delivers_notifications: false
notify_delete: true
max_payload_size: 100
我已经阅读了文档很多次,但其中的描述default_node_config
让我感到困惑:
默认节点配置
覆盖默认节点配置,无论节点插件如何。值是键值定义的列表。节点配置仍然使用节点插件定义的默认配置,并覆盖此可配置列表中定义的值的任何项目。
我读到的是[这将用于] 覆盖默认节点配置,无论节点插件如何。但随后它说节点配置仍然使用节点插件定义的默认配置,并根据此可配置列表中定义的值覆盖任何项目。
这可以解释为default_node_config
有优先权,但第二句话对我来说很奇怪。
是我做错了什么还是这是一个错误?
有没有办法配置节点插件的默认值?我使用的是“平面”类型的节点。
谢谢!