1 | InputStream istream = CommandHelper.getBodyPart(mailbox, uid);↵ | | 1 | InputStream istream = CommandHelper.getBodyPart(mailbox, uid);↵
|
|
2 | // get headers↵ | | 2 | // get headers↵
|
3 | Header h = mailbox.getHeaderFields(uid, Message.HEADERFIELDS);↵ | | 3 | Header h = mailbox.getHeaderFields(uid, Message.HEADERFIELDS);↵
|
|
4 | // put headers in list↵ | | 4 | // put headers in list↵
|
5 | Enumeration e = h.getKeys();↵ | | 5 | Enumeration e = h.getKeys();↵
|
6 | List list = new ArrayList();↵ | | 6 | List list = new ArrayList();↵
|
|
7 | while (e.hasMoreElements()) {↵ | | 7 | while (e.hasMoreElements()) {↵
|
8 | String key = (String) e.nextElement();↵ | | 8 | String key = (String) e.nextElement();↵
|
9 | list.add(h.get(key));↵ | | 9 | list.add(h.get(key));↵
|
10 | }↵ | | 10 | }↵
|
|
11 | // load database from file↵ | | 11 | // load database from file↵
|
12 | load();↵ | | 12 | load();↵
|
|
13 | try {↵ | | 13 | try {↵
|
14 | CloneStreamMaster master = new CloneStreamMaster(istream);↵ | | 14 | CloneStreamMaster master = new CloneStreamMaster(istream);↵
|
15 | InputStream inputStream = master.getClone();↵ | | 15 | InputStream inputStream = master.getClone();↵
|
|
16 | byte[] md5sum = MD5SumHelper.createMD5(inputStream);↵ | | 16 | byte[] md5sum = MD5SumHelper.createMD5(inputStream);↵
|
17 | // close stream↵ | | 17 | // close stream↵
|
18 | inputStream.close();↵ | | 18 | inputStream.close();↵
|
|
19 | // get new inputstream↵ | | 19 | // get new inputstream↵
|
20 | inputStream = master.getClone();↵ | | 20 | inputStream = master.getClone();↵
|
|
21 | Message message = new Message(inputStream, list, md5sum);↵ | | 21 | Message message = new Message(inputStream, list, md5sum);↵
|
|
22 | // check if this message was already learned↵ | | 22 | // check if this message was already learned↵
|
23 | // -> only add if this is not the case↵ | | 23 | ↵
|
24 | if (db.MD5SumExists(md5sum)) {↵ | | 24 | if (db.MD5SumExists(md5sum)) {↵
|
25 | // message already exists↵ | | 25 | // message already exists↵
|
|
26 | // --> correct token data↵ | | 26 | // --> correct token data↵
|
27 | filter.correctMessageAsSpam(message);↵ | | 27 | filter.correctMessageAsHam(message);↵
|
28 | } else {↵ | | 28 | } else {↵
|
29 | // new message↵ | | 29 | // new message↵
|
|
30 | filter.trainMessageAsSpam(message);↵ | | 30 | filter.trainMessageAsHam(message);↵
|
31 | }↵ | | 31 | }↵
|
|
32 | // close stream↵ | | 32 | // close stream↵
|
33 | inputStream.close();↵ | | 33 | inputStream.close();↵
|
|
34 | // set dirty flag↵ | | 34 | // set dirty flag↵
|
35 | hasChanged = true; | | 35 | hasChanged = true;
|