mirror of https://github.com/fail2ban/fail2ban
- Some object-oriented code testing
git-svn-id: https://fail2ban.svn.sourceforge.net/svnroot/fail2ban/trunk@6 a942ae1a-1317-0410-a47c-b1dcaea8d6050.5
parent
5eb163bc03
commit
f943028449
22
fail2ban
22
fail2ban
|
@ -20,9 +20,17 @@
|
||||||
#
|
#
|
||||||
# $Revision$
|
# $Revision$
|
||||||
|
|
||||||
|
__author__ = "Cyril Jaquier"
|
||||||
|
__version__ = "$Revision$"
|
||||||
|
__date__ = "$Date$"
|
||||||
|
__copyright__ = "Copyright (c) 2004 Cyril Jaquier"
|
||||||
|
__license__ = "GPL"
|
||||||
|
|
||||||
import posix,sys,os
|
import posix,sys,os
|
||||||
import string,re,time
|
import string,re,time
|
||||||
|
|
||||||
|
from firewall.iptables import Iptables
|
||||||
|
|
||||||
def checkForRoot():
|
def checkForRoot():
|
||||||
""" Check for root user.
|
""" Check for root user.
|
||||||
"""
|
"""
|
||||||
|
@ -32,6 +40,7 @@ def checkForRoot():
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
# start: To be removed
|
||||||
def executeCmd(cmd):
|
def executeCmd(cmd):
|
||||||
return #os.system(cmd)
|
return #os.system(cmd)
|
||||||
|
|
||||||
|
@ -44,6 +53,7 @@ def banIP(ip):
|
||||||
iptables = 'iptables -I INPUT 1 -i eth0 -s '+ip+' -j DROP'
|
iptables = 'iptables -I INPUT 1 -i eth0 -s '+ip+' -j DROP'
|
||||||
executeCmd(iptables)
|
executeCmd(iptables)
|
||||||
print iptables
|
print iptables
|
||||||
|
# end:
|
||||||
|
|
||||||
def checkForUnBan(banList, currentTime, banTime):
|
def checkForUnBan(banList, currentTime, banTime):
|
||||||
""" Check for user to remove from ban list.
|
""" Check for user to remove from ban list.
|
||||||
|
@ -87,11 +97,21 @@ def parseLogLine(line):
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
||||||
|
# start: For object oriented testing
|
||||||
|
f = Iptables()
|
||||||
|
f.banIP('11', 1231)
|
||||||
|
f.banIP('13', 1232)
|
||||||
|
f.banIP('13', 1233)
|
||||||
|
f.unBanIP('11')
|
||||||
|
f.viewBanList()
|
||||||
|
f.flushBanList()
|
||||||
|
# end:
|
||||||
|
|
||||||
if not checkForRoot():
|
if not checkForRoot():
|
||||||
print "You must be root."
|
print "You must be root."
|
||||||
#sys.exit(-1)
|
#sys.exit(-1)
|
||||||
|
|
||||||
logPath = './log/temp'
|
logPath = './log-test/test'
|
||||||
banTime = 60
|
banTime = 60
|
||||||
ignoreIPs = '127.0.0.1'
|
ignoreIPs = '127.0.0.1'
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
# 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"
|
|
@ -0,0 +1,52 @@
|
||||||
|
# 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"
|
||||||
|
|
||||||
|
class Firewall:
|
||||||
|
|
||||||
|
banList = dict()
|
||||||
|
|
||||||
|
def addBanIP(self, ip, time):
|
||||||
|
self.banList[ip] = time
|
||||||
|
|
||||||
|
def delBanIP(self, ip):
|
||||||
|
del self.banList[ip]
|
||||||
|
|
||||||
|
def flushBanList(self):
|
||||||
|
iterBanList = self.banList.iteritems()
|
||||||
|
for i in range(len(self.banList)):
|
||||||
|
element = iterBanList.next()
|
||||||
|
ip = element[0]
|
||||||
|
self.unBanIP(ip)
|
||||||
|
|
||||||
|
def executeCmd(self, cmd):
|
||||||
|
return #os.system(cmd)
|
||||||
|
|
||||||
|
def viewBanList(self):
|
||||||
|
iterBanList = self.banList.iteritems()
|
||||||
|
for i in range(len(self.banList)):
|
||||||
|
element = iterBanList.next()
|
||||||
|
print element
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
# 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"
|
||||||
|
|
||||||
|
from firewall import Firewall
|
||||||
|
|
||||||
|
class Iptables(Firewall):
|
||||||
|
|
||||||
|
def banIP(self, ip, time):
|
||||||
|
query = 'iptables -I INPUT 1 -i eth0 -s '+str(ip)+' -j DROP'
|
||||||
|
self.addBanIP(ip, time)
|
||||||
|
self.executeCmd(query)
|
||||||
|
print query
|
||||||
|
|
||||||
|
def unBanIP(self, ip):
|
||||||
|
query = 'iptables -D INPUT -i eth0 -s '+str(ip)+' -j DROP'
|
||||||
|
self.delBanIP(ip)
|
||||||
|
self.executeCmd(query)
|
||||||
|
print query
|
Loading…
Reference in New Issue