+++ /dev/null
-/*-
- * Copyright 2016 Vsevolod Stakhov
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "config.h"
-#include "printf.h"
-#include "message.h"
-#include "util.h"
-#include "content_type.h"
-
-static gdouble total_time = 0;
-static gint total_parsed = 0;
-static gint total_valid = 0;
-static gint total_type = 0;
-static gint total_subtype = 0;
-static gint total_charset = 0;
-static gint total_attrs = 0;
-static gint total_boundaries = 0;
-static gboolean verbose = 1;
-
-#define MODE_NORMAL 0
-#define MODE_GMIME 1
-#define MODE_COMPARE 2
-
-static void
-rspamd_process_file (const gchar *fname, gint mode)
-{
- rspamd_mempool_t *pool;
- GIOChannel *f;
- GError *err = NULL;
- GString *buf;
- struct rspamd_content_type *ct;
- gdouble t1, t2;
- rspamd_ftok_t t;
-
- f = g_io_channel_new_file (fname, "r", &err);
-
- if (!f) {
- rspamd_fprintf (stderr, "cannot open %s: %e\n", fname, err);
- g_error_free (err);
-
- return;
- }
-
- g_io_channel_set_encoding (f, NULL, NULL);
- buf = g_string_sized_new (8192);
- pool = rspamd_mempool_new (rspamd_mempool_suggest_size (), "test");
-
- while (g_io_channel_read_line_string (f, buf, NULL, &err)
- == G_IO_STATUS_NORMAL) {
-
- while (buf->len > 0 && g_ascii_isspace (buf->str[buf->len - 1])) {
- buf->len --;
- }
-
- if (mode == MODE_NORMAL) {
- t1 = rspamd_get_virtual_ticks ();
- ct = rspamd_content_type_parse (buf->str, buf->len, pool);
- t2 = rspamd_get_virtual_ticks ();
- }
- else {
- rspamd_fprintf (stderr, "gmime is no longer supported\n");
- exit (EXIT_FAILURE);
- }
-
- total_time += t2 - t1;
- total_parsed ++;
-
- if (mode == MODE_NORMAL) {
-
- if (ct) {
- total_valid ++;
-
- if (ct->type.len > 0) {
- total_type ++;
- }
- if (ct->subtype.len > 0) {
- total_subtype ++;
- }
- if (ct->charset.len > 0) {
- total_charset ++;
- }
- if (ct->boundary.len > 0) {
- total_boundaries ++;
- }
- if (ct->attrs) {
- total_attrs ++;
- }
- }
- }
- }
-
- if (err) {
- rspamd_fprintf (stderr, "cannot read %s: %e\n", fname, err);
- g_error_free (err);
- }
-
- g_io_channel_unref (f);
- g_string_free (buf, TRUE);
- rspamd_mempool_delete (pool);
-}
-
-int
-main (int argc, char **argv)
-{
- gint i, start = 1, mode = MODE_NORMAL;
-
- if (argc > 2 && *argv[1] == '-') {
- start = 2;
-
- if (argv[1][1] == 'g') {
- mode = MODE_GMIME;
- }
- else if (argv[1][1] == 'c') {
- mode = MODE_COMPARE;
- }
- }
-
- for (i = start; i < argc; i ++) {
- if (argv[i]) {
- rspamd_process_file (argv[i], mode);
- }
- }
-
- if (mode != MODE_COMPARE) {
- rspamd_printf ("Parsed %d received headers in %.3f seconds\n"
- "Total valid (has type): %d\n"
- "Total known type: %d\n"
- "Total known subtype: %d\n"
- "Total known charset: %d\n"
- "Total has attrs: %d\n"
- "Total has boundaries: %d\n",
- total_parsed, total_time,
- total_valid, total_type,
- total_subtype, total_charset,
- total_attrs,
- total_boundaries);
- }
- else {
- rspamd_printf ("Parsed %d received headers in %.3f seconds\n"
- "Total valid (parsed by both): %d\n"
- "Total same type: %d\n"
- "Total same subtype: %d\n"
- "Total same charset: %d\n"
- "Total same boundaries: %d\n",
- total_parsed, total_time,
- total_valid, total_type,
- total_subtype, total_charset,
- total_boundaries);
- }
-
- return 0;
-}
+++ /dev/null
-/*-
- * Copyright 2016 Vsevolod Stakhov
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "config.h"
-#include "printf.h"
-#include "message.h"
-#include "smtp_parsers.h"
-
-static gdouble total_time = 0;
-static gint total_parsed = 0;
-static gint total_valid = 0;
-static gint total_real_ip = 0;
-static gint total_real_host = 0;
-static gint total_known_proto = 0;
-static gint total_known_ts = 0;
-static gint total_known_for = 0;
-
-static void
-rspamd_process_file (const gchar *fname)
-{
- struct rspamd_task *task;
- GIOChannel *f;
- GError *err = NULL;
- GString *buf;
- struct received_header rh;
- gdouble t1, t2;
-
- f = g_io_channel_new_file (fname, "r", &err);
-
- if (!f) {
- rspamd_fprintf (stderr, "cannot open %s: %e\n", fname, err);
- g_error_free (err);
-
- return;
- }
-
- g_io_channel_set_encoding (f, NULL, NULL);
- buf = g_string_sized_new (8192);
- task = g_malloc0 (sizeof (*task));
- task->task_pool = rspamd_mempool_new (rspamd_mempool_suggest_size (), "test");
-
- while (g_io_channel_read_line_string (f, buf, NULL, &err)
- == G_IO_STATUS_NORMAL) {
-
- while (buf->len > 0 && g_ascii_isspace (buf->str[buf->len - 1])) {
- buf->len --;
- }
-
- t1 = rspamd_get_virtual_ticks ();
- rspamd_smtp_received_parse (task, buf->str, buf->len, &rh);
- t2 = rspamd_get_virtual_ticks ();
-
- total_time += t2 - t1;
- total_parsed ++;
-
- if (rh.addr) {
- total_real_ip ++;
- }
- if (rh.real_hostname) {
- total_real_host ++;
- }
- if (rh.type != RSPAMD_RECEIVED_UNKNOWN) {
- total_known_proto ++;
- }
-
- if (rh.by_hostname || rh.timestamp > 0) {
- total_valid ++;
- }
-
- if (rh.timestamp != 0) {
- total_known_ts ++;
- }
-
- if (rh.for_mbox) {
- total_known_for ++;
- }
- }
-
- if (err) {
- rspamd_fprintf (stderr, "cannot read %s: %e\n", fname, err);
- g_error_free (err);
- }
-
- g_io_channel_unref (f);
- g_string_free (buf, TRUE);
- rspamd_mempool_delete (task->task_pool);
- g_free (task);
-}
-
-int
-main (int argc, char **argv)
-{
- gint i;
-
- for (i = 1; i < argc; i ++) {
- if (argv[i]) {
- rspamd_process_file (argv[i]);
- }
- }
-
- rspamd_printf ("Parsed %d received headers in %.3f seconds\n"
- "Total valid (has by part): %d\n"
- "Total real ip: %d\n"
- "Total real host: %d\n"
- "Total known proto: %d\n"
- "Total known timestamp: %d\n"
- "Total known for: %d\n",
- total_parsed, total_time,
- total_valid, total_real_ip,
- total_real_host, total_known_proto,
- total_known_ts,
- total_known_for);
-
- return 0;
-}