def addFailure(self, ticket): try: self.__lock.acquire() ip = ticket.getIP() unixTime = ticket.getTime() if self.__failList.has_key(ip): fData = self.__failList[ip] fData.inc() fData.setLastTime(unixTime) else: fData = FailData() fData.inc() fData.setLastTime(unixTime) self.__failList[ip] = fData self.__failTotal += 1 finally: self.__lock.release()
def addFailure(self, ticket): try: self.__lock.acquire() ip = ticket.getIP() unixTime = ticket.getTime() matches = ticket.getMatches() if self.__failList.has_key(ip): fData = self.__failList[ip] if fData.getLastReset() < unixTime - self.__maxTime: fData.setLastReset(unixTime) fData.setRetry(0) fData.inc(matches) fData.setLastTime(unixTime) else: fData = FailData() fData.inc(matches) fData.setLastReset(unixTime) fData.setLastTime(unixTime) self.__failList[ip] = fData self.__failTotal += 1 if logSys.getEffectiveLevel() <= logging.DEBUG: # yoh: Since composing this list might be somewhat time consuming # in case of having many active failures, it should be ran only # if debug level is "low" enough failures_summary = ', '.join(['%s:%d' % (k, v.getRetry()) for k,v in self.__failList.iteritems()]) logSys.debug("Total # of detected failures: %d. Current failures from %d IPs (IP:count): %s" % (self.__failTotal, len(self.__failList), failures_summary)) finally: self.__lock.release()
def addFailure(self, ticket): try: self.__lock.acquire() ip = ticket.getIP() unixTime = ticket.getTime() matches = ticket.getMatches() if self.__failList.has_key(ip): fData = self.__failList[ip] if fData.getLastReset() < unixTime - self.__maxTime: fData.setLastReset(unixTime) fData.setRetry(0) fData.inc(matches) fData.setLastTime(unixTime) else: fData = FailData() fData.inc(matches) fData.setLastReset(unixTime) fData.setLastTime(unixTime) self.__failList[ip] = fData logSys.debug("Currently have failures from %d IPs: %s" % (len(self.__failList), self.__failList.keys())) self.__failTotal += 1 finally: self.__lock.release()
def addFailure(self, ticket): try: self.__lock.acquire() ip = ticket.getIP() unixTime = ticket.getTime() matches = ticket.getMatches() if self.__failList.has_key(ip): fData = self.__failList[ip] if fData.getLastReset() < unixTime - self.__maxTime: fData.setLastReset(unixTime) fData.setRetry(0) fData.inc(matches) fData.setLastTime(unixTime) else: fData = FailData() fData.inc(matches) fData.setLastReset(unixTime) fData.setLastTime(unixTime) self.__failList[ip] = fData self.__failTotal += 1 if logSys.getEffectiveLevel() <= logging.DEBUG: # yoh: Since composing this list might be somewhat time consuming # in case of having many active failures, it should be ran only # if debug level is "low" enough failures_summary = ', '.join([ '%s:%d' % (k, v.getRetry()) for k, v in self.__failList.iteritems() ]) logSys.debug( "Total # of detected failures: %d. Current failures from %d IPs (IP:count): %s" % (self.__failTotal, len(self.__failList), failures_summary)) finally: self.__lock.release()
def addFailure(self, ticket): try: self.__lock.acquire() ip = ticket.getIP() unixTime = ticket.getTime() if self.__failList.has_key(ip): fData = self.__failList[ip] if fData.getLastReset() < unixTime - self.__maxTime: fData.setLastReset(unixTime) fData.setRetry(0) fData.inc() fData.setLastTime(unixTime) else: fData = FailData() fData.inc() fData.setLastReset(unixTime) fData.setLastTime(unixTime) self.__failList[ip] = fData logSys.debug("Currently have failures from %d IPs: %s" % (len(self.__failList), self.__failList.keys())) self.__failTotal += 1 finally: self.__lock.release()
def addFailure(self, ticket): try: self.__lock.acquire() ip = ticket.getIP() unixTime = ticket.getTime() matches = ticket.getMatches() # AD START if logSys.isEnabledFor(logging.INFO) or logSys.isEnabledFor(logging.DEBUG) : # INIT & CLEAN UP if self.__updateLastTimeStamp == 0: self.__updateLastTimeStamp = unixTime if self.__lastRRDUpdateTime == 0: self.__lastRRDUpdateTime = unixTime if self.__samplesRetry > 1000000: self.__sumRetry = 0 self.__samplesRetry = 0 # CHECK LAST UPDATE diffRRDTime = unixTime - self.__lastRRDUpdateTime if diffRRDTime > self.__updateTime: # UPDATE IS LONG TIME AGO - RRDTOOL UPDATE logSys.debug("diffRRDTime: %s" % diffRRDTime) logSys.debug('/usr/bin/rrdtool update /var/www/fail2ban/fail2ban_ad.rrd N:%d' %(self.__mostRetry)) commands.getstatusoutput('/usr/bin/rrdtool update /var/www/fail2ban/fail2ban_ad.rrd N:%d' %(self.__mostRetry)) # RESET PARAMETER self.__samplesRetry += (diffRRDTime%self.__updateTime) self.__lastRRDUpdateTime = unixTime if ( unixTime - self.__updateLastTimeStamp ) > ( self.__updateTime * 2 ): self.__mostRetry = 0 self.__updateLastTimeStamp = unixTime else: self.__samplesRetry += 1 # AD STOP if self.__failList.has_key(ip): fData = self.__failList[ip] if fData.getLastReset() < unixTime - self.__maxTime: fData.setLastReset(unixTime) fData.setRetry(0) fData.inc(matches) fData.setLastTime(unixTime) # AD START if logSys.isEnabledFor(logging.INFO) or logSys.isEnabledFor(logging.DEBUG) : self.__sumRetry += fData.getRetry() if fData.getRetry() > self.__mostRetry: if self.__mostIP == ip: self.__mostRetry = fData.getRetry() else: self.__mostRetry = fData.getRetry() self.__mostIP = ip # AD STOP else: fData = FailData() fData.inc(matches) fData.setLastReset(unixTime) fData.setLastTime(unixTime) self.__failList[ip] = fData # AD START if logSys.isEnabledFor(logging.INFO) or logSys.isEnabledFor(logging.DEBUG) : self.__sumRetry += 1 # AD STOP logSys.debug("Currently have failures from %d IPs: %s" % (len(self.__failList), self.__failList.keys())) self.__failTotal += 1 finally: self.__lock.release()