#endif
-static void
+void
rspamd_image_normalize (struct rspamd_task *task, struct rspamd_image *img)
{
#ifdef USABLE_GD
return;
}
+ if (img->data->len > task->cfg->max_pic_size) {
+ return;
+ }
+
if (rspamd_image_check_hash (task, img)) {
return;
}
img->parent = part;
- if (img->data->len <= task->cfg->max_pic_size) {
- rspamd_image_normalize (task, img);
- }
- else {
- msg_info_task ("skip normalization for image %s: too large: %z",
- img->filename, img->data->len);
- }
part->flags |= RSPAMD_MIME_PART_IMAGE;
part->specific.img = img;
double max_score;
gboolean read_only;
gboolean skip_unknown;
+ gboolean fuzzy_images;
gint learn_condition_cb;
};
rule->skip_unknown = ucl_obj_toboolean (value);
}
+ if ((value = ucl_object_lookup (obj, "fuzzy_images")) != NULL) {
+ rule->fuzzy_images = ucl_obj_toboolean (value);
+ }
+
if ((value = ucl_object_lookup (obj, "algorithm")) != NULL) {
rule->algorithm_str = ucl_object_tostring (value);
g_ptr_array_add (res, io);
}
+ if (rule->fuzzy_images) {
+ /* Try to normalize image */
+ if (!image->is_normalized) {
+ rspamd_image_normalize (task, image);
+ }
+ }
+
if (image->is_normalized) {
io = fuzzy_cmd_from_image_part (rule, c, flag, value,
task->task_pool,