From 37a2e59d69df0bb5f46087db693b0f3cc82249bf Mon Sep 17 00:00:00 2001 From: Yaroslav Halchenko Date: Mon, 26 Nov 2012 12:01:42 -0500 Subject: [PATCH] BF: guarantee that IP is stored as a base, non-unicode str (Closes gh-91) Otherwise it might lead to spurious characters dumped into the terminal at few places, unless casted upon every use in the logs. To prevent those issues in the source, store IP as a basic string if it is a string at all --- server/actions.py | 4 ++-- server/ticket.py | 5 ++++- testcases/failmanagertestcase.py | 11 ++++++----- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/server/actions.py b/server/actions.py index 94344dce..4d021a71 100644 --- a/server/actions.py +++ b/server/actions.py @@ -176,13 +176,13 @@ class Actions(JailThread): aInfo["time"] = bTicket.getTime() aInfo["matches"] = "".join(bTicket.getMatches()) if self.__banManager.addBanTicket(bTicket): - logSys.warn("[%s] Ban %s" % (self.jail.getName(), str(aInfo["ip"]))) + logSys.warn("[%s] Ban %s" % (self.jail.getName(), aInfo["ip"])) for action in self.__actions: action.execActionBan(aInfo) return True else: logSys.info("[%s] %s already banned" % (self.jail.getName(), - str(aInfo["ip"]))) + aInfo["ip"])) return False ## diff --git a/server/ticket.py b/server/ticket.py index 644d3cd1..c03761c1 100644 --- a/server/ticket.py +++ b/server/ticket.py @@ -42,7 +42,7 @@ class Ticket: @param matches (log) lines caused the ticket """ - self.__ip = ip + self.setIP(ip) self.__time = time self.__attempt = 0 self.__file = None @@ -54,6 +54,9 @@ class Ticket: def setIP(self, value): + if isinstance(value, basestring): + # guarantee using regular str instead of unicode for the IP + value = str(value) self.__ip = value def getIP(self): diff --git a/testcases/failmanagertestcase.py b/testcases/failmanagertestcase.py index e5e0ccca..ffee4ff1 100644 --- a/testcases/failmanagertestcase.py +++ b/testcases/failmanagertestcase.py @@ -35,11 +35,11 @@ class AddFailure(unittest.TestCase): def setUp(self): """Call before every test case.""" - self.__items = [['193.168.0.128', 1167605999.0], - ['193.168.0.128', 1167605999.0], - ['193.168.0.128', 1167605999.0], - ['193.168.0.128', 1167605999.0], - ['193.168.0.128', 1167605999.0], + self.__items = [[u'193.168.0.128', 1167605999.0], + [u'193.168.0.128', 1167605999.0], + [u'193.168.0.128', 1167605999.0], + [u'193.168.0.128', 1167605999.0], + [u'193.168.0.128', 1167605999.0], ['87.142.124.10', 1167605999.0], ['87.142.124.10', 1167605999.0], ['87.142.124.10', 1167605999.0], @@ -80,6 +80,7 @@ class AddFailure(unittest.TestCase): #ticket = FailTicket('193.168.0.128', None) ticket = self.__failManager.toBan() self.assertEqual(ticket.getIP(), "193.168.0.128") + self.assertTrue(isinstance(ticket.getIP(), str)) def testbanNOK(self): self.__failManager.setMaxRetry(10)