1 21 package org.jsmtpd.plugins.inputIPFilters; 22 23 import java.net.InetAddress ; 24 import java.net.UnknownHostException ; 25 import java.util.Date ; 26 import java.util.HashMap ; 27 import java.util.Map ; 28 29 import org.apache.commons.logging.Log; 30 import org.apache.commons.logging.LogFactory; 31 36 public class ExpireBlackList extends BlackList { 37 private Log log = LogFactory.getLog(ExpireBlackList.class); 38 private Map <InetAddress ,Date > timedBlackList = new HashMap <InetAddress ,Date >(); 39 private int maxTable = 2000; 40 41 42 @Override 43 public boolean checkIP(InetAddress input) { 44 boolean fixed = super.checkIP(input); 45 if (!fixed) 46 return false; 47 48 return true; 49 } 50 51 public void setTimedBlackList (long time, String ip) { 52 expire (); 53 if (timedBlackList.size()>maxTable) 54 return; 55 long target = new Date ().getTime()+time; 56 try { 57 log.info("Blacklisting "+ip+" for "+time+" seconds"); 58 timedBlackList.put(InetAddress.getByName(ip),new Date (target)); 59 } catch (UnknownHostException e) { 60 log.error("Blacklisting "+ip+" for "+time+" seconds failed",e); 61 } 62 } 63 64 private void expire () { 65 Date now = new Date (); 66 for (InetAddress addr : timedBlackList.keySet()) { 67 Date cmp = timedBlackList.get(addr); 68 if (cmp.getTime()<now.getTime()) 69 timedBlackList.remove(addr); 70 } 71 } 72 } 73 | Popular Tags |