|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Serge 2:5020/400 26 Dec 2003 06:46:23 To : Michael Kazakov Subject : Re: Вирусоспам на внешнем почтовике. Чем бороться? -------------------------------------------------------------------------------- Michael Kazakov wrote: >>>>>>Serge <genie@nsk.ru> writes: S>> Hужно дропать (уведомления - мне) письма от 135000 до 165000 байт. S>> Остальное - оставлять. MK> Уведомления - должно получиться, от ... до ... - не должно, кажется. Замечательно получается :) ##-------- popsneaker-0.6.2_ext_maxsize.patch --------## diff -ruN popsneaker-0.6.2/popsneaker/parser.cpp popsneaker-0.6.2_ext_maxsize/popsneaker/parser.cpp - --- popsneaker-0.6.2/popsneaker/parser.cpp 2002-10-22 23:37:36 +0700 +++ popsneaker-0.6.2_ext_maxsize/popsneaker/parser.cpp 2003-12-25 09:21:47 +0000 @@ -331,6 +331,7 @@ void Parser::maxsize(void){ Rule* rule = new Rule; + unsigned long size0; chkptr(rule); scanner.nextToken(); @@ -340,14 +341,20 @@ } if(scanner.getToken() == t_numeric) { - rule->set_maxsize(scanner.getNumeric()); + size0 = scanner.getNumeric(); + scanner.nextToken(); + if(scanner.getToken() == t_numeric) { + rule->set_maxsize(size0, scanner.getNumeric()); + scanner.nextToken(); + } else { + rule->set_maxsize(size0, (unsigned long)-1); + } } else { parse_error("size expected"); } rp.add(rule); - scanner.nextToken(); eoc(); } diff -ruN popsneaker-0.6.2/popsneaker/rule.cpp popsneaker-0.6.2_ext_maxsize/popsneaker/rule.cpp - --- popsneaker-0.6.2/popsneaker/rule.cpp 2002-10-22 23:38:31 +0700 +++ popsneaker-0.6.2_ext_maxsize/popsneaker/rule.cpp 2003-12-25 09:05:03 +0000 @@ -40,9 +40,10 @@ /** Setup a maxsize rule */ -void Rule::set_maxsize(unsigned long size){ +void Rule::set_maxsize(unsigned long size0, unsigned long size1){ type = RT_MAXSIZE; - maxsize = size; + maxsize[0] = size0; + maxsize[1] = size1; } @@ -233,10 +234,10 @@ /** Apply the maxsize rule on a mailheader */ mailaction Rule::applyMaxsize(MailHeader* header){ - if(header->size > maxsize) { + if(header->size > maxsize[0] && header->size <= maxsize[1]) { char buffer[64]; - sprintf(buffer, "mail (%10.2fKB) is bigger than %10.2fKB", \ - header->size / 1024.0, maxsize / 1024.0); + sprintf(buffer, "mail (%10.2fKB) is bigger than %10.2fKB and less than %10.2fKB", \ + header->size / 1024.0, maxsize[0] / 1024.0, maxsize[1] / 1024.0); header->reason = buffer; return (silent) ? MA_SDELETE : MA_DELETE; } else { diff -ruN popsneaker-0.6.2/popsneaker/rule.h popsneaker-0.6.2_ext_maxsize/popsneaker/rule.h - --- popsneaker-0.6.2/popsneaker/rule.h 2002-10-22 23:37:36 +0700 +++ popsneaker-0.6.2_ext_maxsize/popsneaker/rule.h 2003-12-25 09:48:47 +0000 @@ -40,7 +40,7 @@ ~Rule(); /** Setup a maxsize rule */ - void set_maxsize(unsigned long); + void set_maxsize(unsigned long, unsigned long); /** Setup an accept rule */ void set_accept(const char*); @@ -111,7 +111,7 @@ int options; // Options for the regular expression. private: bool silent; // Delete mail in silence. - unsigned long maxsize; // A maximum size for the mail. + unsigned long maxsize[2]; // A maximum size for the mail. mailaction score_action; // Action when score evaluation succeeds. public: long score_value; // The value for a score rule. ##-------- popsneaker-0.6.2_ext_maxsize.patch --------## теперь можно указывать необязательный второй агрумент maxsize, задающий верхнюю границу размера (если не указывать, считается 2^32-1) -- wbr, Serge --- ifmail v.2.15dev5.1 * Origin: Magistral Telecom JV. (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.linux/1184683c1fcec.html, оценка из 5, голосов 10
|