import java.util.regex.Matcher;
import java.util.regex.Pattern;
-public class TestEmailReciever implements Runnable {
+import org.cacert.gigi.email.EmailProvider;
+
+public class TestEmailReciever extends EmailProvider implements Runnable {
public class TestMail {
String to;
String subject;
String message;
String from;
String replyto;
- public TestMail(String to, String subject, String message, String from,
- String replyto) {
+
+ public TestMail(String to, String subject, String message, String from, String replyto) {
this.to = to;
this.subject = subject;
this.message = message;
this.from = from;
this.replyto = replyto;
}
+
public String getTo() {
return to;
}
+
public String getSubject() {
return subject;
}
+
public String getMessage() {
return message;
}
+
public String getFrom() {
return from;
}
+
public String getReplyto() {
return replyto;
}
+
public String extractLink() {
Pattern link = Pattern.compile("https?://[^\\s]+(?=\\s)");
Matcher m = link.matcher(getMessage());
}
}
+
private Socket s;
private DataInputStream dis;
private DataOutputStream dos;
dis = new DataInputStream(s.getInputStream());
dos = new DataOutputStream(s.getOutputStream());
new Thread(this).start();
+ setInstance(this);
}
+
LinkedBlockingQueue<TestMail> mails = new LinkedBlockingQueue<TestEmailReciever.TestMail>();
public TestMail recieve() throws InterruptedException {
return mails.poll(5, TimeUnit.SECONDS);
}
+
@Override
public void run() {
try {
mails.add(new TestMail(to, subject, message, from, replyto));
} else if (type.equals("challengeAddrBox")) {
String email = dis.readUTF();
- if (approveRegex.matcher(email).matches()) {
- System.out.println("approving mbox: " + email);
- dos.writeUTF("OK");
- } else {
- System.out.println("rejecting mbox: " + email);
- dos.writeUTF("FAIL");
- }
+ dos.writeUTF(quickEmailCheck(email));
dos.flush();
} else if (type.equals("ping")) {
} else {
}
}
} catch (IOException e) {
- e.printStackTrace();
+ if (!closed) {
+ e.printStackTrace();
+ }
}
}
+
+ private String quickEmailCheck(String email) throws IOException {
+ if (approveRegex.matcher(email).matches()) {
+ return "OK";
+ } else {
+ return error;
+ }
+ }
+
+ String error = "FAIL";
+
+ public void setEmailCheckError(String error) {
+ this.error = error;
+ }
+
Pattern approveRegex = Pattern.compile(".*");
+
public void setApproveRegex(Pattern approveRegex) {
this.approveRegex = approveRegex;
}
public void clearMails() {
mails.clear();
}
+
public void reset() {
clearMails();
+ error = "FAIL";
approveRegex = Pattern.compile(".*");
}
+ boolean closed = false;
+
+ public void destroy() {
+ try {
+ closed = true;
+ s.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public String checkEmailServer(int forUid, String address) throws IOException {
+ return quickEmailCheck(address);
+ }
+
+ @Override
+ public void sendmail(String to, String subject, String message, String from, String replyto, String toname,
+ String fromname, String errorsto, boolean extra) throws IOException {
+ mails.add(new TestMail(to, subject, message, from, replyto));
+ }
+
}