/usr/share/denyhosts/DenyHosts/filetracker.py is in denyhosts 2.10-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | import os
import logging
from constants import SECURE_LOG_OFFSET
debug = logging.getLogger("filetracker").debug
class FileTracker(object):
def __init__(self, work_dir, logfile):
self.work_dir = work_dir
self.logfile = logfile
(self.__first_line, self.__offset) = self.__get_current_offset()
def __get_last_offset(self):
path = os.path.join(self.work_dir,
SECURE_LOG_OFFSET)
first_line = ""
offset = 0L
try:
fp = open(path, "r")
first_line = fp.readline()[:-1]
offset = long(fp.readline())
except IOError:
pass
debug("__get_last_offset():")
debug(" first_line: %s", first_line)
debug(" offset: %ld", offset)
return first_line, offset
def __get_current_offset(self):
first_line = ""
offset = 0L
try:
fp = open(self.logfile, "r")
first_line = fp.readline()[:-1]
fp.seek(0, 2)
offset = fp.tell()
except IOError, e:
raise e
debug("__get_current_offset():")
debug(" first_line: %s", first_line)
debug(" offset: %ld", offset)
return first_line, offset
def update_first_line(self):
first_line = ""
try:
fp = open(self.logfile, "r")
first_line = fp.readline()[:-1]
except IOError, e:
raise e
self.__first_line = first_line
def get_offset(self):
last_line, last_offset = self.__get_last_offset()
if last_line != self.__first_line:
# log file was rotated, start from beginning
offset = 0L
elif self.__offset > last_offset:
# new lines exist in log file
offset = last_offset
else:
# no new entries in log file
offset = None
debug("get_offset():")
debug(" offset: %s", str(offset))
return offset
def save_offset(self, offset):
path = os.path.join(self.work_dir,
SECURE_LOG_OFFSET)
try:
fp = open(path, "w")
fp.write("%s\n" % self.__first_line)
fp.write("%ld\n" % offset)
fp.close()
except IOError:
print "Could not save logfile offset to: %s" % path
|