Ver código fonte

[Rework] Finally remove gmime dependency from Rspamd

tags/1.5.0
Vsevolod Stakhov 7 anos atrás
pai
commit
7bf934ec68

+ 0
- 21
CMakeLists.txt Ver arquivo

@@ -51,7 +51,6 @@ OPTION(ENABLE_SQLITE "Find and link with sqlite3 library [default: OFF]"
OPTION(ENABLE_HIREDIS "Find and link with external redis library [default: ON]" ON)
OPTION(ENABLE_URL_INCLUDE "Enable urls in ucl includes (requires libcurl or libfetch) [default: OFF]" OFF)
OPTION(NO_SHARED "Build internal libs static [default: ON]" ON)
OPTION(FORCE_GMIME24 "Link with gmime2.4 [default: OFF]" OFF)
OPTION(INSTALL_EXAMPLES "Install examples [default: OFF]" OFF)
OPTION(INSTALL_WEBUI "Install web interface [default: ON]" ON)
OPTION(WANT_SYSTEMD_UNITS "Install systemd unit files on Linux [default: OFF]" OFF)
@@ -662,22 +661,6 @@ IF(ENABLE_JEMALLOC MATCHES "ON")
ROOT ${JEMALLOC_ROOT_DIR} MODULES jemalloc)
SET(WITH_JEMALLOC "1")
ENDIF()
ProcessPackage(GMIME LIBRARY gmime-2.6 gmime-2.4 gmime-2.2 gmime-2
INCLUDE gmime/gmime.h
INCLUDE_SUFFIXES include/gmime include/gmime-2.0 include/gmime-2.4 include/gmime-2.6
ROOT ${GMIME_ROOT_DIR} MODULES gmime-2.6 gmime-2.4 gmime-2.0)
IF(GMIME_ROOT_DIR)
LIST(APPEND RSPAMD_REQUIRED_LIBRARIES "-lz")
ENDIF()
ProcessPackage(GIO LIBRARY gio-2.0 INCLUDE glib.h
INCLUDE_SUFFIXES include/glib include/glib-2.0
ROOT ${GLIB_ROOT_DIR} MODULES gio-no-export-2.0>=2.28 gio-2.0>=2.28)
ProcessPackage(GOBJECT LIBRARY gobject-2.0 INCLUDE glib.h
INCLUDE_SUFFIXES include/glib include/glib-2.0
ROOT ${GLIB_ROOT_DIR} MODULES gobject-no-export-2.0>=2.28 gobject-2.0>=2.28)
ProcessPackage(GMODULE2 LIBRARY gmodule-2.0 INCLUDE glib.h
INCLUDE_SUFFIXES include/glib include/glib-2.0
ROOT ${GLIB_ROOT_DIR} MODULES gmodule-no-export-2.0>=2.28 gmodule-2.0>=2.28)
ProcessPackage(GLIB2 LIBRARY glib-2.0 INCLUDE glib.h
INCLUDE_SUFFIXES include/glib include/glib-2.0
ROOT ${GLIB_ROOT_DIR} MODULES glib-2.0>=2.28)
@@ -746,10 +729,6 @@ ENDIF ()
#Check for openssl (required for dkim)
SET(HAVE_OPENSSL 1)

IF(GMIME2_VERSION VERSION_GREATER "2.4.0" OR NOT GMIME2_VERSION)
SET(GMIME24 1)
ENDIF()

IF(ENABLE_HIREDIS MATCHES "ON")
ADD_SUBDIRECTORY(contrib/hiredis)
SET(WITH_HIREDIS 1)

+ 0
- 1
config.h.in Ver arquivo

@@ -9,7 +9,6 @@
#cmakedefine GLIB_HASH_COMPAT 1
#cmakedefine GLIB_RE_COMPAT 1
#cmakedefine GLIB_UNISCRIPT_COMPAT 1
#cmakedefine GMIME24 1
#cmakedefine HAVE_AIO_H 1
#cmakedefine HAVE_ARPA_INET_H 1
#cmakedefine HAVE_ASM_PAUSE 1

+ 0
- 1
src/controller.c Ver arquivo

@@ -3198,7 +3198,6 @@ start_controller_worker (struct rspamd_worker *worker)
event_base_loop (ctx->ev_base, 0);
rspamd_worker_block_signals ();

g_mime_shutdown ();
rspamd_stat_close ();
rspamd_http_router_free (ctx->http);
rspamd_log_close (worker->srv->logger);

+ 0
- 3
src/libmime/mime_expressions.c Ver arquivo

@@ -1750,9 +1750,6 @@ rspamd_content_type_check (struct rspamd_task *task,
}
}

#ifndef GMIME24
g_object_unref (part);
#endif
if (check_subtype) {
param_data = &ct->subtype;
}

+ 1
- 0
src/libserver/protocol.c Ver arquivo

@@ -27,6 +27,7 @@
#include "cryptobox.h"
#include "contrib/zstd/zstd.h"
#include "lua/lua_common.h"
#include "unix-std.h"
#include <math.h>

/* Max line size */

+ 0
- 2
src/libserver/task.h Ver arquivo

@@ -24,8 +24,6 @@
#include "dns.h"
#include "re_cache.h"

#include <gmime/gmime.h>

enum rspamd_command {
CMD_CHECK,
CMD_SYMBOLS,

+ 0
- 6
src/libutil/util.c Ver arquivo

@@ -2105,11 +2105,6 @@ rspamd_init_libs (void)
rlim.rlim_max = rlim.rlim_cur;
setrlimit (RLIMIT_STACK, &rlim);

#ifdef GMIME_ENABLE_RFC2047_WORKAROUNDS
g_mime_init (GMIME_ENABLE_RFC2047_WORKAROUNDS);
#else
g_mime_init (0);
#endif
ctx->libmagic = magic_open (MAGIC_MIME|MAGIC_NO_CHECK_COMPRESS|
MAGIC_NO_CHECK_ELF|MAGIC_NO_CHECK_TAR);
ctx->local_addrs = rspamd_inet_library_init ();
@@ -2291,7 +2286,6 @@ rspamd_deinit_libs (struct rspamd_external_libs_ctx *ctx)
}

g_free (ctx->ottery_cfg);
g_mime_shutdown ();

#ifdef HAVE_OPENSSL
EVP_cleanup ();

+ 0
- 1
src/rspamd_proxy.c Ver arquivo

@@ -1493,7 +1493,6 @@ start_rspamd_proxy (struct rspamd_worker *worker)
event_base_loop (ctx->ev_base, 0);
rspamd_worker_block_signals ();

g_mime_shutdown ();
rspamd_log_close (worker->srv->logger);

if (ctx->key) {

+ 1
- 1
src/worker.c Ver arquivo

@@ -36,6 +36,7 @@
#include "utlist.h"
#include "libutil/http_private.h"
#include "monitored.h"
#include "unix-std.h"

#include "lua/lua_common.h"

@@ -633,7 +634,6 @@ start_worker (struct rspamd_worker *worker)
event_base_loop (ctx->ev_base, 0);
rspamd_worker_block_signals ();

g_mime_shutdown ();
rspamd_stat_close ();
rspamd_log_close (worker->srv->logger);


+ 2
- 116
utils/content_type_bench.c Ver arquivo

@@ -19,7 +19,6 @@
#include "message.h"
#include "util.h"
#include "content_type.h"
#include <gmime/gmime.h>

static gdouble total_time = 0;
static gint total_parsed = 0;
@@ -44,7 +43,6 @@ rspamd_process_file (const gchar *fname, gint mode)
GString *buf;
struct rspamd_content_type *ct;
gdouble t1, t2;
GMimeContentType *gct;
rspamd_ftok_t t;

f = g_io_channel_new_file (fname, "r", &err);
@@ -72,16 +70,9 @@ rspamd_process_file (const gchar *fname, gint mode)
ct = rspamd_content_type_parse (buf->str, buf->len, pool);
t2 = rspamd_get_virtual_ticks ();
}
else if (mode == MODE_GMIME) {
t1 = rspamd_get_virtual_ticks ();
gct = g_mime_content_type_new_from_string (buf->str);
t2 = rspamd_get_virtual_ticks ();
}
else {
t1 = rspamd_get_virtual_ticks ();
ct = rspamd_content_type_parse (buf->str, buf->len, pool);
gct = g_mime_content_type_new_from_string (buf->str);
t2 = rspamd_get_virtual_ticks ();
rspamd_fprintf ("gmime is no longer supported\n");
exit (EXIT_FAILURE);
}

