- Updated testcases to fix the time using MyTime

git-svn-id: https://fail2ban.svn.sourceforge.net/svnroot/fail2ban/trunk@419 a942ae1a-1317-0410-a47c-b1dcaea8d605
0.x
Cyril Jaquier 2006-10-18 22:35:32 +00:00
parent af41290fc6
commit ee86212435
6 changed files with 48 additions and 40 deletions

View File

@ -16,6 +16,7 @@ ver. 0.7.4 (2006/??/??) - beta
option in "fail2ban.conf" option in "fail2ban.conf"
- Added "backend" option in "jail.conf" - Added "backend" option in "jail.conf"
- Added more filters/actions and jail samples - Added more filters/actions and jail samples
- Improved testing framework
ver. 0.7.3 (2006/09/28) - beta ver. 0.7.3 (2006/09/28) - beta
---------- ----------

View File

@ -39,6 +39,11 @@ from testcases import failmanagertestcase
from testcases import filtertestcase from testcases import filtertestcase
from testcases import servertestcase from testcases import servertestcase
from testcases import datedetectortestcase from testcases import datedetectortestcase
from server.mytime import MyTime
# Set the time to a fixed, known value
# Sun Aug 14 12:00:00 CEST 2005
MyTime.setTime(1124013600)
# Gets the instance of the logger. # Gets the instance of the logger.
logSys = logging.getLogger("fail2ban") logSys = logging.getLogger("fail2ban")
@ -54,7 +59,7 @@ tests = unittest.TestSuite()
# Filter # Filter
tests.addTest(unittest.makeSuite(filtertestcase.IgnoreIP)) tests.addTest(unittest.makeSuite(filtertestcase.IgnoreIP))
tests.addTest(unittest.makeSuite(filtertestcase.LogFile)) tests.addTest(unittest.makeSuite(filtertestcase.LogFile))
#tests.addTest(unittest.makeSuite(filtertestcase.GetFailures)) tests.addTest(unittest.makeSuite(filtertestcase.GetFailures))
# Server # Server
#tests.addTest(unittest.makeSuite(servertestcase.StartStop)) #tests.addTest(unittest.makeSuite(servertestcase.StartStop))
#tests.addTest(unittest.makeSuite(servertestcase.Transmitter)) #tests.addTest(unittest.makeSuite(servertestcase.Transmitter))

View File

@ -48,13 +48,9 @@ class DateDetectorTest(unittest.TestCase):
def testGetTime(self): def testGetTime(self):
log = "Jan 23 21:59:59 [sshd] error: PAM: Authentication failure" log = "Jan 23 21:59:59 [sshd] error: PAM: Authentication failure"
date = [2006, 1, 23, 21, 59, 59, 1, 23, -1] date = [2005, 1, 23, 21, 59, 59, 1, 23, -1]
dateUnix = 1138049999.0 dateUnix = 1106513999.0
self.assertEqual(self.__datedetector.getTime(log), date) self.assertEqual(self.__datedetector.getTime(log), date)
self.assertEqual(self.__datedetector.getTime(log), date)
self.assertEqual(self.__datedetector.getTime(log), date)
self.assertEqual(self.__datedetector.getUnixTime(log), dateUnix)
self.assertEqual(self.__datedetector.getUnixTime(log), dateUnix)
self.assertEqual(self.__datedetector.getUnixTime(log), dateUnix) self.assertEqual(self.__datedetector.getUnixTime(log), dateUnix)

View File

@ -1,18 +1,19 @@
Déc 31 23:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128 Déc 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128
Déc 31 23:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128 Déc 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128
Déc 31 23:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128 Déc 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128
Dec 31 23:59:59 [sshd] error: PAM: Authentication failure for kevin from failed.dns.ch Dec 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from failed.dns.ch
Dec 31 23:59:59 [sshd] error: PAM: Authentication failure for kevin from failed.dns.ch Dec 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from failed.dns.ch
Dec 31 23:59:59 [sshd] error: PAM: Authentication failure for kevin from failed.dns.ch Dec 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from failed.dns.ch
Dez 31 23:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128 Dez 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128
Dez 31 23:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128 Dez 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128
Dez 31 23:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128 Dez 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128
De 31 23:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128 De 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128
De 31 23:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128 De 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128
De 31 23:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128 De 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128
Dec 31 23:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128 Aug 14 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128
Dec 31 23:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128 Aug 14 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128
Dec 31 23:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128 Aug 14 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128
Dec 31 23:59:59 [sshd] error: PAM: Authentication failure for kevin from 87.142.124.10 Dec 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 87.142.124.10
Dec 31 23:59:59 [sshd] error: PAM: Authentication failure for kevin from 87.142.124.10 Dec 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 87.142.124.10
Dec 31 23:59:59 [sshd] error: PAM: Authentication failure for kevin from 87.142.124.10 Dec 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 87.142.124.10
Dec 31 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 87.142.124.10

