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)
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)
#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)
#include "message.h"
#include "util.h"
#include "content_type.h"
-#include <gmime/gmime.h>
static gdouble total_time = 0;
static gint total_parsed = 0;
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);
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;
}
}
}
- 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) {
{
gint i, start = 1, mode = MODE_NORMAL;
- g_mime_init (0);
-
if (argc > 2 && *argv[1] == '-') {
start = 2;
total_boundaries);
}
- g_mime_shutdown ();
-
return 0;
}
#include "task.h"
#include "mime_parser.h"
#include "unix-std.h"
-#include <gmime/gmime.h>
#define MODE_NORMAL 0
#define MODE_GMIME 1
part, part->parent_part);
}
+#if 0
static void
mime_foreach_callback (GMimeObject * parent,
GMimeObject * part,
g_mime_content_type_get_media_subtype (type));
}
}
-
+#endif
static void
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;
g_error_free (err);
}
}
+#if 0
else if (mode == MODE_GMIME) {
tmp.data = map;
tmp.len = st.st_size;
parser = g_mime_parser_new_with_stream (stream);
message = g_mime_parser_construct_message (parser);
}
-
+#endif
ts2 = rspamd_get_ticks ();
total_time += ts2 - ts1;
}
}
}
+#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
rspamd_log_close (logger);
REF_RELEASE (cfg);
- g_mime_shutdown ();
return 0;
}