total_time += t2 - t1;
@@ -109,107 +100,6 @@ rspamd_process_file (const gchar *fname, gint mode)
}
}
}
else if (mode == MODE_GMIME) {
if (gct) {
total_valid ++;

if (g_mime_content_type_get_media_type (gct)) {
total_type ++;
}
if (g_mime_content_type_get_media_subtype (gct)) {
total_subtype ++;
}
if (g_mime_content_type_get_parameter (gct, "charset")) {
total_charset ++;
}
if (g_mime_content_type_get_parameter (gct, "boundary")) {
total_boundaries ++;
}
if (g_mime_content_type_get_params (gct)) {
total_attrs ++;
}

g_object_unref (gct);
}
}
else {
if (gct && ct) {
total_valid ++;

if (g_mime_content_type_get_media_type (gct) && ct->type.len) {
t.begin = g_mime_content_type_get_media_type (gct);
t.len = strlen (t.begin);

if (rspamd_ftok_casecmp (&ct->type, &t) == 0) {
total_type ++;
}
else if (verbose) {
rspamd_fprintf (stderr, "type: '%*s'(rspamd) '%s'gmime\n",
(gint)ct->type.len, ct->type.begin,
t.begin);
}
}
if (g_mime_content_type_get_media_subtype (gct) && ct->subtype.len) {
t.begin = g_mime_content_type_get_media_subtype (gct);
t.len = strlen (t.begin);

if (rspamd_ftok_casecmp (&ct->subtype, &t) == 0) {
total_subtype ++;
}
else if (verbose) {
rspamd_fprintf (stderr, "subtype: '%*s'(rspamd) '%s'gmime\n",
(gint)ct->subtype.len, ct->subtype.begin,
t.begin);
}
}
if (g_mime_content_type_get_parameter (gct, "charset") && ct->charset.len) {
t.begin = g_mime_content_type_get_parameter (gct, "charset");
t.len = strlen (t.begin);

if (rspamd_ftok_casecmp (&ct->charset, &t) == 0) {
total_charset ++;
}
else if (verbose) {
rspamd_fprintf (stderr, "charset: '%*s'(rspamd) '%s'gmime\n",
(gint)ct->charset.len, ct->charset.begin,
t.begin);
}
}
else if (g_mime_content_type_get_parameter (gct, "charset")) {
if (verbose) {
rspamd_fprintf (stderr, "charset: '%s'gmime\n",
g_mime_content_type_get_parameter (gct, "charset"));
}
}
if (g_mime_content_type_get_parameter (gct, "boundary") && ct->boundary.len) {
t.begin = g_mime_content_type_get_parameter (gct, "boundary");
t.len = strlen (t.begin);

if (rspamd_ftok_casecmp (&ct->boundary, &t) == 0) {
total_boundaries ++;
}
else if (verbose) {
rspamd_fprintf (stderr, "boundary: '%*s'(rspamd) '%s'gmime\n",
(gint)ct->boundary.len, ct->boundary.begin,
t.begin);
}
}
else if (g_mime_content_type_get_parameter (gct, "boundary")) {
if (verbose) {
rspamd_fprintf (stderr, "boundary: '%s'gmime\n",
g_mime_content_type_get_parameter (gct, "boundary"));
}
}
}
else if (verbose) {
rspamd_fprintf (stderr, "cannot parse: %v, %d(rspamd), %d(gmime)\n",
buf, ct ? 1 : 0, gct ? 1 : 0);
}

if (gct) {
g_object_unref (gct);
}
}
}

if (err) {
@@ -227,8 +117,6 @@ main (int argc, char **argv)
{
gint i, start = 1, mode = MODE_NORMAL;

g_mime_init (0);

if (argc > 2 && *argv[1] == '-') {
start = 2;

@@ -273,7 +161,5 @@ main (int argc, char **argv)
total_boundaries);
}

g_mime_shutdown ();

return 0;
}

+ 10
- 5
utils/mime_tool.c Ver arquivo

@@ -22,7 +22,6 @@
#include "task.h"
#include "mime_parser.h"
#include "unix-std.h"
#include <gmime/gmime.h>

#define MODE_NORMAL 0
#define MODE_GMIME 1
@@ -75,6 +74,7 @@ rspamd_show_message (struct rspamd_mime_part *part)
part, part->parent_part);
}

#if 0
static void
mime_foreach_callback (GMimeObject * parent,
GMimeObject * part,
@@ -114,7 +114,7 @@ mime_foreach_callback (GMimeObject * parent,
g_mime_content_type_get_media_subtype (type));
}
}
#endif
static void
rspamd_process_file (struct rspamd_config *cfg, const gchar *fname, gint mode)
{
@@ -123,10 +123,12 @@ rspamd_process_file (struct rspamd_config *cfg, const gchar *fname, gint mode)
gpointer map;
struct stat st;
GError *err = NULL;
#if 0
GMimeMessage *message;
GMimeParser *parser;
GMimeStream *stream;
GByteArray tmp;
#endif
struct rspamd_mime_part *part;
guint i;
gdouble ts1, ts2;
@@ -163,6 +165,7 @@ rspamd_process_file (struct rspamd_config *cfg, const gchar *fname, gint mode)
g_error_free (err);
}
}
#if 0
else if (mode == MODE_GMIME) {
tmp.data = map;
tmp.len = st.st_size;
@@ -171,7 +174,7 @@ rspamd_process_file (struct rspamd_config *cfg, const gchar *fname, gint mode)
parser = g_mime_parser_new_with_stream (stream);
message = g_mime_parser_construct_message (parser);
}
#endif
ts2 = rspamd_get_ticks ();
total_time += ts2 - ts1;

@@ -190,16 +193,19 @@ rspamd_process_file (struct rspamd_config *cfg, const gchar *fname, gint mode)
}
}
}
#if 0
else if (mode == MODE_GMIME) {
g_mime_message_foreach (message, mime_foreach_callback, NULL);
}
#endif

rspamd_task_free (task);
munmap (map, st.st_size);
#if 0
if (mode == MODE_GMIME) {
g_object_unref (message);
}
#endif
}

int
@@ -237,7 +243,6 @@ main (int argc, char **argv)

rspamd_log_close (logger);
REF_RELEASE (cfg);
g_mime_shutdown ();

return 0;
}

Carregando…
Cancelar
Salvar