View File

@ -8,3 +8,6 @@ Mar 16 10:34:01 i60p295 sshd[12365]: Postponed keyboard-interactive/pam for roeh
Mar 16 10:34:01 i60p295 sshd[12365]: Accepted keyboard-interactive/pam for roehl from ::ffff:141.3.81.106 port 51332 ssh2 Mar 16 10:34:01 i60p295 sshd[12365]: Accepted keyboard-interactive/pam for roehl from ::ffff:141.3.81.106 port 51332 ssh2
Mär 16 10:33:59 i60p295 sshd[12365]: Failed publickey for roehl from ::ffff:141.3.81.106 port 51332 ssh2 Mär 16 10:33:59 i60p295 sshd[12365]: Failed publickey for roehl from ::ffff:141.3.81.106 port 51332 ssh2
Mär 16 10:33:59 i60p295 sshd[12365]: Failed publickey for roehl from ::ffff:141.3.81.106 port 51332 ssh2 Mär 16 10:33:59 i60p295 sshd[12365]: Failed publickey for roehl from ::ffff:141.3.81.106 port 51332 ssh2
Mar 16 10:35:01 i60p295 sshd[12365]: Accepted keyboard-interactive/pam for roehl from ::ffff:141.3.81.106 port 51332 ssh2
Mar 16 10:36:01 i60p295 sshd[12365]: Accepted keyboard-interactive/pam for roehl from ::ffff:141.3.81.106 port 51332 ssh2
Mar 16 10:37:01 i60p295 sshd[12365]: Accepted keyboard-interactive/pam for roehl from ::ffff:141.3.81.106 port 51332 ssh2

View File

@ -26,13 +26,14 @@ __license__ = "GPL"
import unittest, socket import unittest, socket
from server.filterpoll import FilterPoll from server.filterpoll import FilterPoll
from server.filter import Filter
from server.failmanager import FailManager from server.failmanager import FailManager
class IgnoreIP(unittest.TestCase): class IgnoreIP(unittest.TestCase):
def setUp(self): def setUp(self):
"""Call before every test case.""" """Call before every test case."""
self.__filter = FilterPoll(None) self.__filter = Filter(None)
def tearDown(self): def tearDown(self):
"""Call after every test case.""" """Call after every test case."""
@ -77,29 +78,30 @@ class LogFile(unittest.TestCase):
class GetFailures(unittest.TestCase): class GetFailures(unittest.TestCase):
FILENAME = "testcases/files/testcase01.log"
def setUp(self): def setUp(self):
"""Call before every test case.""" """Call before every test case."""
self.__filter = FilterPoll(None) self.__filter = Filter(None)
self.__filter.addLogPath("testcases/files/testcase01.log") self.__filter.addLogPath(FILENAME)
self.__filter.setTimeRegex("\S{3}\s{1,2}\d{1,2} \d{2}:\d{2}:\d{2}") #self.__filter.setTimeRegex("\S{3}\s{1,2}\d{1,2} \d{2}:\d{2}:\d{2}")
self.__filter.setTimePattern("%b %d %H:%M:%S") #self.__filter.setTimePattern("%b %d %H:%M:%S")
self.__filter.setFailRegex("(?:(?:Authentication failure|Failed [-/\w+]+) for(?: [iI](?:llegal|nvalid) user)?|[Ii](?:llegal|nvalid) user|ROOT LOGIN REFUSED) .*(?: from|FROM) (?:::f{4,6}:)?(?P<host>\S*)") self.__filter.setFailRegex("(?:(?:Authentication failure|Failed [-/\w+]+) for(?: [iI](?:llegal|nvalid) user)?|[Ii](?:llegal|nvalid) user|ROOT LOGIN REFUSED) .*(?: from|FROM) (?:::f{4,6}:)?(?P<host>\S*)")
def tearDown(self): def tearDown(self):
"""Call after every test case.""" """Call after every test case."""
def testGetFailures(self): def testGetFailures(self):
output = [('87.142.124.10', 3, 1167605999.0), output = ('193.168.0.128', 3, 1124013599.0)
('193.168.0.128', 3, 1167605999.0)]
self.__filter.openLogFile() self.__filter.getFailures(FILENAME)
self.__filter.getFailures()
ticket = self.__filter.failManager.toBan()
attempts = ticket.getAttempt()
date = ticket.getTime()
ip = ticket.getIP()
found = (ip, attempts, date)
found = []
for ip in self.__filter.failManager.failList:
fData = self.__filter.failManager.failList[ip]
retry = fData.getRetry()
lTime = fData.getLastTime()
found.append((ip, retry, lTime))
self.assertEqual(found, output) self.assertEqual(found, output)