Example #1
0
	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()
Example #2
0
	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()
Example #3
0
	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()
Example #4
0
    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]
				fData.inc()
				fData.setLastTime(unixTime)
			else:
				fData = FailData()
				fData.inc()
				fData.setLastTime(unixTime)
				self.__failList[ip] = fData
			self.__failTotal += 1
		finally:
			self.__lock.release()
Example #6
0
	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()
Example #7
0
	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()