summaryrefslogtreecommitdiffstats
path: root/perl/Rspamd
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rambler-co.ru>2009-03-23 14:10:07 +0300
committerVsevolod Stakhov <vsevolod@rambler-co.ru>2009-03-23 14:10:07 +0300
commitc79b5ccd22cbc1c273479f4f88189a18effda533 (patch)
tree1741743779a70146a61cd1767936aa43d671e36b /perl/Rspamd
parentafdaddc4d0745a5bcefad73dd74fd4c03ae3de15 (diff)
downloadrspamd-c79b5ccd22cbc1c273479f4f88189a18effda533.tar.gz
rspamd-c79b5ccd22cbc1c273479f4f88189a18effda533.zip
* Fix error in expression parser that causes bad errors with expressions that have regexp at the end
* Improve test for fuzzy hashes * Add new object - TextPart to perl XS library that allows access to stripped parts and fuzzy hashes * Add documentation for expressions parser and fot Mail::Rspamd::TextPart * Allways calculate fuzzy hash for text parts * Store text parts separately from other parts * Add compare_parts_distance for expressions that calculates difference in 2 parts messages * Do not try to substitute variables in empty strings
Diffstat (limited to 'perl/Rspamd')
-rw-r--r--perl/Rspamd/Task.xs21
-rw-r--r--perl/Rspamd/TextPart.xs40
2 files changed, 61 insertions, 0 deletions
diff --git a/perl/Rspamd/Task.xs b/perl/Rspamd/Task.xs
index 16719ef7b..31928bf7b 100644
--- a/perl/Rspamd/Task.xs
+++ b/perl/Rspamd/Task.xs
@@ -81,3 +81,24 @@ rspamd_task_get_urls (task)
OUTPUT:
RETVAL
+AV*
+rspamd_task_get_text_parts (task)
+ Mail::Rspamd::Task task
+ PREINIT:
+ AV* retav;
+ GList *cur;
+ SV* ps;
+ CODE:
+ retav = newAV ();
+ cur = g_list_first (task->text_parts);
+ while (cur) {
+ ps = newSViv (0);
+ sv_setref_pv (ps, "Mail::Rspamd::TextPart", (Mail__Rspamd__TextPart)(cur->data));
+ av_push(retav, ps);
+ cur = g_list_next (task->text_parts);
+ }
+
+ RETVAL = retav;
+ OUTPUT:
+ RETVAL
+
diff --git a/perl/Rspamd/TextPart.xs b/perl/Rspamd/TextPart.xs
new file mode 100644
index 000000000..485ee7bcc
--- /dev/null
+++ b/perl/Rspamd/TextPart.xs
@@ -0,0 +1,40 @@
+MODULE = Mail::Rspamd PACKAGE = Mail::Rspamd::TextPart PREFIX = rspamd_text_part_
+
+SV *
+rspamd_text_part_get_content (mime_part)
+ Mail::Rspamd::TextPart mime_part
+ PREINIT:
+ SV* content;
+ CODE:
+ ST(0) = &PL_sv_undef;
+ content = sv_newmortal ();
+ SvUPGRADE (content, SVt_PV);
+ SvREADONLY_on (content);
+ SvPVX(content) = (char *) (mime_part->content->data);
+ SvCUR_set (content, mime_part->content->len);
+ SvLEN_set (content, 0);
+ SvPOK_only (content);
+ ST(0) = content;
+
+char *
+rspamd_text_part_get_fuzzy (mime_part)
+ Mail::Rspamd::TextPart mime_part
+ CODE:
+ RETVAL = mime_part->fuzzy->hash_pipe;
+
+int
+rspamd_text_part_compare_distance (mime_part, other)
+ Mail::Rspamd::TextPart mime_part
+ Mail::Rspamd::TextPart other
+ CODE:
+ RETVAL = fuzzy_compare_hashes (mime_part->fuzzy, other->fuzzy);
+ OUTPUT:
+ RETVAL
+
+int
+rspamd_text_part_is_html (mime_part)
+ Mail::Rspamd::TextPart mime_part
+ CODE:
+ RETVAL = mime_part->is_html;
+ OUTPUT:
+ RETVAL