瀏覽代碼

Allow NULL path to add top level documentation strings

tags/1.1.0
Vsevolod Stakhov 8 年之前
父節點
當前提交
4a455a7b34
共有 2 個文件被更改,包括 35 次插入21 次删除
  1. 32
    21
      src/libserver/cfg_rcl.c
  2. 3
    0
      src/plugins/surbl.c

+ 32
- 21
src/libserver/cfg_rcl.c 查看文件

@@ -3077,33 +3077,44 @@ rspamd_rcl_add_doc_by_path (struct rspamd_config *cfg,
ucl_object_t *obj;
gchar **path_components, **comp;

found = ucl_lookup_path (cfg->doc_strings, doc_path);

if (found != NULL) {
return rspamd_rcl_add_doc_obj ((ucl_object_t *)found,
if (doc_path == NULL) {
/* Assume top object */
return rspamd_rcl_add_doc_obj (cfg->doc_strings,
doc_string, doc_name, type, handler, flags);
}
else {
found = ucl_lookup_path (cfg->doc_strings, doc_path);

/* Otherwise we need to insert all components of the path */
path_components = g_strsplit_set (doc_path, ".", -1);
cur = cfg->doc_strings;

for (comp = path_components; *comp != NULL; comp ++) {
if (ucl_object_type (cur) != UCL_OBJECT) {
msg_err_config ("Bad path while lookup for '%s' at %s",
doc_path, *comp);
return NULL;
if (found != NULL) {
return rspamd_rcl_add_doc_obj ((ucl_object_t *) found,
doc_string, doc_name, type, handler, flags);
}

found = ucl_object_find_key (cur, *comp);
/* Otherwise we need to insert all components of the path */
path_components = g_strsplit_set (doc_path, ".", -1);
cur = cfg->doc_strings;

if (found == NULL) {
obj = ucl_object_typed_new (UCL_OBJECT);
ucl_object_insert_key ((ucl_object_t *)cur, obj, *comp, 0, true);
cur = obj;
}
else {
cur = found;
for (comp = path_components; *comp != NULL; comp++) {
if (ucl_object_type (cur) != UCL_OBJECT) {
msg_err_config ("Bad path while lookup for '%s' at %s",
doc_path, *comp);
return NULL;
}

found = ucl_object_find_key (cur, *comp);

if (found == NULL) {
obj = ucl_object_typed_new (UCL_OBJECT);
ucl_object_insert_key ((ucl_object_t *) cur,
obj,
*comp,
0,
true);
cur = obj;
}
else {
cur = found;
}
}
}


+ 3
- 0
src/plugins/surbl.c 查看文件

@@ -292,6 +292,9 @@ surbl_module_init (struct rspamd_config *cfg, struct module_ctx **ctx)

*ctx = (struct module_ctx *)surbl_module_ctx;

rspamd_rcl_add_doc_by_path (cfg, NULL,
"URL blacklist plugin",
"surbl", UCL_OBJECT, NULL, 0);
rspamd_rcl_add_doc_by_path (cfg, "surbl",
"List of redirector servers",
"redirector", UCL_STRING, NULL, 0);

Loading…
取消
儲存