创建新节点时,default_node_config 将被忽略

创建新节点时,default_node_config 将被忽略

我有一个相当标准的 ejabberd 安装,由 MySQL 支持,我想预先配置 PubSub 节点以设置send_last_published_itemneveron_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有优先权,但第二句话对我来说很奇怪。

是我做错了什么还是这是一个错误?

有没有办法配置节点插件的默认值?我使用的是“平面”类型的节点。

谢谢!

相关内容