diff --git a/plogical/findBWUsage.py b/plogical/findBWUsage.py index 558279086..86e094c40 100755 --- a/plogical/findBWUsage.py +++ b/plogical/findBWUsage.py @@ -4,6 +4,8 @@ import os from plogical import CyberCPLogFileWriter as logging import shlex import subprocess +import validators + class findBWUsage: @staticmethod def parse_last_digits(line): @@ -14,6 +16,12 @@ class findBWUsage: try: path = "/home/"+domainName+"/logs/"+domainName+".access_log" + if not os.path.exists(path): + return 0 + + logData = open(path, 'r').readlines() + logDataLines = len(logData) + if not os.path.exists("/home/"+domainName+"/logs"): return 0 @@ -21,57 +29,46 @@ class findBWUsage: if not os.path.exists(path): writeMeta = open(bwmeta, 'w') - writeMeta.writelines(str(0) + "\n") - writeMeta.writelines(str(0) + "\n") + writeMeta.writelines('0\n0\n') writeMeta.close() return 1 - - if os.path.exists(bwmeta): data = open(bwmeta).readlines() currentUsed = int(data[0].strip("\n")) - seekPoint = int(data[1].strip("\n")) - if seekPoint > os.path.getsize(path): - seekPoint = 0 + currentLinesRead = int(data[1].strip("\n")) + if currentLinesRead > logDataLines: + currentLinesRead = 0 else: currentUsed = 0 - seekPoint = 0 + currentLinesRead = 0 - newSeekPoint = seekPoint + startLine = currentLinesRead - logFile = open(path,'r') - logFile.seek(seekPoint) - - - for line in logFile: + for line in logData[startLine:]: line = line.strip('"\n') - newSeekPoint = newSeekPoint + len(line) + currentLinesRead = currentLinesRead + 1 if len(line)>10: currentUsed = int(findBWUsage.parse_last_digits(line)[9].replace('"', '')) + currentUsed - writeMeta = open(bwmeta,'w') writeMeta.writelines(str(currentUsed)+"\n") - writeMeta.writelines(str(newSeekPoint) + "\n") + writeMeta.writelines(str(currentLinesRead) + "\n") writeMeta.close() - except OSError as msg: - logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [calculateBandwidth]") - return 0 - except ValueError as msg: + except BaseException as msg: logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [calculateBandwidth]") return 0 return 1 - @staticmethod def startCalculations(): try: for directories in os.listdir("/home"): - findBWUsage.calculateBandwidth(directories) + if validators.domain(directories): + findBWUsage.calculateBandwidth(directories) except BaseException as msg: logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [startCalculations]") return 0