From: adam Date: Sat, 15 Apr 2006 05:48:14 +0000 (+0000) Subject: added support for DCC, VipulRazor X-Git-Url: http://git.megacz.com/?p=org.ibex.mail.git;a=commitdiff_plain;h=06127bb081212cee67a63c429825b1a7de4fc41b added support for DCC, VipulRazor darcs-hash:20060415054814-5007d-883fbd2111dda1a940ccd99899868d74f8aee10b.gz --- diff --git a/src/org/ibex/mail/target/Script.java b/src/org/ibex/mail/target/Script.java index d493384..b509b86 100644 --- a/src/org/ibex/mail/target/Script.java +++ b/src/org/ibex/mail/target/Script.java @@ -4,6 +4,7 @@ package org.ibex.mail.target; import org.ibex.js.*; +import org.ibex.io.*; import org.ibex.util.*; import org.ibex.mail.*; import org.ibex.mail.filter.*; @@ -120,9 +121,13 @@ public class Script extends JS.Obj implements Target { case "mail.send": return METHOD; case "mail.attempt": return METHOD; case "mail.later": return Later.instance; - case "mail.drop": return Drop.instance; + case "mail.drop": return METHOD; + case "mail.razor": return getSub("mail.razor"); + case "mail.razor.check": return METHOD; + case "mail.dcc": return getSub("mail.dcc"); + case "mail.dcc.check": return METHOD; case "mail.bounce": return METHOD; - case "mail.error": return METHOD; + case "mail.reject": return METHOD; case "mail.my": return getSub("mail.my"); case "mail.my.prefs": try { return new org.ibex.js.Directory(new File("/etc/org.ibex.mail.prefs")); @@ -184,6 +189,22 @@ public class Script extends JS.Obj implements Target { if (!ok && !attempt) throw new JSExn("SMTP server rejected message"); return JSU.B(ok); } + if (name.equals("mail.razor.check")) { + Process p = Runtime.getRuntime().exec("razor-check"); + ((Message)args[0]).getStream().transcribe(new Stream(p.getOutputStream()), true); + return JSU.N(p.waitFor()); + } + 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); + StringBuffer ret = new StringBuffer(); + new Stream(p.getInputStream()).transcribe(ret); + p.waitFor(); + return JSU.S(ret.toString()); + } + if (name.equals("mail.drop")) { + return args.length==0 ? new Drop() : new Drop(JSU.toString(args[0])); + } if (name.equals("mail.bounce")) { return new JSTarget() { public void accept(Message m) throws MailException { @@ -210,11 +231,11 @@ public class Script extends JS.Obj implements Target { } if (name.equals("mail.forward") || name.equals("forward")) { Message m2 = Message.newMessage(Script.this.m, Script.this.m.envelopeFrom, new Address(JSU.toString(a))); - org.ibex.mail.protocol.SMTP.Outgoing.attempt(m2); + org.ibex.mail.protocol.SMTP.Outgoing.attempt(m2, false); return Drop.instance; } - if (name.equals("mail.error")) - throw new MailException.Malformed(JSU.toString(a)); + if (name.equals("mail.reject")) + return new Reject(JSU.toString(a)); if (name.equals("log.debug") || name.equals("debug")) { JSU.debug(a== null ? "**null**" : JSU.toString(a)); return null; } if (name.equals("log.info") || name.equals("info")) { JSU.info(a== null ? "**null**" : JSU.toString(a)); return null; } if (name.equals("log.warn") || name.equals("warn")) { JSU.warn(a== null ? "**null**" : JSU.toString(a)); return null; }