X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fibex%2Fmail%2FNNTP.java;h=d758d73ffae05cf50f0aed3b233642b9e8e704ba;hb=40e53cd3c7abe25902add4c97b8bc9202f3c8931;hp=a0d8dd652675cf16a3aae93d9eb1a4b0230d7ce3;hpb=73c4f25fcc07bcee4e3dde4539a9776094fe5187;p=org.ibex.mail.git diff --git a/src/org/ibex/mail/NNTP.java b/src/org/ibex/mail/NNTP.java index a0d8dd6..d758d73 100644 --- a/src/org/ibex/mail/NNTP.java +++ b/src/org/ibex/mail/NNTP.java @@ -13,6 +13,7 @@ package org.ibex.mail; import org.ibex.util.*; import org.ibex.io.*; +import org.ibex.net.*; import org.ibex.mail.target.*; import org.ibex.jinetd.*; import java.io.*; @@ -58,12 +59,12 @@ public class NNTP { } public static class MailboxWrapper implements Server { - private final Mailbox root; + private final MailTree root; private Mailbox current; private int ptr = 0; private boolean post; - public MailboxWrapper(Mailbox root) { this(root, false); } - public MailboxWrapper(Mailbox root, boolean post) { this.root = root; this.post = post; } + public MailboxWrapper(MailTree root) { this(root, false); } + public MailboxWrapper(MailTree root, boolean post) { this.root = root; this.post = post; } public boolean postok() { return post; } public void post(Message m) throws IOException { current.post(m); } public Group group(String s) { @@ -84,12 +85,13 @@ public class NNTP { Mailbox.Iterator it = current.iterator(q); if (!it.next()) return null; try { + // FIXME: UGLY! Message m = body ? it.cur() : Message.newMessage(new Fountain.StringFountain(it.head() + "\r\n")); return new Article(it.nntpNumber(), m); } catch (Exception e) { return null; } } public Group[] list() { return list(root, ""); } - private Group[] list(Mailbox who, String prefix) { + private Group[] list(MailTree who, String prefix) { Vec v = new Vec(); if (who == null) who = root; String[] s = who.children(); @@ -104,19 +106,19 @@ public class NNTP { } private void setgroup(String s) { - Mailbox ncurrent = root; + MailTree ncurrent = root; for(StringTokenizer st = new StringTokenizer(s, "."); ncurrent != null && st.hasMoreTokens(); ncurrent = ncurrent.slash(st.nextToken(), false)); - if (ncurrent!=null) current=ncurrent; + if (ncurrent!=null) current=ncurrent.getMailbox(); } private Group getgroup(String s) { - Mailbox box = root; + MailTree box = root; for(StringTokenizer st = new StringTokenizer(s, "."); box!=null && st.hasMoreTokens(); box = box.slash(st.nextToken(), false)); if (box==null) return null; - return new Group(s, true, 1, box.count(Query.all()), box.count(Query.all())); + return new Group(s, true, 1, box.getMailbox().count(Query.all()), box.getMailbox().count(Query.all())); } public Group[] newgroups(Date d, String[] distributions) { /* FEATURE */ return new Group[] { }; } @@ -144,7 +146,7 @@ public class NNTP { } int code = (head && body) ? 220 : head ? 221 : body ? 222 : 223; println(code + " " + a.num + " <" + a.message.messageid + "> get ready for some stuff..."); - if (head) println(a.message.headers.getString()); + if (head) { a.message.headers.getStream().transcribe(conn); println(); } if (head && body) println(); if (body) { Stream stream = a.message.getBody().getStream(); @@ -181,8 +183,7 @@ public class NNTP { pass = st.nextToken(); account = login.login(user, pass); if (account == null) { println("502 Invalid"); continue; } - Mailbox box = account.getMailbox(NNTP.class); - this.api = new MailboxWrapper(box, true); + this.api = new MailboxWrapper(account.getMailbox(NNTP.class), true); println("281 Good to go"); continue; } @@ -295,6 +296,7 @@ public class NNTP { } else { println("340 send the article"); StringBuffer buf = new StringBuffer(); + // FIXME: streaming? while(true) { String s = conn.readln(); if (s == null) throw new RuntimeException("connection closed");