]> WPIA git - gigi.git/blob - src/org/cacert/gigi/email/TestEmailProvider.java
9f37be97f3966bcb7091c1fa328eae5446de830f
[gigi.git] / src / org / cacert / gigi / email / TestEmailProvider.java
1 package org.cacert.gigi.email;
2
3 import java.io.DataInputStream;
4 import java.io.DataOutputStream;
5 import java.io.IOException;
6 import java.net.InetAddress;
7 import java.net.ServerSocket;
8 import java.net.Socket;
9 import java.util.Properties;
10
11 class TestEmailProvider extends EmailProvider {
12         ServerSocket servs;
13         Socket client;
14         DataOutputStream out;
15         DataInputStream in;
16         protected TestEmailProvider(Properties props) {
17                 try {
18                         servs = new ServerSocket(Integer.parseInt(props
19                                         .getProperty("emailProvider.port")), 10,
20                                         InetAddress.getByName("127.0.0.1"));
21                 } catch (IOException e) {
22                         e.printStackTrace();
23                 }
24         }
25         @Override
26         public synchronized void sendmail(String to, String subject,
27                         String message, String from, String replyto, String toname,
28                         String fromname, String errorsto, boolean extra) throws IOException {
29                 boolean sent = false;
30                 while (!sent) {
31                         if (client == null || client.isClosed()) {
32                                 client = servs.accept();
33                                 out = new DataOutputStream(client.getOutputStream());
34                                 in = new DataInputStream(client.getInputStream());
35                         }
36                         try {
37                                 out.writeUTF("mail");
38                                 write(to);
39                                 write(subject);
40                                 write(message);
41                                 write(from);
42                                 write(replyto);
43                                 out.flush();
44                                 sent = true;
45                         } catch (IOException e) {
46                                 client = null;
47                         }
48                 }
49         }
50         @Override
51         public String checkEmailServer(int forUid, String address)
52                         throws IOException {
53                 out.writeUTF("challengeAddrBox");
54                 out.writeUTF(address);
55                 return in.readUTF();
56         }
57
58         private void write(String to) throws IOException {
59                 if (to == null) {
60                         out.writeUTF("<null>");
61                 } else {
62                         out.writeUTF(to);
63                 }
64         }
65
66 }