]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Use raw more intentionally in a client
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 21 Jan 2022 21:08:16 +0000 (21:08 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 21 Jan 2022 21:08:16 +0000 (21:08 +0000)
--raw flag now means raw **input**, and there is a special flag to emit
reply in ucl. Previously, `--raw` and `--ucl` had the same meaning which
was stupid. Now `--raw` is an input flag whilst `--ucl` is an output flag
as intended.

src/client/rspamc.c

index 3760c62e043267e4b2de4f97c9eea707be550476..0a49c1c0453e68aec30b8d019bd29f87fd599b8a 100644 (file)
@@ -57,6 +57,7 @@ static gboolean json = FALSE;
 static gboolean compact = FALSE;
 static gboolean headers = FALSE;
 static gboolean raw = FALSE;
+static gboolean ucl_reply = FALSE;
 static gboolean extended_urls = FALSE;
 static gboolean mime_output = FALSE;
 static gboolean empty_input = FALSE;
@@ -130,9 +131,9 @@ static GOptionEntry entries[] =
        { "compact", '\0', 0, G_OPTION_ARG_NONE, &compact, "Output compact json reply", NULL},
        { "headers", 0, 0, G_OPTION_ARG_NONE, &headers, "Output HTTP headers",
          NULL },
-       { "raw", 0, 0, G_OPTION_ARG_NONE, &raw, "Output raw reply from rspamd",
+       { "raw", 0, 0, G_OPTION_ARG_NONE, &raw, "Input is a raw file, not an email file",
          NULL },
-       { "ucl", 0, 0, G_OPTION_ARG_NONE, &raw, "Output ucl reply from rspamd",
+       { "ucl", 0, 0, G_OPTION_ARG_NONE, &ucl_reply, "Output ucl reply from rspamd",
          NULL },
        { "max-requests", 'n', 0, G_OPTION_ARG_INT, &max_requests,
          "Maximum count of parallel requests to rspamd", NULL },
@@ -406,7 +407,7 @@ read_cmd_line (gint *argc, gchar ***argv)
        }
 
        if (json || compact) {
-               raw = TRUE;
+               ucl_reply = TRUE;
        }
        /* Argc and argv are shifted after this function */
        g_option_context_free (context);
@@ -635,6 +636,10 @@ add_options (GQueue *opts)
                ADD_CLIENT_FLAG (flagbuf, "pass_all");
        }
 
+       if (raw) {
+               ADD_CLIENT_HEADER (opts, "Raw", "yes");
+       }
+
        if (classifier) {
                ADD_CLIENT_HEADER (opts, "Classifier", classifier);
        }
@@ -1404,7 +1409,7 @@ rspamc_mime_output (FILE *out, ucl_object_t *result, GString *input,
                        }
                }
 
-               if (json || raw || compact) {
+               if (json || ucl_reply || compact) {
                        /* We also append json data as a specific header */
                        if (json) {
                                json_header = ucl_object_emit (result,
@@ -1482,7 +1487,7 @@ rspamc_client_execute_cmd (struct rspamc_command *cmd, ucl_object_t *result,
                        rspamc_mime_output (out, result, input, time, err);
                }
                else if (result) {
-                       if (raw || cmd->command_output_func == NULL) {
+                       if (ucl_reply || cmd->command_output_func == NULL) {
                                if (json) {
                                        ucl_out = ucl_object_emit (result,
                                                        compact ? UCL_EMIT_JSON_COMPACT : UCL_EMIT_JSON);
@@ -1571,7 +1576,7 @@ rspamc_client_cb (struct rspamd_client_connection *conn,
                                if (headers && msg != NULL) {
                                        rspamc_output_headers (out, msg);
                                }
-                               if (raw || cmd->command_output_func == NULL) {
+                               if (ucl_reply || cmd->command_output_func == NULL) {
                                        if (cmd->need_input) {
                                                ucl_object_insert_key (result,
                                                                ucl_object_fromstring (cbdata->filename),
@@ -1611,15 +1616,15 @@ rspamc_client_cb (struct rspamd_client_connection *conn,
                                rspamd_fprintf (out, "%s\n", err->message);
 
                                if (json && msg != NULL) {
-                                       const gchar *raw;
+                                       const gchar *raw_body;
                                        gsize rawlen;
 
-                                       raw = rspamd_http_message_get_body (msg, &rawlen);
+                                       raw_body = rspamd_http_message_get_body (msg, &rawlen);
 
-                                       if (raw) {
+                                       if (raw_body) {
                                                /* We can also output the resulting json */
                                                rspamd_fprintf (out, "%*s\n", (gint)(rawlen - bodylen),
-                                                               raw);
+                                                               raw_body);
                                        }
                                }
                        }