Author: dbkr
Date: 2006-08-31 01:04:33 +0000 (Thu, 31 Aug 2006)
New Revision: 10301
Removed:
trunk/apps/Freemail/src/thirdparty/
Modified:
trunk/apps/Freemail/src/freemail/MessageBank.java
trunk/apps/Freemail/src/freemail/OutboundContact.java
trunk/apps/Freemail/src/freemail/Postman.java
trunk/apps/Freemail/src/freemail/RTSFetcher.java
trunk/apps/Freemail/src/freemail/imap/IMAPHandler.java
trunk/apps/Freemail/src/freemail/smtp/SMTPHandler.java
trunk/apps/Freemail/src/freemail/utils/EmailAddress.java
Log:
Various fixes, including another windows colon fix and a fix for SMTP auth
login support (used by Outlook Express and just about nothing else).
Modified: trunk/apps/Freemail/src/freemail/MessageBank.java
===================================================================
--- trunk/apps/Freemail/src/freemail/MessageBank.java 2006-08-30 17:59:35 UTC
(rev 10300)
+++ trunk/apps/Freemail/src/freemail/MessageBank.java 2006-08-31 01:04:33 UTC
(rev 10301)
@@ -210,7 +210,9 @@
// make sure the old nextid file doesn't contain a
// value greater than our one
if (this.nextId() <= newid) {
- nidfile.renameTo(new File(this.dir, NIDFILE));
+ File main_nid_file = new File(this.dir,
NIDFILE);
+ main_nid_file.delete();
+ nidfile.renameTo(main_nid_file);
}
} catch (IOException ioe) {
// how to handle this?
Modified: trunk/apps/Freemail/src/freemail/OutboundContact.java
===================================================================
--- trunk/apps/Freemail/src/freemail/OutboundContact.java 2006-08-30
17:59:35 UTC (rev 10300)
+++ trunk/apps/Freemail/src/freemail/OutboundContact.java 2006-08-31
01:04:33 UTC (rev 10301)
@@ -514,6 +514,7 @@
fos.write(buf, 0, read);
}
+ fis.close();
fos.close();
} catch (IOException ioe) {
System.out.println("IO Error encountered whilst trying
to send message: "+ioe.getMessage()+" Will try again soon");
@@ -527,7 +528,6 @@
qm.slot = slot;
if (qm.setMessageFile(msg) && qm.saveProps()) {
- body.delete();
return true;
}
return false;
Modified: trunk/apps/Freemail/src/freemail/Postman.java
===================================================================
--- trunk/apps/Freemail/src/freemail/Postman.java 2006-08-30 17:59:35 UTC
(rev 10300)
+++ trunk/apps/Freemail/src/freemail/Postman.java 2006-08-31 01:04:33 UTC
(rev 10301)
@@ -39,7 +39,9 @@
if (first) {
if (!this.validateFrom(addr)) {
newmsg.removeHeader("From", froms[i]);
- newmsg.addHeader("From", "**SPOOFED!**
"+froms[i]);
+ EmailAddress e = new
EmailAddress(froms[i]);
+ e.user = "**SPOOFED** "+e.user;
+ newmsg.addHeader("From", e.toString());
}
} else {
newmsg.removeHeader("From", froms[i]);
Modified: trunk/apps/Freemail/src/freemail/RTSFetcher.java
===================================================================
--- trunk/apps/Freemail/src/freemail/RTSFetcher.java 2006-08-30 17:59:35 UTC
(rev 10300)
+++ trunk/apps/Freemail/src/freemail/RTSFetcher.java 2006-08-31 01:04:33 UTC
(rev 10301)
@@ -69,7 +69,7 @@
if (this.handle_rts(files[i])) {
files[i].delete();
} else {
- String[] parts = files[i].getName().split(":",
2);
+ String[] parts = files[i].getName().split(",",
2);
int tries;
if (parts.length < 2) {
@@ -141,7 +141,7 @@
if (result != null) {
System.out.println(keybase+slot+": got RTS!");
- File rts_dest = new File(this.contact_dir,
RTS_UNPROC_PREFIX + "-" + log.getAndIncUnprocNextId()+":0");
+ File rts_dest = new File(this.contact_dir,
RTS_UNPROC_PREFIX + "-" + log.getAndIncUnprocNextId()+",0");
// stick this message in the RTS 'inbox'
if (result.renameTo(rts_dest)) {
Modified: trunk/apps/Freemail/src/freemail/imap/IMAPHandler.java
===================================================================
--- trunk/apps/Freemail/src/freemail/imap/IMAPHandler.java 2006-08-30
17:59:35 UTC (rev 10300)
+++ trunk/apps/Freemail/src/freemail/imap/IMAPHandler.java 2006-08-31
01:04:33 UTC (rev 10301)
@@ -827,13 +827,9 @@
String mbname = trimQuotes(msg.args[0]);
- // for now
- if (!mbname.equalsIgnoreCase("INBOX")) {
- this.reply(msg, "BAD No such mailbox");
- return;
- }
+ MessageBank mb = this.getMailboxFromPath(mbname);
- SortedMap msgs = this.mb.listMessages();
+ SortedMap msgs = mb.listMessages();
// gather statistics
int numrecent = 0;
Modified: trunk/apps/Freemail/src/freemail/smtp/SMTPHandler.java
===================================================================
--- trunk/apps/Freemail/src/freemail/smtp/SMTPHandler.java 2006-08-30
17:59:35 UTC (rev 10300)
+++ trunk/apps/Freemail/src/freemail/smtp/SMTPHandler.java 2006-08-31
01:04:33 UTC (rev 10301)
@@ -11,12 +11,13 @@
import java.io.IOException;
import java.util.Vector;
-import thirdparty.Base64Coder;
import freemail.Freemail;
import freemail.AccountManager;
import freemail.MessageSender;
import freemail.utils.EmailAddress;
+import org.bouncycastle.util.encoders.Base64;
+
public class SMTPHandler implements Runnable {
private final Socket client;
private final OutputStream os;
@@ -117,7 +118,7 @@
this.ps.print("504 No auth type given\r\n");
return;
} else if (cmd.args[0].equalsIgnoreCase("login")) {
-
this.ps.print("334"+Base64Coder.encode("Username:")+"\r\n");
+ this.ps.print("334 "+new
String(Base64.encode("Username:".getBytes()))+"\r\n");
String b64username;
String b64password;
@@ -128,16 +129,18 @@
}
if (b64username == null) return;
-
this.ps.print("334"+Base64Coder.encode("Password:")+"\r\n");
+ this.ps.print("334 "+new
String(Base64.encode("Password:".getBytes()))+"\r\n");
try {
b64password = this.bufrdr.readLine();
} catch (IOException ioe) {
return;
}
if (b64password == null) return;
+
+ password = new
String(Base64.decode(b64password.getBytes()));
- uname = Base64Coder.decode(b64username);
- password = Base64Coder.decode(b64password);
+ uname = new
String(Base64.decode(b64username.getBytes()));
+ password = new
String(Base64.decode(b64password.getBytes()));
} else if (cmd.args[0].equalsIgnoreCase("plain")) {
String b64creds;
@@ -153,7 +156,8 @@
}
}
- String[] creds =
Base64Coder.decode(b64creds).split("\0");
+ String creds_plain = new
String(Base64.decode(b64creds.getBytes()));
+ String[] creds = creds_plain.split("\0");
if (creds.length < 2) return;
@@ -201,7 +205,12 @@
return;
}
- String[] parts = cmd.args[0].split(":", 2);
+ String allargs = new String();
+ for (int i = 0; i < cmd.args.length; i++) {
+ allargs += cmd.args[i];
+ }
+
+ String[] parts = allargs.split(":", 2);
if (parts.length < 2) {
this.ps.print("504 Can't understand that syntax\r\n");
return;
Modified: trunk/apps/Freemail/src/freemail/utils/EmailAddress.java
===================================================================
--- trunk/apps/Freemail/src/freemail/utils/EmailAddress.java 2006-08-30
17:59:35 UTC (rev 10300)
+++ trunk/apps/Freemail/src/freemail/utils/EmailAddress.java 2006-08-31
01:04:33 UTC (rev 10301)
@@ -50,6 +50,15 @@
if (this.realname == null && this.domain == null) {
this.domain = bank.toString();
}
+
+ // trim quotes out of the real name field
+ this.user = this.user.trim();
+ if (this.user.substring(0,1).equals("\"")) {
+ this.user = this.user.substring(1);
+ }
+ if (this.user.substring(this.user.length() - 1).equals("\"")) {
+ this.user = this.user.substring(0, this.user.length() - 1);
+ }
}
public EmailAddress() {