mirror of
https://github.com/fail2ban/fail2ban.git
synced 2026-07-02 21:51:25 +00:00
Additional changes:
ENH: make basedir for Config's a kwarg to the constructor
ENH: improved analysis/reporting on presence/accessibility of config
files. Got carried away and forgot about existing work done by
Steven Hiscocks in the gh-115 -- will merge it in the next
commit for the fair ack of his work
Now for any X.conf configuration file we have following ways to
provide customizations
X.local -- read after .conf (kept for backward compatibility)
X.d/ -- directory to contain additional .conf files, sorted
alphabetically, e.g
X.d/01_enable.conf - to enable the jail
X.d/02_custom_port.conf - to change the port
X could be a 'jail' or 'fail2ban' or any other configuration file in
fail2ban.
Mention that all files still must contain the corresponding sections
(most of the time duplicating it across all of them).
77 lines
2.3 KiB
Python
77 lines
2.3 KiB
Python
# emacs: -*- mode: python; py-indent-offset: 4; indent-tabs-mode: t -*-
|
|
# vi: set ft=python sts=4 ts=4 sw=4 noet :
|
|
|
|
# This file is part of Fail2Ban.
|
|
#
|
|
# Fail2Ban is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# Fail2Ban is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with Fail2Ban; if not, write to the Free Software
|
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
# Author: Cyril Jaquier
|
|
#
|
|
# $Revision$
|
|
|
|
__author__ = "Cyril Jaquier"
|
|
__version__ = "$Revision$"
|
|
__date__ = "$Date$"
|
|
__copyright__ = "Copyright (c) 2004 Cyril Jaquier"
|
|
__license__ = "GPL"
|
|
|
|
import logging
|
|
from configreader import ConfigReader
|
|
|
|
# Gets the instance of the logger.
|
|
logSys = logging.getLogger("fail2ban.client.config")
|
|
|
|
class FilterReader(ConfigReader):
|
|
|
|
def __init__(self, fileName, name, **kwargs):
|
|
ConfigReader.__init__(self, **kwargs)
|
|
self.__file = fileName
|
|
self.__name = name
|
|
|
|
def setFile(self, fileName):
|
|
self.__file = fileName
|
|
|
|
def getFile(self):
|
|
return self.__file
|
|
|
|
def setName(self, name):
|
|
self.__name = name
|
|
|
|
def getName(self):
|
|
return self.__name
|
|
|
|
def read(self):
|
|
return ConfigReader.read(self, "filter.d/" + self.__file)
|
|
|
|
def getOptions(self, pOpts):
|
|
opts = [["string", "ignoreregex", ""],
|
|
["string", "failregex", ""]]
|
|
self.__opts = ConfigReader.getOptions(self, "Definition", opts, pOpts)
|
|
|
|
def convert(self):
|
|
stream = list()
|
|
for opt in self.__opts:
|
|
if opt == "failregex":
|
|
for regex in self.__opts[opt].split('\n'):
|
|
# Do not send a command if the rule is empty.
|
|
if regex != '':
|
|
stream.append(["set", self.__name, "addfailregex", regex])
|
|
elif opt == "ignoreregex":
|
|
for regex in self.__opts[opt].split('\n'):
|
|
# Do not send a command if the rule is empty.
|
|
if regex != '':
|
|
stream.append(["set", self.__name, "addignoreregex", regex])
|
|
return stream
|
|
|