zpytela / rpms / fail2ban

Forked from rpms/fail2ban 2 years ago
Clone
Blob Blame History Raw
--- fail2ban-0.8.3/server/filter.py.inodecheck	2009-08-27 20:50:22.000000000 +0200
+++ fail2ban-0.8.3/server/filter.py	2009-08-27 20:50:22.000000000 +0200
@@ -31,7 +31,7 @@
 from mytime import MyTime
 from failregex import FailRegex, Regex, RegexException
 
-import logging, re
+import logging, re, os
 
 # Gets the instance of the logger.
 logSys = logging.getLogger("fail2ban.filter")
@@ -438,6 +438,8 @@
 		self.__handler = None
 		# Try to open the file. Raises an exception if an error occured.
 		handler = open(filename)
+		stats = os.fstat(handler.fileno())
+		self.__ino = stats.st_ino
 		try:
 			firstLine = handler.readline()
 			# Computes the MD5 of the first line.
@@ -464,10 +466,12 @@
 		firstLine = self.__handler.readline()
 		# Computes the MD5 of the first line.
 		myHash = md5.new(firstLine).digest()
-		# Compare hash.
-		if not self.__hash == myHash:
+		stats = os.fstat(self.__handler.fileno())
+		# Compare hash and inode
+		if self.__hash != myHash or self.__ino != stats.st_ino:
 			logSys.info("Log rotation detected for %s" % self.__filename)
 			self.__hash = myHash
+			self.__ino = stats.st_ino
 			self.__pos = 0
 		# Sets the file pointer to the last position.
 		self.__handler.seek(self.__pos)