BF+RF: Allow multiple of same action in a single jail

pull/189/head
Steven Hiscocks 12 years ago
parent 7a29a952c1
commit 45c9c45b41

@ -43,27 +43,38 @@ class ActionReader(DefinitionInitConfigReader):
["string", "actionunban", ""], ["string", "actionunban", ""],
] ]
def __init__(self, file_, jailName, initOpts, **kwargs):
self._name = initOpts.pop("name", file_)
DefinitionInitConfigReader.__init__(
self, file_, jailName, initOpts, **kwargs)
def setName(self, name):
self._name = name
def getName(self):
return self._name
def read(self): def read(self):
return ConfigReader.read(self, os.path.join("action.d", self._file)) return ConfigReader.read(self, os.path.join("action.d", self._file))
def convert(self): def convert(self):
head = ["set", self._name] head = ["set", self._jailName]
stream = list() stream = list()
stream.append(head + ["addaction", self._file]) stream.append(head + ["addaction", self._name])
for opt in self._opts: for opt in self._opts:
if opt == "actionstart": if opt == "actionstart":
stream.append(head + ["actionstart", self._file, self._opts[opt]]) stream.append(head + ["actionstart", self._name, self._opts[opt]])
elif opt == "actionstop": elif opt == "actionstop":
stream.append(head + ["actionstop", self._file, self._opts[opt]]) stream.append(head + ["actionstop", self._name, self._opts[opt]])
elif opt == "actioncheck": elif opt == "actioncheck":
stream.append(head + ["actioncheck", self._file, self._opts[opt]]) stream.append(head + ["actioncheck", self._name, self._opts[opt]])
elif opt == "actionban": elif opt == "actionban":
stream.append(head + ["actionban", self._file, self._opts[opt]]) stream.append(head + ["actionban", self._name, self._opts[opt]])
elif opt == "actionunban": elif opt == "actionunban":
stream.append(head + ["actionunban", self._file, self._opts[opt]]) stream.append(head + ["actionunban", self._name, self._opts[opt]])
# cInfo # cInfo
if self._initOpts: if self._initOpts:
for p in self._initOpts: for p in self._initOpts:
stream.append(head + ["setcinfo", self._file, p, self._initOpts[p]]) stream.append(head + ["setcinfo", self._name, p, self._initOpts[p]])
return stream return stream

@ -145,7 +145,7 @@ class DefinitionInitConfigReader(ConfigReader):
def __init__(self, file_, jailName, initOpts, **kwargs): def __init__(self, file_, jailName, initOpts, **kwargs):
ConfigReader.__init__(self, **kwargs) ConfigReader.__init__(self, **kwargs)
self._file = file_ self._file = file_
self._name = jailName self._jailName = jailName
self._initOpts = initOpts self._initOpts = initOpts
def setFile(self, fileName): def setFile(self, fileName):
@ -154,11 +154,11 @@ class DefinitionInitConfigReader(ConfigReader):
def getFile(self): def getFile(self):
return self.__file return self.__file
def setName(self, name): def setJailName(self, jailName):
self._name = name self._jailName = jailName
def getName(self): def getJailName(self):
return self._name return self._jailName
def read(self): def read(self):
return ConfigReader.read(self, self._file) return ConfigReader.read(self, self._file)

@ -50,14 +50,14 @@ class FilterReader(DefinitionInitConfigReader):
for regex in self._opts[opt].split('\n'): for regex in self._opts[opt].split('\n'):
# Do not send a command if the rule is empty. # Do not send a command if the rule is empty.
if regex != '': if regex != '':
stream.append(["set", self._name, "addfailregex", regex]) stream.append(["set", self._jailName, "addfailregex", regex])
elif opt == "ignoreregex": elif opt == "ignoreregex":
for regex in self._opts[opt].split('\n'): for regex in self._opts[opt].split('\n'):
# Do not send a command if the rule is empty. # Do not send a command if the rule is empty.
if regex != '': if regex != '':
stream.append(["set", self._name, "addignoreregex", regex]) stream.append(["set", self._jailName, "addignoreregex", regex])
if self._initOpts: if self._initOpts:
if 'maxlines' in self._initOpts: if 'maxlines' in self._initOpts:
stream.append(["set", self._name, "maxlines", self._initOpts["maxlines"]]) stream.append(["set", self._jailName, "maxlines", self._initOpts["maxlines"]])
return stream return stream

Loading…
Cancel
Save