aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2014-04-19 22:43:35 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2014-04-19 22:43:35 +0100
commitbaeb17562f47dc31610c0f65079c45a7e6ad44bb (patch)
tree86273356990b760a53b2f910c36ef076aa75fc25 /src
parentea2e597208a72f400ec2f71c7c328a20e69d26a7 (diff)
downloadrspamd-baeb17562f47dc31610c0f65079c45a7e6ad44bb.tar.gz
rspamd-baeb17562f47dc31610c0f65079c45a7e6ad44bb.zip
Deprecate xml config utilities finally.
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/cfg_utils.c91
-rw-r--r--src/cfg_xml.c329
-rw-r--r--src/cfg_xml.h58
-rw-r--r--src/controller.c1
-rw-r--r--src/fuzzy_storage.c1
-rw-r--r--src/lua/lua_config.c1
-rw-r--r--src/lua_worker.c1
-rw-r--r--src/main.c6
-rw-r--r--src/plugins/chartable.c1
-rw-r--r--src/plugins/dkim_check.c1
-rw-r--r--src/plugins/fuzzy_check.c1
-rw-r--r--src/plugins/regexp.c2
-rw-r--r--src/plugins/spf.c1
-rw-r--r--src/plugins/surbl.c1
-rw-r--r--src/smtp_proxy.c1
-rw-r--r--src/webui.c1
-rw-r--r--src/worker.c1
18 files changed, 14 insertions, 485 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index c8eeed516..c8f4dfdcc 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -23,7 +23,6 @@ SET(LIBRSPAMDSERVERSRC
buffer.c
cfg_utils.c
cfg_rcl.c
- cfg_xml.c
dkim.c
dns.c
dynamic_cfg.c
diff --git a/src/cfg_utils.c b/src/cfg_utils.c
index a83f63573..3f31946f1 100644
--- a/src/cfg_utils.c
+++ b/src/cfg_utils.c
@@ -30,7 +30,6 @@
#include "filter.h"
#include "settings.h"
#include "classifiers/classifiers.h"
-#include "cfg_xml.h"
#include "lua/lua_common.h"
#include "kvstorage_config.h"
#include "map.h"
@@ -666,25 +665,6 @@ check_worker_conf (struct config_file *cfg, struct worker_conf *c)
return c;
}
-static GMarkupParser xml_parser = {
- .start_element = rspamd_xml_start_element,
- .end_element = rspamd_xml_end_element,
- .passthrough = NULL,
- .text = rspamd_xml_text,
- .error = rspamd_xml_error,
-};
-
-static const char*
-get_filename_extension (const char *filename)
-{
- const char *dot_pos = strrchr (filename, '.');
-
- if (dot_pos != NULL) {
- return (dot_pos + 1);
- }
-
- return NULL;
-}
static bool
rspamd_include_map_handler (const guchar *data, gsize len, void* ud)
@@ -749,13 +729,10 @@ read_rspamd_config (struct config_file *cfg, const gchar *filename,
{
struct stat st;
gint fd;
- gchar *data, *rcl;
- const gchar *ext;
- GMarkupParseContext *ctx;
+ gchar *data;
GError *err = NULL;
struct rspamd_rcl_section *top, *logger;
- gboolean res, is_xml = FALSE;
- struct rspamd_xml_userdata ud;
+ gboolean res;
struct ucl_parser *parser;
if (stat (filename, &st) == -1) {
@@ -774,67 +751,25 @@ read_rspamd_config (struct config_file *cfg, const gchar *filename,
return FALSE;
}
close (fd);
-
- if (convert_to != NULL) {
- is_xml = TRUE;
- }
- else {
- ext = get_filename_extension (filename);
- if (ext != NULL && strcmp (ext, "xml") == 0) {
- is_xml = TRUE;
- }
- }
-
- if (is_xml) {
- /* Prepare xml parser */
- memset (&ud, 0, sizeof (ud));
- ud.cfg = cfg;
- ud.state = 0;
- ctx = g_markup_parse_context_new (&xml_parser, G_MARKUP_TREAT_CDATA_AS_TEXT, &ud, NULL);
- res = g_markup_parse_context_parse (ctx, data, st.st_size, &err);
- munmap (data, st.st_size);
- }
- else {
- parser = ucl_parser_new (0);
- rspamd_ucl_add_conf_variables (parser);
- rspamd_ucl_add_conf_macros (parser, cfg);
- if (!ucl_parser_add_chunk (parser, data, st.st_size)) {
- msg_err ("ucl parser error: %s", ucl_parser_get_error (parser));
- ucl_parser_free (parser);
- munmap (data, st.st_size);
- return FALSE;
- }
- munmap (data, st.st_size);
- cfg->rcl_obj = ucl_parser_get_object (parser);
+ parser = ucl_parser_new (0);
+ rspamd_ucl_add_conf_variables (parser);
+ rspamd_ucl_add_conf_macros (parser, cfg);
+ if (!ucl_parser_add_chunk (parser, data, st.st_size)) {
+ msg_err ("ucl parser error: %s", ucl_parser_get_error (parser));
ucl_parser_free (parser);
- res = TRUE;
+ munmap (data, st.st_size);
+ return FALSE;
}
+ munmap (data, st.st_size);
+ cfg->rcl_obj = ucl_parser_get_object (parser);
+ ucl_parser_free (parser);
+ res = TRUE;
if (!res) {
return FALSE;
}
- if (is_xml && convert_to != NULL) {
- /* Convert XML config to UCL */
- rcl = ucl_object_emit (cfg->rcl_obj, UCL_EMIT_CONFIG);
- if (rcl != NULL) {
- fd = open (convert_to, O_CREAT|O_TRUNC|O_WRONLY, 00644);
- if (fd == -1) {
- msg_err ("cannot open %s: %s", convert_to, strerror (errno));
- }
- else if (write (fd, rcl, strlen (rcl)) == -1) {
- msg_err ("cannot write rcl %s: %s", convert_to, strerror (errno));
- }
- else {
- msg_info ("dumped xml configuration %s to ucl configuration %s",
- filename, convert_to);
- }
- close (fd);
- free (rcl);
- }
- }
-
top = rspamd_rcl_config_init ();
err = NULL;
diff --git a/src/cfg_xml.c b/src/cfg_xml.c
deleted file mode 100644
index e8f0207cb..000000000
--- a/src/cfg_xml.c
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- * Copyright (c) 2009-2012, Vsevolod Stakhov
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY AUTHOR ''AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * Read and write rspamd dynamic parameters from xml files
- */
-
-#include "config.h"
-#include "cfg_xml.h"
-#include "main.h"
-#include "logger.h"
-#include "util.h"
-#include "classifiers/classifiers.h"
-#include "tokenizers/tokenizers.h"
-#include "cfg_file.h"
-
-#include "view.h"
-#include "map.h"
-#include "expressions.h"
-#include "settings.h"
-
-#include "lua/lua_common.h"
-
-enum xml_read_state {
- XML_READ_START,
- XML_READ_PARAM,
- XML_READ_MODULE,
- XML_READ_MODULE_META,
- XML_READ_MODULES,
- XML_READ_CLASSIFIER,
- XML_READ_STATFILE,
- XML_READ_METRIC,
- XML_READ_WORKER,
- XML_READ_VIEW,
- XML_READ_LOGGING,
- XML_READ_OPTIONS,
- XML_READ_VALUE,
- XML_SKIP_ELEMENTS,
- XML_ERROR,
- XML_SUBPARSER,
- XML_END
-};
-
-/* Maximum attributes for param */
-#define MAX_PARAM 64
-
-#define EOL "\n"
-
-GQuark
-xml_error_quark (void)
-{
- return g_quark_from_static_string ("xml-error-quark");
-}
-
-static inline const gchar *
-xml_state_to_string (struct rspamd_xml_userdata *ud)
-{
- switch (ud->state) {
- case XML_READ_START:
- return "read start tag";
- case XML_READ_PARAM:
- return "read param";
- case XML_READ_MODULE:
- return "read module section";
- case XML_READ_MODULE_META:
- return "read module meta section";
- case XML_READ_OPTIONS:
- return "read options section";
- case XML_READ_MODULES:
- return "read modules section";
- case XML_READ_CLASSIFIER:
- return "read classifier section";
- case XML_READ_STATFILE:
- return "read statfile section";
- case XML_READ_METRIC:
- return "read metric section";
- case XML_READ_WORKER:
- return "read worker section";
- case XML_READ_VIEW:
- return "read view section";
- case XML_READ_LOGGING:
- return "read logging section";
- case XML_READ_VALUE:
- return "read value";
- case XML_SKIP_ELEMENTS:
- return "skip if block";
- case XML_ERROR:
- return "error occured";
- case XML_END:
- return "read final tag";
- case XML_SUBPARSER:
- return "subparser handle";
- }
- /* Unreached */
- return "unknown state";
-}
-
-static inline gboolean
-extract_attr (const gchar *attr, const gchar **attribute_names, const gchar **attribute_values, gchar **res)
-{
- const gchar **cur_attr, **cur_value;
-
- cur_attr = attribute_names;
- cur_value = attribute_values;
-
- while (*cur_attr && *cur_value) {
- if (g_ascii_strcasecmp (*cur_attr, attr) == 0) {
- *res = (gchar *) *cur_value;
- return TRUE;
- }
- cur_attr ++;
- cur_value ++;
- }
-
- return FALSE;
-}
-
-
-/* Find among attributes required ones and form new array of pairs attribute-value */
-static gboolean
-process_attrs (const gchar **attribute_names, const gchar **attribute_values, ucl_object_t *top)
-{
- const gchar **attr, **value;
- gboolean res = FALSE;
-
- attr = attribute_names;
- value = attribute_values;
- while (*attr) {
- /* Copy attributes to pool */
- top = ucl_object_insert_key (top, ucl_object_fromstring_common (*value, 0, UCL_STRING_PARSE), *attr, 0, TRUE);
- attr ++;
- value ++;
- res = TRUE;
- }
- return res;
-}
-
-
-/* Handlers */
-
-/* XML callbacks */
-void
-rspamd_xml_start_element (GMarkupParseContext *context, const gchar *element_name, const gchar **attribute_names,
- const gchar **attribute_values, gpointer user_data, GError **error)
-{
- struct rspamd_xml_userdata *ud = user_data;
- gchar *res;
- ucl_object_t *obj, *tobj;
-
-
- switch (ud->state) {
- case XML_READ_START:
- if (g_ascii_strcasecmp (element_name, "rspamd") != 0) {
- /* Invalid XML, it must contains root element <rspamd></rspamd> */
- *error = g_error_new (xml_error_quark (), XML_START_MISSING, "start element is missing");
- ud->state = XML_ERROR;
- }
- else {
- ud->state = XML_READ_PARAM;
- }
- break;
- case XML_READ_PARAM:
- /* Read parameter name and try to find among list of known parameters */
- /* Legacy XML support */
- if (g_ascii_strcasecmp (element_name, "param") == 0) {
- if (extract_attr ("value", attribute_names, attribute_values, &res)) {
- element_name = res;
- }
- else if (extract_attr ("name", attribute_names, attribute_values, &res)) {
- element_name = res;
- }
- else {
- *error = g_error_new (xml_error_quark (), XML_PARAM_MISSING, "attribute 'value' or 'name' are required for tag 'param'");
- ud->state = XML_ERROR;
- }
- }
-
- rspamd_strlcpy (ud->section_name[ud->nested], element_name, MAX_NAME);
- if (ud->nested == 0) {
- /* Top object */
-
- if (g_ascii_strcasecmp (element_name, "lua") == 0 &&
- extract_attr ("src", attribute_names, attribute_values, &res)) {
- /* Lua is 'special' tag */
- obj = ucl_object_fromstring (res);
- ud->cfg->rcl_obj = ucl_object_insert_key (ud->cfg->rcl_obj, obj, element_name, 0, true);
- ud->parent_pointer[0] = obj;
- ud->nested ++;
- }
- else if (g_ascii_strcasecmp (element_name, "composite") == 0) {
- /* Composite is 'special' tag */
- obj = ucl_object_new ();
- obj->type = UCL_OBJECT;
- ud->parent_pointer[0] = obj;
- ud->cfg->rcl_obj = ucl_object_insert_key (ud->cfg->rcl_obj, obj, element_name, 0, true);
- process_attrs (attribute_names, attribute_values, obj);
- ud->nested ++;
- rspamd_strlcpy (ud->section_name[ud->nested], "expression", MAX_NAME);
- }
- else if (g_ascii_strcasecmp (element_name, "module") == 0 &&
- extract_attr ("name", attribute_names, attribute_values, &res)) {
- obj = ucl_object_new ();
- obj->type = UCL_OBJECT;
- ud->parent_pointer[0] = obj;
- ud->cfg->rcl_obj = ucl_object_insert_key (ud->cfg->rcl_obj, obj, res, 0, true);
- ud->nested ++;
- }
- else {
- obj = ucl_object_new ();
- obj->type = UCL_OBJECT;
- ud->parent_pointer[0] = obj;
- ud->cfg->rcl_obj = ucl_object_insert_key (ud->cfg->rcl_obj, obj, element_name, 0, true);
- process_attrs (attribute_names, attribute_values, obj);
- ud->nested ++;
- }
- }
- else {
- tobj = ucl_object_new ();
- if (g_ascii_strcasecmp (element_name, "symbol") == 0 &&
- process_attrs (attribute_names, attribute_values, tobj)) {
- ud->parent_pointer[ud->nested] = tobj;
- tobj->type = UCL_OBJECT;
- ud->parent_pointer[ud->nested - 1] =
- ucl_object_insert_key (ud->parent_pointer[ud->nested - 1], tobj, element_name, 0, true);
- ud->nested ++;
- /* XXX: very ugly */
- rspamd_strlcpy (ud->section_name[ud->nested], "name", MAX_NAME);
- }
- else if (g_ascii_strcasecmp (element_name, "statfile") == 0) {
- /* XXX: ugly as well */
- ud->parent_pointer[ud->nested] = tobj;
- tobj->type = UCL_OBJECT;
- ud->parent_pointer[ud->nested - 1] =
- ucl_object_insert_key (ud->parent_pointer[ud->nested - 1], tobj, element_name, 0, true);
- ud->nested ++;
- }
- else {
- ucl_object_unref (tobj);
- process_attrs (attribute_names, attribute_values, ud->parent_pointer[ud->nested - 1]);
- }
- }
- break;
- default:
- if (*error == NULL) {
- *error = g_error_new (xml_error_quark (), XML_EXTRA_ELEMENT, "element %s is unexpected in this state %s",
- element_name, xml_state_to_string (ud));
- }
- break;
- }
-}
-
-
-void
-rspamd_xml_end_element (GMarkupParseContext *context, const gchar *element_name, gpointer user_data, GError **error)
-{
-
- struct rspamd_xml_userdata *ud = user_data;
-
- if (ud->nested > 0) {
- if (g_ascii_strcasecmp (ud->section_name[ud->nested - 1], element_name) == 0) {
- ud->nested --;
- }
- else if (g_ascii_strcasecmp (element_name, "param") == 0) {
- /* Another ugly hack */
- ud->nested --;
- }
- else if (g_ascii_strcasecmp (ud->section_name[ud->nested], element_name) != 0) {
- *error = g_error_new (xml_error_quark (), XML_EXTRA_ELEMENT, "element %s is unmatched", element_name);
- ud->state = XML_ERROR;
- }
- }
- else if (g_ascii_strcasecmp ("rspamd", element_name) != 0) {
- *error = g_error_new (xml_error_quark (), XML_EXTRA_ELEMENT, "element %s is unmatched on the top level", element_name);
- ud->state = XML_ERROR;
- }
-}
-#undef CHECK_TAG
-
-void
-rspamd_xml_text (GMarkupParseContext *context, const gchar *text, gsize text_len, gpointer user_data, GError **error)
-{
- struct rspamd_xml_userdata *ud = user_data;
- ucl_object_t *top;
-
- while (text_len > 0 && g_ascii_isspace (*text)) {
- text_len --;
- text ++;
- }
-
- if (text_len == 0) {
- return;
- }
-
-
- top = ud->parent_pointer[ud->nested - 1];
- ud->parent_pointer[ud->nested - 1] =
- ucl_object_insert_key (top, ucl_object_fromstring_common (text, text_len,
- UCL_STRING_PARSE|UCL_STRING_PARSE_BYTES),
- ud->section_name[ud->nested], 0, true);
-}
-
-void
-rspamd_xml_error (GMarkupParseContext *context, GError *error, gpointer user_data)
-{
- struct rspamd_xml_userdata *ud = user_data;
-
- msg_err ("xml parser error: %s, at state \"%s\"", error->message, xml_state_to_string (ud));
-}
diff --git a/src/cfg_xml.h b/src/cfg_xml.h
deleted file mode 100644
index e9d2707b0..000000000
--- a/src/cfg_xml.h
+++ /dev/null
@@ -1,58 +0,0 @@
-#ifndef RSPAMD_CFG_XML_H
-#define RSPAMD_CFG_XML_H
-
-#include "config.h"
-#include "cfg_file.h"
-
-#define MAX_NAME 128
-
-#define XML_START_MISSING 1
-#define XML_PARAM_MISSING 2
-#define XML_EXTRA_ELEMENT 3
-#define XML_UNMATCHED_TAG 4
-#define XML_INVALID_ATTR 5
-
-#define MAX_INHERIT 5
-
-/**
- * Structure that is used for semantic resolution of configuration
- */
-struct rspamd_xml_userdata {
- int state; /*< state of parser */
- struct config_file *cfg; /*< configuration object */
- gchar section_name[MAX_INHERIT][MAX_NAME]; /*< current section */
- gpointer section_pointer; /*< pointer to object related with section */
- gpointer parent_pointer[MAX_INHERIT]; /*< parent's section object */
- GHashTable *cur_attrs; /*< attributes of current tag */
- gint nested;
-};
-
-
-/* Called for open tags <foo bar="baz"> */
-void rspamd_xml_start_element (GMarkupParseContext *context,
- const gchar *element_name,
- const gchar **attribute_names,
- const gchar **attribute_values,
- gpointer user_data,
- GError **error);
-
-/* Called for close tags </foo> */
-void rspamd_xml_end_element (GMarkupParseContext *context,
- const gchar *element_name,
- gpointer user_data,
- GError **error);
-
-/* text is not nul-terminated */
-void rspamd_xml_text (GMarkupParseContext *context,
- const gchar *text,
- gsize text_len,
- gpointer user_data,
- GError **error);
-
-
-/* XML error quark for reporting errors */
-GQuark xml_error_quark (void);
-
-void rspamd_xml_error (GMarkupParseContext *context, GError *error, gpointer user_data);
-
-#endif
diff --git a/src/controller.c b/src/controller.c
index 92dd87d91..b1ba37162 100644
--- a/src/controller.c
+++ b/src/controller.c
@@ -29,7 +29,6 @@
#include "protocol.h"
#include "upstream.h"
#include "cfg_file.h"
-#include "cfg_xml.h"
#include "map.h"
#include "dns.h"
#include "tokenizers/tokenizers.h"
diff --git a/src/fuzzy_storage.c b/src/fuzzy_storage.c
index 6a3e12a04..80f899216 100644
--- a/src/fuzzy_storage.c
+++ b/src/fuzzy_storage.c
@@ -32,7 +32,6 @@
#include "protocol.h"
#include "upstream.h"
#include "cfg_file.h"
-#include "cfg_xml.h"
#include "url.h"
#include "message.h"
#include "fuzzy.h"
diff --git a/src/lua/lua_config.c b/src/lua/lua_config.c
index acf3ae3be..878bb4ef1 100644
--- a/src/lua/lua_config.c
+++ b/src/lua/lua_config.c
@@ -30,7 +30,6 @@
#include "radix.h"
#include "trie.h"
#include "classifiers/classifiers.h"
-#include "cfg_xml.h"
/* Config file methods */
LUA_FUNCTION_DEF (config, get_module_opt);
diff --git a/src/lua_worker.c b/src/lua_worker.c
index 2bf4a9a9f..319242a3a 100644
--- a/src/lua_worker.c
+++ b/src/lua_worker.c
@@ -28,7 +28,6 @@
#include "protocol.h"
#include "upstream.h"
#include "cfg_file.h"
-#include "cfg_xml.h"
#include "url.h"
#include "message.h"
#include "map.h"
diff --git a/src/main.c b/src/main.c
index e5c444a5b..83cf1c53a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -31,7 +31,6 @@
#include "map.h"
#include "fuzzy_storage.h"
#include "kvstorage_server.h"
-#include "cfg_xml.h"
#include "symbols_cache.h"
#include "lua/lua_common.h"
#include "ottery.h"
@@ -79,8 +78,6 @@ static gchar *rspamd_pidfile = NULL;
static gboolean dump_cache = FALSE;
static gboolean is_debug = FALSE;
static gboolean is_insecure = FALSE;
-static gchar *convert_config = FALSE;
-
/* List of workers that are pending to start */
static GList *workers_pending = NULL;
@@ -107,7 +104,6 @@ static GOptionEntry entries[] =
{ "test-lua", 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &lua_tests, "Specify lua file(s) to test", NULL },
{ "sign-config", 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &sign_configs, "Specify config file(s) to sign", NULL },
{ "private-key", 0, 0, G_OPTION_ARG_FILENAME, &privkey, "Specify private key to sign", NULL },
- { "convert-config", 0, 0, G_OPTION_ARG_FILENAME, &convert_config, "Convert cnfiguration to UCL", NULL},
{ NULL, 0, 0, G_OPTION_ARG_NONE, NULL, NULL, NULL }
};
@@ -774,7 +770,7 @@ load_rspamd_config (struct config_file *cfg, gboolean init_modules)
struct filter *filt;
struct module_ctx *cur_module = NULL;
- if (! read_rspamd_config (cfg, cfg->cfg_name, convert_config,
+ if (! read_rspamd_config (cfg, cfg->cfg_name, NULL,
config_logger, rspamd_main)) {
return FALSE;
}
diff --git a/src/plugins/chartable.c b/src/plugins/chartable.c
index 47b5efd7e..87f4c728e 100644
--- a/src/plugins/chartable.c
+++ b/src/plugins/chartable.c
@@ -37,7 +37,6 @@
#include "cfg_file.h"
#include "expressions.h"
#include "view.h"
-#include "cfg_xml.h"
#define DEFAULT_SYMBOL "R_CHARSET_MIXED"
#define DEFAULT_THRESHOLD 0.1
diff --git a/src/plugins/dkim_check.c b/src/plugins/dkim_check.c
index 225f781c0..29186e766 100644
--- a/src/plugins/dkim_check.c
+++ b/src/plugins/dkim_check.c
@@ -46,7 +46,6 @@
#include "view.h"
#include "map.h"
#include "dkim.h"
-#include "cfg_xml.h"
#include "hash.h"
#define DEFAULT_SYMBOL_REJECT "R_DKIM_REJECT"
diff --git a/src/plugins/fuzzy_check.c b/src/plugins/fuzzy_check.c
index d1e55a678..d184d85ea 100644
--- a/src/plugins/fuzzy_check.c
+++ b/src/plugins/fuzzy_check.c
@@ -49,7 +49,6 @@
#include "map.h"
#include "images.h"
#include "fuzzy_storage.h"
-#include "cfg_xml.h"
#define DEFAULT_SYMBOL "R_FUZZY_HASH"
#define DEFAULT_UPSTREAM_ERROR_TIME 10
diff --git a/src/plugins/regexp.c b/src/plugins/regexp.c
index 6569dd150..298c03849 100644
--- a/src/plugins/regexp.c
+++ b/src/plugins/regexp.c
@@ -37,8 +37,6 @@
#include "view.h"
#include "lua/lua_common.h"
#include "json/jansson.h"
-#include "cfg_xml.h"
-
#define DEFAULT_STATFILE_PREFIX "./"
diff --git a/src/plugins/spf.c b/src/plugins/spf.c
index 395313067..2a58021d3 100644
--- a/src/plugins/spf.c
+++ b/src/plugins/spf.c
@@ -41,7 +41,6 @@
#include "view.h"
#include "map.h"
#include "spf.h"
-#include "cfg_xml.h"
#include "hash.h"
#define DEFAULT_SYMBOL_FAIL "R_SPF_FAIL"
diff --git a/src/plugins/surbl.c b/src/plugins/surbl.c
index 585e174fb..f26f7adc7 100644
--- a/src/plugins/surbl.c
+++ b/src/plugins/surbl.c
@@ -50,7 +50,6 @@
#include "view.h"
#include "map.h"
#include "dns.h"
-#include "cfg_xml.h"
#include "hash.h"
#include "surbl.h"
diff --git a/src/smtp_proxy.c b/src/smtp_proxy.c
index 4d4bcf593..be978e936 100644
--- a/src/smtp_proxy.c
+++ b/src/smtp_proxy.c
@@ -24,7 +24,6 @@
#include "config.h"
#include "main.h"
#include "cfg_file.h"
-#include "cfg_xml.h"
#include "util.h"
#include "smtp_proto.h"
#include "map.h"
diff --git a/src/webui.c b/src/webui.c
index 8b0fd8787..0a542993f 100644
--- a/src/webui.c
+++ b/src/webui.c
@@ -30,7 +30,6 @@
#include "protocol.h"
#include "upstream.h"
#include "cfg_file.h"
-#include "cfg_xml.h"
#include "map.h"
#include "dns.h"
#include "tokenizers/tokenizers.h"
diff --git a/src/worker.c b/src/worker.c
index 36d441d07..ddeadbd8e 100644
--- a/src/worker.c
+++ b/src/worker.c
@@ -32,7 +32,6 @@
#include "protocol.h"
#include "upstream.h"
#include "cfg_file.h"
-#include "cfg_xml.h"
#include "url.h"
#include "message.h"
#include "map.h"