diff options
author | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2009-03-23 14:10:07 +0300 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2009-03-23 14:10:07 +0300 |
commit | c79b5ccd22cbc1c273479f4f88189a18effda533 (patch) | |
tree | 1741743779a70146a61cd1767936aa43d671e36b /perl/Rspamd | |
parent | afdaddc4d0745a5bcefad73dd74fd4c03ae3de15 (diff) | |
download | rspamd-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.xs | 21 | ||||
-rw-r--r-- | perl/Rspamd/TextPart.xs | 40 |
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 |