diff --git a/fail2ban-client b/fail2ban-client index 061208ddf..d8147f025 100755 --- a/fail2ban-client +++ b/fail2ban-client @@ -63,7 +63,7 @@ class Fail2banClient: self.__conf["interactive"] = False self.__conf["socket"] = None self.__conf["pidfile"] = None - + def dispVersion(self): print "Fail2Ban v" + version print @@ -73,7 +73,7 @@ class Fail2banClient: print print "Written by Cyril Jaquier ." print "Many contributions by Yaroslav O. Halchenko ." - + def dispUsage(self): """ Prints Fail2Ban command line options and exits """ @@ -95,17 +95,17 @@ class Fail2banClient: print " -V, --version print the version" print print "Command:" - + # Prints the protocol printFormatted() - + print print "Report bugs to https://github.com/fail2ban/fail2ban/issues" - + def dispInteractive(self): print "Fail2Ban v" + version + " reads log file that contains password failure report" print "and bans the corresponding IP addresses using firewall rules." - print + print def __sigTERMhandler(self, signum, frame): # Print a new line because we probably come from wait @@ -139,10 +139,10 @@ class Fail2banClient: elif opt[0] in ["-V", "--version"]: self.dispVersion() sys.exit(0) - + def __ping(self): return self.__processCmd([["ping"]], False) - + def __processCmd(self, cmd, showRet = True): beautifier = Beautifier() for c in cmd: @@ -167,7 +167,7 @@ class Fail2banClient: logSys.error(e) return False return True - + ## # Process a command line. # @@ -241,13 +241,13 @@ class Fail2banClient: return False else: return self.__processCmd([cmd]) - - + + ## # Start Fail2Ban server. # # Start the Fail2ban server in daemon mode. - + def __startServerAsync(self, socket, pidfile, force = False): # Forks the current process. pid = os.fork() @@ -278,7 +278,7 @@ class Fail2banClient: except OSError: logSys.error("Could not start %s" % self.SERVER) os.exit(-1) - + def __waitOnServer(self): # Wait for the server to start cnt = 0 @@ -306,16 +306,16 @@ class Fail2banClient: cnt += 1 if self.__conf["verbose"] > 1: sys.stdout.write('\n') - - + + def start(self, argv): # Command line options self.__argv = argv - + # Install signal handlers signal.signal(signal.SIGTERM, self.__sigTERMhandler) signal.signal(signal.SIGINT, self.__sigTERMhandler) - + # Reads the command line options. try: cmdOpts = 'hc:s:p:xdviqV' @@ -324,9 +324,9 @@ class Fail2banClient: except getopt.GetoptError: self.dispUsage() return False - + self.__getCmdLineOptions(optList) - + verbose = self.__conf["verbose"] if verbose <= 0: logSys.setLevel(logging.ERROR) @@ -346,7 +346,7 @@ class Fail2banClient: # Set the configuration path self.__configurator.setBaseDir(self.__conf["conf"]) - + # Set socket path self.__configurator.readEarly() conf = self.__configurator.getEarlyOptions() @@ -360,7 +360,7 @@ class Fail2banClient: ret = self.__readConfig() self.dumpConfig(self.__stream) return ret - + # Interactive mode if self.__conf["interactive"]: try: @@ -401,14 +401,14 @@ class Fail2banClient: self.__configurator.convertToProtocol() self.__stream = self.__configurator.getConfigStream() return ret - + def __readJailConfig(self, jail): self.__configurator.readAll() ret = self.__configurator.getOptions(jail) self.__configurator.convertToProtocol() self.__stream = self.__configurator.getConfigStream() return ret - + #@staticmethod def dumpConfig(cmd): for c in cmd: diff --git a/fail2ban-regex b/fail2ban-regex index f9bc72c16..a0a90b054 100755 --- a/fail2ban-regex +++ b/fail2ban-regex @@ -50,24 +50,24 @@ class RegexStat: def __str__(self): return "%s(%r) %d failed: %s" \ % (self.__class__, self.__failregex, self.__stats, self.__ipList) - + def inc(self): self.__stats += 1 - + def getStats(self): return self.__stats def getFailRegex(self): return self.__failregex - + def appendIP(self, value): self.__ipList.extend(value) - + def getIPList(self): return self.__ipList class Fail2banRegex: - + test = None CONFIG_DEFAULTS = {'configpath' : "/etc/fail2ban/"} @@ -87,7 +87,7 @@ class Fail2banRegex: self.__logging_level = self.__verbose and logging.DEBUG or logging.WARN logging.getLogger("fail2ban").addHandler(self.__hdlr) logging.getLogger("fail2ban").setLevel(logging.ERROR) - + #@staticmethod def dispVersion(): print "Fail2Ban v" + version @@ -99,7 +99,7 @@ class Fail2banRegex: print "Written by Cyril Jaquier ." print "Many contributions by Yaroslav O. Halchenko ." dispVersion = staticmethod(dispVersion) - + #@staticmethod def dispUsage(): print "Usage: "+sys.argv[0]+" [OPTIONS] [IGNOREREGEX]" @@ -128,7 +128,7 @@ class Fail2banRegex: print print "Report bugs to https://github.com/fail2ban/fail2ban/issues" dispUsage = staticmethod(dispUsage) - + def getCmdLineOptions(self, optList): """ Gets the command line options """ @@ -204,7 +204,7 @@ class Fail2banRegex: print "Use regex line : " + stripReg self.__failregex = [RegexStat(value)] return True - + def testIgnoreRegex(self, line): found = False for regex in self.__ignoreregex: @@ -221,7 +221,7 @@ class Fail2banRegex: finally: self.__filter.delIgnoreRegex(0) logging.getLogger("fail2ban").setLevel(self.__logging_level) - + def testRegex(self, line): found = False for regex in self.__ignoreregex: @@ -251,7 +251,7 @@ class Fail2banRegex: logging.getLogger("fail2ban").setLevel(logging.CRITICAL) for regex in self.__ignoreregex: self.__filter.delIgnoreRegex(0) - + def printStats(self): print print "Results" @@ -300,20 +300,20 @@ class Fail2banRegex: print " %s (%s)%s" % ( ip[0], timeString, ip[2] and " (already matched)" or "") print - + print "Date template hits:" for template in self.__filter.dateDetector.getTemplates(): if self.__verbose or template.getHits(): print `template.getHits()` + " hit(s): " + template.getName() print - + print "Success, the total number of match is " + str(total) print print "However, look at the above section 'Running tests' which could contain important" print "information." return True - + if __name__ == "__main__": fail2banRegex = Fail2banRegex() # Reads the command line options. diff --git a/fail2ban-server b/fail2ban-server index 81db58bd3..404a1ced4 100755 --- a/fail2ban-server +++ b/fail2ban-server @@ -46,7 +46,7 @@ logSys = logging.getLogger("fail2ban") # Its first goal was to protect a SSH server. class Fail2banServer: - + def __init__(self): self.__server = None self.__argv = None @@ -55,7 +55,7 @@ class Fail2banServer: self.__conf["force"] = False self.__conf["socket"] = "/var/run/fail2ban/fail2ban.sock" self.__conf["pidfile"] = "/var/run/fail2ban/fail2ban.pid" - + def dispVersion(self): print "Fail2Ban v" + version print @@ -65,7 +65,7 @@ class Fail2banServer: print print "Written by Cyril Jaquier ." print "Many contributions by Yaroslav O. Halchenko ." - + def dispUsage(self): """ Prints Fail2Ban command line options and exits """ @@ -88,7 +88,7 @@ class Fail2banServer: print " -V, --version print the version" print print "Report bugs to https://github.com/fail2ban/fail2ban/issues" - + def __getCmdLineOptions(self, optList): """ Gets the command line options """ @@ -109,11 +109,11 @@ class Fail2banServer: if opt[0] in ["-V", "--version"]: self.dispVersion() sys.exit(0) - + def start(self, argv): # Command line options self.__argv = argv - + # Reads the command line options. try: cmdOpts = 'bfs:p:xhV' @@ -122,9 +122,9 @@ class Fail2banServer: except getopt.GetoptError: self.dispUsage() sys.exit(-1) - + self.__getCmdLineOptions(optList) - + try: self.__server = Server(self.__conf["background"]) self.__server.start(self.__conf["socket"], @@ -135,7 +135,7 @@ class Fail2banServer: logSys.exception(e) self.__server.quit() return False - + if __name__ == "__main__": server = Fail2banServer() if server.start(sys.argv):