X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fibex%2Fmail%2FScript.java;h=9459c1febf847e0d24134fa7e257c2aa670b35a6;hb=4b76a31e8f86bc8de673899bbb45252c01e9a0f6;hp=4c40be028aff6add89c23c1ff2d27ef00a93dbc8;hpb=98dd85a1dd1f82e8a5fd50369e6298843a5079e7;p=org.ibex.mail.git diff --git a/src/org/ibex/mail/Script.java b/src/org/ibex/mail/Script.java index 4c40be0..9459c1f 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,8 +135,12 @@ 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.verp": return getSub("mail.verp"); + case "mail.verp.check": return METHOD; case "mail.dcc": return getSub("mail.dcc"); case "mail.dcc.check": return METHOD; case "mail.bounce": return METHOD; @@ -237,6 +243,21 @@ 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.verp.check")) { + String ret = VERP.verpVerify(Address.parse(JSU.toString(a)), "SECRET".getBytes(), 0); + return ret==null ? null : JSU.S(ret); + } 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);