package mireka.submission; import java.net.InetAddress; import java.util.ArrayList; import java.util.List; import mireka.filter.MailTransaction; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ConnectedFromAuthorizedIpAddress implements MailTransactionSpecification { private final Logger logger = LoggerFactory .getLogger(ConnectedFromAuthorizedIpAddress.class); private final List<IpAddress> ipAddresses = new ArrayList<IpAddress>(); @Override public boolean isSatisfiedBy(MailTransaction mailTransaction) { InetAddress clientAddress = mailTransaction.getRemoteInetAddress(); for (IpAddress addessSpecification : ipAddresses) { if (addessSpecification.isSatisfiedBy(clientAddress)) { logger.debug("IP address is authorized, matches {}", addessSpecification); return true; } } return false; } public void addAddress(IpAddress ipAddress) { ipAddresses.add(ipAddress); } public void setAddresses(List<IpAddress> addresses) { this.ipAddresses.clear(); this.ipAddresses.addAll(addresses); } }