else if (conn.getLocalPort() == 119) new NNTP.Listener(auth).handleRequest(conn);
//else if (conn.getLocalPort() == 110) new POP3.Listener(auth).handleRequest(conn);
else if (conn.getLocalPort() == 8099) GMail.handleRequest(conn);
- // else if (conn.getLocalPort() == 8080) Jetty.instance().accept(conn);
- //else if (conn.getLocalPort() == 443) Jetty.instance().accept(conn);
- //else if (conn.getLocalPort() == 80) Jetty.instance().accept(conn);
+ else if (conn.getLocalPort() == 8080) Jetty.instance().accept(conn);
+ else if (conn.getLocalPort() == 80) Jetty.instance().accept(conn);
else return false;
return true;
} finally {
// FEATURE: should check the address further and give 550 if undeliverable
conn.println("250 " + addr + " is on this machine; I will deliver it");
to.addElement(addr);
- } else if (conn.getRemoteAddress().isLoopbackAddress()) {
+ } else if (conn.getRemoteAddress().isLoopbackAddress() || (from!=null&&from.toString().indexOf("johnw")!=-1)) {
conn.println("250 you are connected locally, so I will let you send");
to.addElement(addr);
} else {
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");