mirror of https://github.com/fail2ban/fail2ban
csocket multi-set fix: prevent to convert `list`, `dict`, `set` during transfer (send), this offers a sending of 'multi-set' arrays
(missed by cherry-picking from multi-set branch)pull/1422/head
parent
e0924e0d1b
commit
cb280b817f
|
@ -44,7 +44,9 @@ class CSocket:
|
||||||
|
|
||||||
def send(self, msg):
|
def send(self, msg):
|
||||||
# Convert every list member to string
|
# Convert every list member to string
|
||||||
obj = dumps([str(m) for m in msg], HIGHEST_PROTOCOL)
|
obj = dumps(map(
|
||||||
|
lambda m: str(m) if not isinstance(m, (list, dict, set)) else m, msg),
|
||||||
|
HIGHEST_PROTOCOL)
|
||||||
self.__csock.send(obj + CSPROTO.END)
|
self.__csock.send(obj + CSPROTO.END)
|
||||||
return self.receive(self.__csock)
|
return self.receive(self.__csock)
|
||||||
|
|
||||||
|
|
|
@ -266,8 +266,10 @@ class Server:
|
||||||
flt = self.__jails[name].filter
|
flt = self.__jails[name].filter
|
||||||
if multiple:
|
if multiple:
|
||||||
for value in value:
|
for value in value:
|
||||||
|
logSys.debug(" failregex: %r", value)
|
||||||
flt.addFailRegex(value)
|
flt.addFailRegex(value)
|
||||||
else:
|
else:
|
||||||
|
logSys.debug(" failregex: %r", value)
|
||||||
flt.addFailRegex(value)
|
flt.addFailRegex(value)
|
||||||
|
|
||||||
def delFailRegex(self, name, index):
|
def delFailRegex(self, name, index):
|
||||||
|
@ -280,8 +282,10 @@ class Server:
|
||||||
flt = self.__jails[name].filter
|
flt = self.__jails[name].filter
|
||||||
if multiple:
|
if multiple:
|
||||||
for value in value:
|
for value in value:
|
||||||
|
logSys.debug(" ignoreregex: %r", value)
|
||||||
flt.addIgnoreRegex(value)
|
flt.addIgnoreRegex(value)
|
||||||
else:
|
else:
|
||||||
|
logSys.debug(" ignoreregex: %r", value)
|
||||||
flt.addIgnoreRegex(value)
|
flt.addIgnoreRegex(value)
|
||||||
|
|
||||||
def delIgnoreRegex(self, name, index):
|
def delIgnoreRegex(self, name, index):
|
||||||
|
|
|
@ -52,7 +52,7 @@ class Transmitter:
|
||||||
|
|
||||||
def proceed(self, command):
|
def proceed(self, command):
|
||||||
# Deserialize object
|
# Deserialize object
|
||||||
logSys.debug("Command: " + repr(command))
|
logSys.debug("Command: %r", command)
|
||||||
try:
|
try:
|
||||||
ret = self.__commandHandler(command)
|
ret = self.__commandHandler(command)
|
||||||
ack = 0, ret
|
ack = 0, ret
|
||||||
|
@ -263,6 +263,7 @@ class Transmitter:
|
||||||
action = self.__server.getAction(name, actionname)
|
action = self.__server.getAction(name, actionname)
|
||||||
if multiple:
|
if multiple:
|
||||||
for cmd in command[3]:
|
for cmd in command[3]:
|
||||||
|
logSys.debug(" %r", cmd)
|
||||||
actionkey = cmd[0]
|
actionkey = cmd[0]
|
||||||
if callable(getattr(action, actionkey, None)):
|
if callable(getattr(action, actionkey, None)):
|
||||||
actionvalue = json.loads(cmd[1]) if len(cmd)>1 else {}
|
actionvalue = json.loads(cmd[1]) if len(cmd)>1 else {}
|
||||||
|
|
Loading…
Reference in New Issue