From 9132708e0c39819b2ad5e97268c0f326a9d51325 Mon Sep 17 00:00:00 2001 From: adam Date: Sat, 1 Mar 2008 05:55:21 +0000 Subject: [PATCH] make questionable improvements to mail.clamav.check() darcs-hash:20080301055521-5007d-ab0d12520955c14cfbb8a9f79a04e8f16c3f46fb.gz --- src/org/ibex/mail/Script.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/org/ibex/mail/Script.java b/src/org/ibex/mail/Script.java index 4c40be0..3a829c6 100644 --- a/src/org/ibex/mail/Script.java +++ b/src/org/ibex/mail/Script.java @@ -13,6 +13,8 @@ import java.io.*; import java.util.*; import java.text.*; +// FIXME: check for binaries (razor, clamassassin, etc) and complain if not present + // // - better matching syntax: // - src-ip @@ -133,6 +135,8 @@ public class Script extends JS.Obj implements Target { case "mail.drop": return METHOD; case "mail.razor": return getSub("mail.razor"); case "mail.razor.check": return METHOD; + case "mail.clamav": return getSub("mail.clamav"); + case "mail.clamav.check": return METHOD; case "mail.procmail": /* FEATURE */ return null; case "mail.vacation": /* FEATURE */ return null; case "mail.dcc": return getSub("mail.dcc"); @@ -237,6 +241,17 @@ public class Script extends JS.Obj implements Target { ((Message)args[0]).getStream().transcribe(new Stream(p.getOutputStream()), true); return JSU.N(p.waitFor()); } + if (name.equals("mail.clamav.check")) { + // FIXME: this is returning "is-virus-laden" when clamdscan is unhappy -- BAD! + // should use error code: 0=clean, 1=virus, 2=malfunction + Process p = Runtime.getRuntime().exec("clamdscan - --stdout --quiet"); + ((Message)args[0]).getStream().transcribe(new Stream(p.getOutputStream()), true); + int result = p.waitFor(); + if (result==0) return JSU.N(0); + StringBuffer ret = new StringBuffer(); + new Stream(p.getInputStream()).transcribe(ret); + return JSU.S(ret.toString()); + } if (name.equals("mail.dcc.check")) { Process p = Runtime.getRuntime().exec(new String[] { "dccproc", "-H" }); ((Message)args[0]).getStream().transcribe(new Stream(p.getOutputStream()), true); -- 1.7.10.4