code review

pull/1483/head
sebres 2016-07-11 13:22:58 +02:00
parent 4c1bcac0c7
commit 4180cc362e
5 changed files with 16 additions and 13 deletions

View File

@ -411,11 +411,9 @@ class Fail2banClient(Fail2banCmdLine, Thread):
signal.signal(s, sh) signal.signal(s, sh)
##
# Wonderful visual :)
#
class _VisualWait: class _VisualWait:
"""Small progress indication (as "wonderful visual") during waiting process
"""
pos = 0 pos = 0
delta = 1 delta = 1
def __init__(self, maxpos=10): def __init__(self, maxpos=10):
@ -427,6 +425,8 @@ class _VisualWait:
sys.stdout.write('\r'+(' '*(35+self.maxpos))+'\r') sys.stdout.write('\r'+(' '*(35+self.maxpos))+'\r')
sys.stdout.flush() sys.stdout.flush()
def heartbeat(self): def heartbeat(self):
"""Show or step for progress indicator
"""
if not self.pos: if not self.pos:
sys.stdout.write("\nINFO [#" + (' '*self.maxpos) + "] Waiting on the server...\r\x1b[8C") sys.stdout.write("\nINFO [#" + (' '*self.maxpos) + "] Waiting on the server...\r\x1b[8C")
self.pos += self.delta self.pos += self.delta
@ -441,6 +441,8 @@ class _VisualWait:
elif self.pos < 2: elif self.pos < 2:
self.delta = 1 self.delta = 1
class _NotVisualWait: class _NotVisualWait:
"""Mockup for invisible progress indication (not verbose)
"""
def __enter__(self): def __enter__(self):
return self return self
def __exit__(self, *args): def __exit__(self, *args):
@ -449,6 +451,8 @@ class _NotVisualWait:
pass pass
def VisualWait(verbose, *args, **kwargs): def VisualWait(verbose, *args, **kwargs):
"""Wonderful visual progress indication (if verbose)
"""
return _VisualWait(*args, **kwargs) if verbose > 1 else _NotVisualWait() return _VisualWait(*args, **kwargs) if verbose > 1 else _NotVisualWait()

View File

@ -83,9 +83,6 @@ class Fail2banCmdLine():
output("Copyright (c) 2004-2008 Cyril Jaquier, 2008- Fail2Ban Contributors") output("Copyright (c) 2004-2008 Cyril Jaquier, 2008- Fail2Ban Contributors")
output("Copyright of modifications held by their respective authors.") output("Copyright of modifications held by their respective authors.")
output("Licensed under the GNU General Public License v2 (GPL).") output("Licensed under the GNU General Public License v2 (GPL).")
output("")
output("Written by Cyril Jaquier <cyril.jaquier@fail2ban.org>.")
output("Many contributions by Yaroslav O. Halchenko <debian@onerussian.com>.")
def dispUsage(self): def dispUsage(self):
""" Prints Fail2Ban command line options and exits """ Prints Fail2Ban command line options and exits
@ -262,7 +259,7 @@ class Fail2banCmdLine():
@staticmethod @staticmethod
def exit(code=0): # pragma: no cover - can't test def exit(code=0): # pragma: no cover - can't test
logSys.debug("Exit with code %s", code) logSys.debug("Exit with code %s", code)
if os._exit: if hasattr(os, '_exit') and os._exit:
os._exit(code) os._exit(code)
else: else:
sys.exit(code) sys.exit(code)

View File

@ -27,6 +27,9 @@ __license__ = "GPL"
import textwrap import textwrap
def output(s): def output(s):
"""Default output handler for printing protocol.
Used to ease mocking in the test cases.
"""
print(s) print(s)
## ##

View File

@ -419,7 +419,7 @@ class Server:
getLogger("fail2ban").setLevel(getattr(logging, value)) getLogger("fail2ban").setLevel(getattr(logging, value))
self.__logLevel = value self.__logLevel = value
except AttributeError: except AttributeError:
raise ValueError("Invalid log level") raise ValueError("Invalid log level %r" % value)
## ##
# Get the logging level. # Get the logging level.

View File

@ -54,10 +54,9 @@ if not CONFIG_DIR:
else: else:
CONFIG_DIR = '/etc/fail2ban' CONFIG_DIR = '/etc/fail2ban'
# In not installed env (setup, test-cases) use fail2ban modules from main directory: # During the test cases (or setup) use fail2ban modules from main directory:
if 1 or os.environ.get('PYTHONPATH', None) is None: os.putenv('PYTHONPATH', os.path.dirname(os.path.dirname(os.path.dirname(
os.putenv('PYTHONPATH', os.path.dirname(os.path.dirname(os.path.dirname( os.path.abspath(__file__)))))
os.path.abspath(__file__)))))
class F2B(optparse.Values): class F2B(optparse.Values):
def __init__(self, opts={}): def __init__(self, opts={}):