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.*;
case "mail.bounce": return METHOD;
case "mail.reject": return METHOD;
case "mail.my": return getSub("mail.my");
+ case "mail.dir": return METHOD;
+ case "mail.shell": return METHOD;
case "mail.my.prefs": try {
return new org.ibex.js.Directory(new File("/etc/org.ibex.mail.prefs"));
} catch (IOException e) { throw new JSExn(e.toString()); }
try {
if (name.equals("url.encode")) return JSU.S(java.net.URLEncoder.encode(JSU.toString(args[0])));
if (name.equals("mail.list")) return JSReflection.wrap(MailingList.getMailingList(JSU.toString(args[0])));
+ if (name.equals("mail.dir")) {
+ return new org.ibex.js.Directory(new File(JSU.toString(args[0])));
+ }
+ if (name.equals("mail.shell")) {
+ // FIXME: EEEEEVIL!
+ Log.warn("dbug", args[0].getClass().getName());
+ Log.warn("dbug", args[1].getClass().getName());
+ final Process p = Runtime.getRuntime().exec(JSU.toString(args[1]));
+ Message m = (Message)args[0];
+ new Thread() {
+ public void run() {
+ try {
+ BufferedReader br = new BufferedReader(new InputStreamReader(p.getErrorStream()));
+ String s = null;
+ while((s = br.readLine())!=null)
+ Log.warn("shell", s);
+ } catch (Exception e) { e.printStackTrace(); }
+ }
+ }.start();
+ OutputStream os = p.getOutputStream();
+ Stream stream = new Stream(os);
+ m.getStream().transcribe(stream);
+ stream.close();
+ p.waitFor();
+ return null;
+ }
if (name.equals("date")) { return new JSDate(args); }
if (name.equals("mail.send") || name.equals("send") || name.equals("mail.attempt") || name.equals("attempt")) {
boolean attempt = name.equals("mail.attempt") || name.equals("attempt");