aboutsummaryrefslogtreecommitdiff
path: root/subsonic-backend/src/main/java/net/sourceforge/subsonic/backend/service/WhitelistGenerator.java
blob: eef296117db5a7129b9624ef22e96c91add8c06e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package net.sourceforge.subsonic.backend.service;

import net.sourceforge.subsonic.backend.dao.PaymentDao;
import org.apache.log4j.Logger;

import javax.mail.Address;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.internet.InternetAddress;
import java.util.Date;

/**
 * Creates a license whitelist.
 *
 * @author Sindre Mehus
 * @version $Id$
 */
public class WhitelistGenerator {

    private static final Logger LOG = Logger.getLogger(WhitelistGenerator.class);

    private PaymentDao paymentDao;

    public void generate(Date newerThan) throws Exception {
        LOG.info("Starting whitelist update for emails newer than " + newerThan);

        EmailSession session = new EmailSession();
        Folder folder = session.getFolder("[Gmail]/Sent Mail");
        int n = folder.getMessageCount();

        for (int i = n; i >= 0; i--) {
            Message message = folder.getMessage(i);
            Date date = message.getSentDate();
            InternetAddress address = (InternetAddress) message.getRecipients(Message.RecipientType.TO)[0];
            String recipient = address.getAddress();
            if (date.before(newerThan)) {
                break;
            }
            LOG.info(date + " " + recipient);

            if (paymentDao.getPaymentByEmail(recipient) == null && !paymentDao.isWhitelisted(recipient)) {
                paymentDao.whitelist(recipient);
                LOG.info("WHITELISTED " + recipient);
            }
        }
        folder.close(false);
        LOG.info("Completed whitelist update.");
    }

    public void setPaymentDao(PaymentDao paymentDao) {
        this.paymentDao = paymentDao;
    }
}