import java.sql.Timestamp;
import java.sql.Connection;
-public class Whitelist extends SqliteTable {
-
- public Whitelist(String filename) {
- super(filename,
- new String[] {
- "create table if not exists 'whitelist' (email)",
- "create table if not exists 'pending' (spamid,email,message,date)"
- },
- true,
- "pending",
- "date");
+public class Whitelist extends SqliteDB {
+
+ public Whitelist(String filename) throws SQLException {
+ super(filename);
+ SqliteTable whitelist = getTable("whitelist", "(email)");
+ whitelist.createIndex("email");
+ SqliteTable pending = getTable("pending", "(spamid,email,message,date)");
+ pending.reap("date");
+ pending.createIndex("spamid");
+ pending.createIndex("email");
}
public boolean handleRequest(org.ibex.net.Connection c) {
} else {
url = url.substring("/whitelist/".length());
url = URLDecoder.decode(url);
+ if (url.endsWith(".txt")) url = url.substring(0, url.length()-4);
pw.print("HTTP/1.0 200 OK\r\n");
pw.print("Content-Type: text/plain\r\n");
pw.print("\r\n");
a = m.envelopeFrom;
if (a!=null) addWhitelist(a);
hsm.add(m);
+ if (m.cc != null) for(Address aa : m.cc) {
+ if (aa!= null) addWhitelist(aa);
+ }
} while (rs.next());
}
for(Message m : hsm)
messageid = messageid.replace('%','_');
Log.warn(Whitelist.class, "got challenge for: " + messageid);
- String url = "http://www.megacz.com:8025/whitelist/"+URLEncoder.encode(messageid);
+ String url = "http://www.megacz.com:8025/whitelist/"+URLEncoder.encode(messageid)+".txt";
String message =
"Return-Path: <>" + "\r\n" +
"Envelope-To: " + to + "\r\n" +
PreparedStatement add = conn.prepareStatement("insert into pending values(?,?,?,?)");
add.setString(1, messageid);
add.setString(2, to.toString(false));
- add.setString(3, streamToString(m.getStream()));
+ add.setString(3, SqliteDB.streamToString(m.getStream()));
add.setTimestamp(4, new Timestamp(System.currentTimeMillis()));
add.executeUpdate();
}
} catch (Exception e) { throw new RuntimeException(e); }
}
- private static String streamToString(Stream stream) throws Exception {
- StringBuffer b = new StringBuffer();
- for(String s = stream.readln(); s!=null; s=stream.readln())
- b.append(s+"\n");
- return b.toString();
- }
}