
bugzilla-daemon at bugzilla
Sep 24, 2009, 9:42 AM
Post #1 of 1
(197 views)
Permalink
|
|
[Bug 6210] New: Support timestamp and modulo (%) in conditionals, e.g. if (time < 1253806618)
|
|
https://issues.apache.org/SpamAssassin/show_bug.cgi?id=6210 Summary: Support timestamp and modulo (%) in conditionals, e.g. if (time < 1253806618) Product: Spamassassin Version: unspecified Platform: Other OS/Version: All Status: NEW Severity: enhancement Priority: P5 Component: Rules AssignedTo: dev [at] spamassassin ReportedBy: apache [at] khopis Please allow if() to deal with time, date, and time of day, and add the modulo (%) operator to the acceptable arithmetic operators. This is specifically useful for rulesets that need to expire, like my bug 6114. (from the perldoc for Mail::SpamAssassin::Conf) > The conditional accepts a limited subset of perl for security -- > just enough to perform basic arithmetic comparisons. The following > input is accepted: > > numbers, whitespace, arithmetic operations and grouping > ( ) - + * / _ . , < = > ! ~ 0-9 whitespace > version > plugin(Name::Of::Plugin) (Uh, note that it doesn't mention || and && are acceptable...) I just want to add one arithmetic operator and three simple variables to that. Modulo and the first variable are trivial because they already exists in perl. The others should be all-but trivial. Formatted like the perldoc: time The UNIX time, seconds since 1970-01-01 00:00:00 UTC date The date in the form CCYYMMDDhhmm.ss (local time), so 200901021533.04 is 2009 January 2 3:33:04 PM. weektime Seconds since Sunday 00:00:00 (local time), H*3600+M*60+S, so 223021 = Tuesday at 13:57:01 (1:57:01p). You can get the time of day (in seconds) with (weektime % 86400). You can get the day of week with ( (weektime - weektime % 86400) / 86400). Examples: if (time < 1257698474) # before 45 days from now (`date -d '45 days' +%s`) ... endif # or by the math; y2k + 10y + 3 leap-days = 2010/1/1 00:00:00 UTC if (time < (946684800+((365*10+3)*24*60*60)) ) ... endif if (date < 201001010000) # before 2010-01-01 00:00:00 EDT .... endif # work week check ( is sunday or is saturday or is before 8a or is after 6p ) if (weektime < 86400 || weektime > 86400 * 6 || weektime % 86400 < 28800 || 64800 < weektime % 86400) ... endif -- Configure bugmail: https://issues.apache.org/SpamAssassin/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug.
|