mirror of https://github.com/fail2ban/fail2ban
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
3.3 KiB
127 lines
3.3 KiB
# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
|
|
# Author: Cyril Jaquier |
|
# |
|
# $Revision$ |
|
|
|
__author__ = "Cyril Jaquier" |
|
__version__ = "$Revision$" |
|
__date__ = "$Date$" |
|
__copyright__ = "Copyright (c) 2004 Cyril Jaquier" |
|
__license__ = "GPL" |
|
|
|
import unittest, socket, time |
|
from server.server import Server |
|
|
|
class StartStop(unittest.TestCase): |
|
|
|
def setUp(self): |
|
"""Call before every test case.""" |
|
self.server = Server() |
|
self.server.setLogLevel(0) |
|
self.server.start() |
|
|
|
def tearDown(self): |
|
"""Call after every test case.""" |
|
self.server.quit() |
|
|
|
def testStartStopJail(self): |
|
name = "TestCase" |
|
self.server.addJail(name) |
|
self.server.startJail(name) |
|
time.sleep(1) |
|
self.server.stopJail(name) |
|
|
|
|
|
class Transmitter(unittest.TestCase): |
|
|
|
def setUp(self): |
|
"""Call before every test case.""" |
|
self.server = Server() |
|
self.server.setLogLevel(0) |
|
self.server.start() |
|
|
|
def tearDown(self): |
|
"""Call after every test case.""" |
|
self.server.quit() |
|
|
|
def testSetActionOK(self): |
|
name = "TestCase" |
|
cmdList = [["add", name], |
|
["set", name, "actionstart", "Action Start"], |
|
["set", name, "actionstop", "Action Stop"], |
|
["set", name, "actioncheck", "Action Check"], |
|
["set", name, "actionban", "Action Ban"], |
|
["set", name, "actionunban", "Action Unban"], |
|
["quit"]] |
|
|
|
outList = [(0, name), |
|
(0, 'Action Start'), |
|
(0, 'Action Stop'), |
|
(0, 'Action Check'), |
|
(0, 'Action Ban'), |
|
(0, 'Action Unban'), |
|
(0, None)] |
|
|
|
cnt = 0 |
|
for cmd in cmdList: |
|
self.assertEqual(self.server.transm.proceed(cmd), outList[cnt]) |
|
cnt += 1 |
|
|
|
def testSetActionNOK(self): |
|
name = "TestCase" |
|
cmdList = [["addd", name], |
|
["set", name, "test"], |
|
["prout prout", "Stop"], |
|
["fail2ban", "sucks"], |
|
["set"], |
|
["_/&%", "@*+%&"], |
|
[" quit"]] |
|
|
|
outList = [1, |
|
1, |
|
1, |
|
1, |
|
1, |
|
1, |
|
1] |
|
|
|
cnt = 0 |
|
for cmd in cmdList: |
|
msg = self.server.transm.proceed(cmd) |
|
self.assertEqual(msg[0], outList[cnt]) |
|
cnt += 1 |
|
|
|
def testJail(self): |
|
name = "TestCase" |
|
cmdList = [["add", name], |
|
["set", name, "logpath", "testcases/files/testcase01.log"], |
|
["set", name, "timeregex", "\S{3}\s{1,2}\d{1,2} \d{2}:\d{2}:\d{2}"], |
|
["set", name, "timepattern", "%b %d %H:%M:%S"], |
|
["set", name, "failregex", "Authentication failure"], |
|
["start", name], |
|
["stop", name], |
|
["quit"]] |
|
|
|
for cmd in cmdList: |
|
self.server.transm.proceed(cmd) |
|
if cmd == ["start", name]: |
|
time.sleep(2) |
|
jail = self.server.jails[name] |
|
self.assertEqual(jail.getFilter().failManager.size(), 0) |
|
self.assertEqual(jail.getAction().banManager.size(), 2) |
|
|