diff options
Diffstat (limited to 'subsonic-backend/src/main/java/net/sourceforge/subsonic/backend/service/WhitelistGenerator.java')
-rw-r--r-- | subsonic-backend/src/main/java/net/sourceforge/subsonic/backend/service/WhitelistGenerator.java | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/subsonic-backend/src/main/java/net/sourceforge/subsonic/backend/service/WhitelistGenerator.java b/subsonic-backend/src/main/java/net/sourceforge/subsonic/backend/service/WhitelistGenerator.java new file mode 100644 index 00000000..eef29611 --- /dev/null +++ b/subsonic-backend/src/main/java/net/sourceforge/subsonic/backend/service/WhitelistGenerator.java @@ -0,0 +1,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; + } +} |