diff --git a/fail2ban/client/configreader.py b/fail2ban/client/configreader.py index 2248ec34..b03daca9 100644 --- a/fail2ban/client/configreader.py +++ b/fail2ban/client/configreader.py @@ -29,7 +29,7 @@ import os from ConfigParser import NoOptionError, NoSectionError from .configparserinc import sys, SafeConfigParserWithIncludes, logLevel -from ..helpers import getLogger, _merge_dicts, substituteRecursiveTags +from ..helpers import getLogger, _as_bool, _merge_dicts, substituteRecursiveTags # Gets the instance of the logger. logSys = getLogger(__name__) @@ -339,7 +339,7 @@ class DefinitionInitConfigReader(ConfigReader): def _convert_to_boolean(self, value): - return value.lower() in ("1", "yes", "true", "on") + return _as_bool(value) def getCombOption(self, optname): """Get combined definition option (as string) using pre-set and init diff --git a/fail2ban/helpers.py b/fail2ban/helpers.py index 7d6b5ce2..f7b0f1eb 100644 --- a/fail2ban/helpers.py +++ b/fail2ban/helpers.py @@ -244,6 +244,10 @@ else: return uni_decode(x, enc, 'replace') +def _as_bool(val): + return bool(val) if not isinstance(val, basestring) \ + else val.lower() in ('1', 'on', 'true', 'yes') + # # Following function used for parse options from parameter (e.g. `name[p1=0, p2="..."][p3='...']`). # diff --git a/fail2ban/server/server.py b/fail2ban/server/server.py index 17cfe016..5ae3d807 100644 --- a/fail2ban/server/server.py +++ b/fail2ban/server/server.py @@ -37,7 +37,8 @@ from .filter import FileFilter, JournalFilter from .transmitter import Transmitter from .asyncserver import AsyncServer, AsyncServerException from .. import version -from ..helpers import getLogger, extractOptions, str2LogLevel, getVerbosityFormat, excepthook +from ..helpers import getLogger, _as_bool, extractOptions, str2LogLevel, \ + getVerbosityFormat, excepthook # Gets the instance of the logger. logSys = getLogger(__name__) @@ -313,7 +314,7 @@ class Server: # Filter def setIgnoreSelf(self, name, value): - self.__jails[name].filter.ignoreSelf = value + self.__jails[name].filter.ignoreSelf = _as_bool(value) def getIgnoreSelf(self, name): return self.__jails[name].filter.ignoreSelf @@ -628,11 +629,11 @@ class Server: # If handler don't already add date to the message: addtime = logOptions.get('datetime') if addtime is not None: - addtime = addtime in ('1', 'on', 'true', 'yes') + addtime = _as_bool(addtime) else: addtime = systarget not in ("SYSLOG", "SYSOUT") if padding is not None: - padding = padding in ('1', 'on', 'true', 'yes') + padding = _as_bool(padding) else: padding = True # If log-format is redefined in options: