fail2ban/debian/patches/convert-to-python3.patch
2014-09-12 22:24:52 -05:00

1556 lines
56 KiB
Diff

Description: Port to python3 (generated by 2to3)
Author: Daniel Schaal <farbing@web.de>
Origin: other
Forwarded: not-needed
Last-Update: 2014-09-12
--- fail2ban-0.9.0+git48-gabcab00.orig/bin/fail2ban-client
+++ fail2ban-0.9.0+git48-gabcab00/bin/fail2ban-client
@@ -57,51 +57,51 @@ class Fail2banClient:
self.__conf["pidfile"] = None
def dispVersion(self):
- print "Fail2Ban v" + version
- print
- print "Copyright (c) 2004-2008 Cyril Jaquier, 2008- Fail2Ban Contributors"
- print "Copyright of modifications held by their respective authors."
- print "Licensed under the GNU General Public License v2 (GPL)."
- print
- print "Written by Cyril Jaquier <cyril.jaquier@fail2ban.org>."
- print "Many contributions by Yaroslav O. Halchenko <debian@onerussian.com>."
+ print("Fail2Ban v" + version)
+ print()
+ print("Copyright (c) 2004-2008 Cyril Jaquier, 2008- Fail2Ban Contributors")
+ print("Copyright of modifications held by their respective authors.")
+ print("Licensed under the GNU General Public License v2 (GPL).")
+ print()
+ print("Written by Cyril Jaquier <cyril.jaquier@fail2ban.org>.")
+ print("Many contributions by Yaroslav O. Halchenko <debian@onerussian.com>.")
def dispUsage(self):
""" Prints Fail2Ban command line options and exits
"""
- print "Usage: "+self.__argv[0]+" [OPTIONS] <COMMAND>"
- print
- print "Fail2Ban v" + version + " reads log file that contains password failure report"
- print "and bans the corresponding IP addresses using firewall rules."
- print
- print "Options:"
- print " -c <DIR> configuration directory"
- print " -s <FILE> socket path"
- print " -p <FILE> pidfile path"
- print " -d dump configuration. For debugging"
- print " -i interactive mode"
- print " -v increase verbosity"
- print " -q decrease verbosity"
- print " -x force execution of the server (remove socket file)"
- print " -h, --help display this help message"
- print " -V, --version print the version"
- print
- print "Command:"
+ print("Usage: "+self.__argv[0]+" [OPTIONS] <COMMAND>")
+ print()
+ print("Fail2Ban v" + version + " reads log file that contains password failure report")
+ print("and bans the corresponding IP addresses using firewall rules.")
+ print()
+ print("Options:")
+ print(" -c <DIR> configuration directory")
+ print(" -s <FILE> socket path")
+ print(" -p <FILE> pidfile path")
+ print(" -d dump configuration. For debugging")
+ print(" -i interactive mode")
+ print(" -v increase verbosity")
+ print(" -q decrease verbosity")
+ print(" -x force execution of the server (remove socket file)")
+ print(" -h, --help display this help message")
+ print(" -V, --version print the version")
+ print()
+ print("Command:")
# Prints the protocol
printFormatted()
- print
- print "Report bugs to https://github.com/fail2ban/fail2ban/issues"
+ print()
+ print("Report bugs to https://github.com/fail2ban/fail2ban/issues")
def dispInteractive(self):
- print "Fail2Ban v" + version + " reads log file that contains password failure report"
- print "and bans the corresponding IP addresses using firewall rules."
- print
+ print("Fail2Ban v" + version + " reads log file that contains password failure report")
+ print("and bans the corresponding IP addresses using firewall rules.")
+ print()
def __sigTERMhandler(self, signum, frame):
# Print a new line because we probably come from wait
- print
+ print()
logSys.warning("Caught signal %d. Exiting" % signum)
sys.exit(-1)
@@ -144,19 +144,19 @@ class Fail2banClient:
client = CSocket(self.__conf["socket"])
ret = client.send(c)
if ret[0] == 0:
- logSys.debug("OK : " + `ret[1]`)
+ logSys.debug("OK : " + repr(ret[1]))
if showRet:
- print beautifier.beautify(ret[1])
+ print(beautifier.beautify(ret[1]))
else:
- logSys.error("NOK: " + `ret[1].args`)
+ logSys.error("NOK: " + repr(ret[1].args))
if showRet:
- print beautifier.beautifyError(ret[1])
+ print(beautifier.beautifyError(ret[1]))
streamRet = False
except socket.error:
if showRet:
logSys.error("Unable to contact server. Is it running?")
return False
- except Exception, e:
+ except Exception as e:
if showRet:
logSys.error(e)
return False
@@ -370,7 +370,7 @@ class Fail2banClient:
readline.parse_and_bind("tab: complete")
self.dispInteractive()
while True:
- cmd = raw_input(self.PROMPT)
+ cmd = input(self.PROMPT)
if cmd == "exit" or cmd == "quit":
# Exit
return True
@@ -379,10 +379,10 @@ class Fail2banClient:
elif not cmd == "":
try:
self.__processCommand(shlex.split(cmd))
- except Exception, e:
+ except Exception as e:
logSys.error(e)
except (EOFError, KeyboardInterrupt):
- print
+ print()
return True
# Single command mode
else:
@@ -400,7 +400,7 @@ class Fail2banClient:
ret = self.__configurator.getOptions(jail)
self.__configurator.convertToProtocol()
self.__stream = self.__configurator.getConfigStream()
- except Exception, e:
+ except Exception as e:
logSys.error("Failed during configuration: %s" % e)
ret = False
return ret
@@ -408,7 +408,7 @@ class Fail2banClient:
#@staticmethod
def dumpConfig(cmd):
for c in cmd:
- print c
+ print(c)
return True
dumpConfig = staticmethod(dumpConfig)
--- fail2ban-0.9.0+git48-gabcab00.orig/bin/fail2ban-regex
+++ fail2ban-0.9.0+git48-gabcab00/bin/fail2ban-regex
@@ -29,10 +29,10 @@ __author__ = "Cyril Jaquier, Yaroslav Ha
__copyright__ = "Copyright (c) 2004-2008 Cyril Jaquier, 2012-2013 Yaroslav Halchenko"
__license__ = "GPL"
-import getopt, sys, time, logging, os, locale, shlex, urllib
+import getopt, sys, time, logging, os, locale, shlex, urllib.request, urllib.parse, urllib.error
from optparse import OptionParser, Option
-from ConfigParser import NoOptionError, NoSectionError, MissingSectionHeaderError
+from configparser import NoOptionError, NoSectionError, MissingSectionHeaderError
try:
from systemd import journal
@@ -50,7 +50,7 @@ from fail2ban.tests.utils import Formatt
logSys = logging.getLogger("fail2ban")
def debuggexURL(sample, regex):
- q = urllib.urlencode({ 're': regex.replace('<HOST>', '(?&.ipv4)'),
+ q = urllib.parse.urlencode({ 're': regex.replace('<HOST>', '(?&.ipv4)'),
'str': sample,
'flavor': 'python' })
return 'http://www.debuggex.com/?' + q
@@ -69,7 +69,7 @@ def pprint_list(l, header=None):
s = "|- %s\n" % header
else:
s = ''
- print s + "| " + "\n| ".join(l) + '\n`-'
+ print(s + "| " + "\n| ".join(l) + '\n`-')
def file_lines_gen(hdlr):
for line in hdlr:
@@ -243,14 +243,14 @@ class Fail2banRegex(object):
self._filter.setDatePattern(pattern)
self._datepattern_set = True
if pattern is not None:
- print "Use datepattern : %s" % (
- self._filter.getDatePattern()[1], )
+ print("Use datepattern : %s" % (
+ self._filter.getDatePattern()[1], ))
def setMaxLines(self, v):
if not self._maxlines_set:
self._filter.setMaxLines(int(v))
self._maxlines_set = True
- print "Use maxlines : %d" % self._filter.getMaxLines()
+ print("Use maxlines : %d" % self._filter.getMaxLines())
def setJournalMatch(self, v):
if self._journalmatch is None:
@@ -260,7 +260,7 @@ class Fail2banRegex(object):
assert(regextype in ('fail', 'ignore'))
regex = regextype + 'regex'
if os.path.isfile(value):
- print "Use %11s file : %s" % (regex, value)
+ print("Use %11s file : %s" % (regex, value))
reader = FilterReader(value, 'fail2ban-regex-jail', {})
reader.setBaseDir(None)
@@ -269,9 +269,7 @@ class Fail2banRegex(object):
readercommands = reader.convert()
regex_values = [
RegexStat(m[3])
- for m in filter(
- lambda x: x[0] == 'set' and x[2] == "add%sregex" % regextype,
- readercommands)]
+ for m in [x for x in readercommands if x[0] == 'set' and x[2] == "add%sregex" % regextype]]
# Read out and set possible value of maxlines
for command in readercommands:
if command[2] == "maxlines":
@@ -279,8 +277,8 @@ class Fail2banRegex(object):
try:
self.setMaxLines(maxlines)
except ValueError:
- print "ERROR: Invalid value for maxlines (%(maxlines)r) " \
- "read from %(value)s" % locals()
+ print("ERROR: Invalid value for maxlines (%(maxlines)r) " \
+ "read from %(value)s" % locals())
return False
elif command[2] == 'addjournalmatch':
journalmatch = command[3]
@@ -289,10 +287,10 @@ class Fail2banRegex(object):
datepattern = command[3]
self.setDatePattern(datepattern)
else:
- print "ERROR: failed to read %s" % value
+ print("ERROR: failed to read %s" % value)
return False
else:
- print "Use %11s line : %s" % (regex, shortstr(value))
+ print("Use %11s line : %s" % (regex, shortstr(value)))
regex_values = [RegexStat(value)]
setattr(self, "_" + regex, regex_values)
@@ -309,8 +307,8 @@ class Fail2banRegex(object):
if ret is not None:
found = True
regex = self._ignoreregex[ret].inc()
- except RegexException, e:
- print e
+ except RegexException as e:
+ print(e)
return False
return found
@@ -326,11 +324,11 @@ class Fail2banRegex(object):
regex = self._failregex[match[0]]
regex.inc()
regex.appendIP(match)
- except RegexException, e:
- print e
+ except RegexException as e:
+ print(e)
return False
except IndexError:
- print "Sorry, but no <HOST> found in regex"
+ print("Sorry, but no <HOST> found in regex")
return False
for bufLine in orgLineBuffer[int(fullBuffer):]:
if bufLine not in self._filter._Filter__lineBuffer:
@@ -402,21 +400,21 @@ class Fail2banRegex(object):
ans = [[]]
for arg in [l, regexlist]:
ans = [ x + [y] for x in ans for y in arg ]
- b = map(lambda a: a[0] + ' | ' + a[1].getFailRegex() + ' | ' + debuggexURL(a[0], a[1].getFailRegex()), ans)
+ b = [a[0] + ' | ' + a[1].getFailRegex() + ' | ' + debuggexURL(a[0], a[1].getFailRegex()) for a in ans]
pprint_list([x.rstrip() for x in b], header)
else:
- print "%s too many to print. Use --print-all-%s " \
- "to print all %d lines" % (header, ltype, lines)
+ print("%s too many to print. Use --print-all-%s " \
+ "to print all %d lines" % (header, ltype, lines))
elif lines < self._maxlines or getattr(self, '_print_all_' + ltype):
pprint_list([x.rstrip() for x in l], header)
else:
- print "%s too many to print. Use --print-all-%s " \
- "to print all %d lines" % (header, ltype, lines)
+ print("%s too many to print. Use --print-all-%s " \
+ "to print all %d lines" % (header, ltype, lines))
def printStats(self):
- print
- print "Results"
- print "======="
+ print()
+ print("Results")
+ print("=======")
def print_failregexes(title, failregexes):
# Print title
@@ -437,7 +435,7 @@ class Fail2banRegex(object):
timeString,
ip[-1] and " (multiple regex matched)" or ""))
- print "\n%s: %d total" % (title, total)
+ print("\n%s: %d total" % (title, total))
pprint_list(out, " #) [# of hits] regular expression")
return total
@@ -447,7 +445,7 @@ class Fail2banRegex(object):
if self._filter.dateDetector is not None:
- print "\nDate template hits:"
+ print("\nDate template hits:")
out = []
for template in self._filter.dateDetector.templates:
if self._verbose or template.hits:
@@ -455,7 +453,7 @@ class Fail2banRegex(object):
template.hits, template.name))
pprint_list(out, "[# of hits] date format")
- print "\nLines: %s" % self._line_stats
+ print("\nLines: %s" % self._line_stats)
if self._print_all_matched:
self.printLines('matched')
@@ -480,10 +478,10 @@ if __name__ == "__main__":
parser.print_help()
sys.exit(-1)
- print
- print "Running tests"
- print "============="
- print
+ print()
+ print("Running tests")
+ print("=============")
+ print()
fail2banRegex = Fail2banRegex(opts)
@@ -532,15 +530,15 @@ if __name__ == "__main__":
if os.path.isfile(cmd_log):
try:
hdlr = open(cmd_log, 'rb')
- print "Use log file : %s" % cmd_log
- print "Use encoding : %s" % fail2banRegex.encoding
+ print("Use log file : %s" % cmd_log)
+ print("Use encoding : %s" % fail2banRegex.encoding)
test_lines = file_lines_gen(hdlr)
- except IOError, e:
- print e
+ except IOError as e:
+ print(e)
sys.exit(-1)
elif cmd_log == "systemd-journal":
if not journal:
- print "Error: systemd library not found. Exiting..."
+ print("Error: systemd library not found. Exiting...")
sys.exit(-1)
myjournal = journal.Reader(converters={'__CURSOR': lambda x: x})
journalmatch = fail2banRegex._journalmatch
@@ -553,14 +551,14 @@ if __name__ == "__main__":
else:
myjournal.add_match(element)
except ValueError:
- print "Error: Invalid journalmatch: %s" % shortstr(" ".join(journalmatch))
+ print("Error: Invalid journalmatch: %s" % shortstr(" ".join(journalmatch)))
sys.exit(-1)
- print "Use journal match : %s" % " ".join(journalmatch)
+ print("Use journal match : %s" % " ".join(journalmatch))
test_lines = journal_lines_gen(myjournal)
else:
- print "Use single line : %s" % shortstr(cmd_log)
+ print("Use single line : %s" % shortstr(cmd_log))
test_lines = [ cmd_log ]
- print
+ print()
fail2banRegex.process(test_lines)
--- fail2ban-0.9.0+git48-gabcab00.orig/bin/fail2ban-server
+++ fail2ban-0.9.0+git48-gabcab00/bin/fail2ban-server
@@ -50,37 +50,37 @@ class Fail2banServer:
self.__conf["pidfile"] = "/var/run/fail2ban/fail2ban.pid"
def dispVersion(self):
- print "Fail2Ban v" + version
- print
- print "Copyright (c) 2004-2008 Cyril Jaquier, 2008- Fail2Ban Contributors"
- print "Copyright of modifications held by their respective authors."
- print "Licensed under the GNU General Public License v2 (GPL)."
- print
- print "Written by Cyril Jaquier <cyril.jaquier@fail2ban.org>."
- print "Many contributions by Yaroslav O. Halchenko <debian@onerussian.com>."
+ print("Fail2Ban v" + version)
+ print()
+ print("Copyright (c) 2004-2008 Cyril Jaquier, 2008- Fail2Ban Contributors")
+ print("Copyright of modifications held by their respective authors.")
+ print("Licensed under the GNU General Public License v2 (GPL).")
+ print()
+ print("Written by Cyril Jaquier <cyril.jaquier@fail2ban.org>.")
+ print("Many contributions by Yaroslav O. Halchenko <debian@onerussian.com>.")
def dispUsage(self):
""" Prints Fail2Ban command line options and exits
"""
- print "Usage: "+self.__argv[0]+" [OPTIONS]"
- print
- print "Fail2Ban v" + version + " reads log file that contains password failure report"
- print "and bans the corresponding IP addresses using firewall rules."
- print
- print "Only use this command for debugging purpose. Start the server with"
- print "fail2ban-client instead. The default behaviour is to start the server"
- print "in background."
- print
- print "Options:"
- print " -b start in background"
- print " -f start in foreground"
- print " -s <FILE> socket path"
- print " -p <FILE> pidfile path"
- print " -x force execution of the server (remove socket file)"
- print " -h, --help display this help message"
- print " -V, --version print the version"
- print
- print "Report bugs to https://github.com/fail2ban/fail2ban/issues"
+ print("Usage: "+self.__argv[0]+" [OPTIONS]")
+ print()
+ print("Fail2Ban v" + version + " reads log file that contains password failure report")
+ print("and bans the corresponding IP addresses using firewall rules.")
+ print()
+ print("Only use this command for debugging purpose. Start the server with")
+ print("fail2ban-client instead. The default behaviour is to start the server")
+ print("in background.")
+ print()
+ print("Options:")
+ print(" -b start in background")
+ print(" -f start in foreground")
+ print(" -s <FILE> socket path")
+ print(" -p <FILE> pidfile path")
+ print(" -x force execution of the server (remove socket file)")
+ print(" -h, --help display this help message")
+ print(" -V, --version print the version")
+ print()
+ print("Report bugs to https://github.com/fail2ban/fail2ban/issues")
def __getCmdLineOptions(self, optList):
""" Gets the command line options
@@ -124,7 +124,7 @@ class Fail2banServer:
self.__conf["pidfile"],
self.__conf["force"])
return True
- except Exception, e:
+ except Exception as e:
logSys.exception(e)
self.__server.quit()
return False
--- fail2ban-0.9.0+git48-gabcab00.orig/bin/fail2ban-testcases
+++ fail2ban-0.9.0+git48-gabcab00/bin/fail2ban-testcases
@@ -113,8 +113,8 @@ logSys.addHandler(stdout)
# Let know the version
#
if not opts.log_level or opts.log_level != 'critical': # pragma: no cover
- print("Fail2ban %s test suite. Python %s. Please wait..." \
- % (version, str(sys.version).replace('\n', '')))
+ print(("Fail2ban %s test suite. Python %s. Please wait..." \
+ % (version, str(sys.version).replace('\n', ''))))
tests = gatherTests(regexps, opts.no_network)
#
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/client/beautifier.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/client/beautifier.py
@@ -46,7 +46,7 @@ class Beautifier:
return self.__inputCmd
def beautify(self, response):
- logSys.debug("Beautify " + `response` + " with " + `self.__inputCmd`)
+ logSys.debug("Beautify " + repr(response) + " with " + repr(self.__inputCmd))
inC = self.__inputCmd
msg = response
try:
@@ -98,7 +98,7 @@ class Beautifier:
elif response == 4:
msg = msg + "DEBUG"
else:
- msg = msg + `response`
+ msg = msg + repr(response)
elif inC[1] == "dbfile":
if response is None:
msg = "Database currently disabled"
@@ -179,13 +179,13 @@ class Beautifier:
msg += ", ".join(response)
except Exception:
logSys.warning("Beautifier error. Please report the error")
- logSys.error("Beautify " + `response` + " with " + `self.__inputCmd` +
+ logSys.error("Beautify " + repr(response) + " with " + repr(self.__inputCmd) +
" failed")
- msg = msg + `response`
+ msg = msg + repr(response)
return msg
def beautifyError(self, response):
- logSys.debug("Beautify (error) " + `response` + " with " + `self.__inputCmd`)
+ logSys.debug("Beautify (error) " + repr(response) + " with " + repr(self.__inputCmd))
msg = response
if isinstance(response, UnknownJailException):
msg = "Sorry but the jail '" + response[0] + "' does not exist"
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/client/configparserinc.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/client/configparserinc.py
@@ -57,7 +57,7 @@ if sys.version_info >= (3,2): # pragma:
parser, option, accum, rest, section, map, depth)
else: # pragma: no cover
- from ConfigParser import SafeConfigParser
+ from configparser import SafeConfigParser
# Gets the instance of the logger.
logSys = logging.getLogger(__name__)
@@ -121,7 +121,7 @@ after = 1.conf
parser.read(resource, encoding='utf-8')
else:
parser.read(resource)
- except UnicodeDecodeError, e:
+ except UnicodeDecodeError as e:
logSys.error("Error decoding config file '%s': %s" % (resource, e))
return []
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/client/configreader.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/client/configreader.py
@@ -25,7 +25,7 @@ __copyright__ = "Copyright (c) 2004 Cyri
__license__ = "GPL"
import glob, logging, os
-from ConfigParser import NoOptionError, NoSectionError
+from configparser import NoOptionError, NoSectionError
from .configparserinc import SafeConfigParserWithIncludes
@@ -66,7 +66,7 @@ class ConfigReader(SafeConfigParserWithI
config_files += sorted(glob.glob('%s/*.local' % config_dir))
# choose only existing ones
- config_files = filter(os.path.exists, config_files)
+ config_files = list(filter(os.path.exists, config_files))
if len(config_files):
# at least one config exists and accessible
@@ -110,7 +110,7 @@ class ConfigReader(SafeConfigParserWithI
if not pOptions is None and option[1] in pOptions:
continue
values[option[1]] = v
- except NoSectionError, e:
+ except NoSectionError as e:
# No "Definition" section or wrong basedir
logSys.error(e)
values[option[1]] = option[2]
@@ -122,7 +122,7 @@ class ConfigReader(SafeConfigParserWithI
values[option[1]] = option[2]
except ValueError:
logSys.warning("Wrong value for '" + option[1] + "' in '" + sec +
- "'. Using default one: '" + `option[2]` + "'")
+ "'. Using default one: '" + repr(option[2]) + "'")
values[option[1]] = option[2]
return values
@@ -169,7 +169,7 @@ class DefinitionInitConfigReader(ConfigR
if self.has_section("Init"):
for opt in self.options("Init"):
- if not self._initOpts.has_key(opt):
+ if opt not in self._initOpts:
self._initOpts[opt] = self.get("Init", opt)
def convert(self):
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/client/csocket.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/client/csocket.py
@@ -63,7 +63,7 @@ class CSocket:
while msg.rfind(CSocket.END_STRING) == -1:
chunk = sock.recv(6)
if chunk == '':
- raise RuntimeError, "socket connection broken"
+ raise RuntimeError("socket connection broken")
msg = msg + chunk
return loads(msg)
receive = staticmethod(receive)
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/client/filterreader.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/client/filterreader.py
@@ -48,7 +48,7 @@ class FilterReader(DefinitionInitConfigR
opts = CommandAction.substituteRecursiveTags(combinedopts)
if not opts:
raise ValueError('recursive tag definitions unable to be resolved')
- for opt, value in opts.iteritems():
+ for opt, value in opts.items():
if opt == "failregex":
for regex in value.split('\n'):
# Do not send a command if the rule is empty.
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/client/jailreader.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/client/jailreader.py
@@ -146,7 +146,7 @@ class JailReader(ConfigReader):
self.__actions.append(action)
else:
raise AttributeError("Unable to read action")
- except Exception, e:
+ except Exception as e:
logSys.error("Error in action definition " + act)
logSys.debug("Caught exception: %s" % (e,))
return False
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/protocol.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/protocol.py
@@ -127,7 +127,7 @@ def printFormatted():
firstHeading = False
for m in protocol:
if m[0] == '' and firstHeading:
- print
+ print()
firstHeading = True
first = True
if len(m[0]) >= MARGIN:
@@ -138,7 +138,7 @@ def printFormatted():
first = False
else:
line = ' ' * (INDENT + MARGIN) + n.strip()
- print line
+ print(line)
##
# Prints the protocol in a "mediawiki" format.
@@ -148,19 +148,19 @@ def printWiki():
for m in protocol:
if m[0] == '':
if firstHeading:
- print "|}"
+ print("|}")
__printWikiHeader(m[1], m[2])
firstHeading = True
else:
- print "|-"
- print "| <span style=\"white-space:nowrap;\"><tt>" + m[0] + "</tt></span> || || " + m[1]
- print "|}"
+ print("|-")
+ print("| <span style=\"white-space:nowrap;\"><tt>" + m[0] + "</tt></span> || || " + m[1])
+ print("|}")
def __printWikiHeader(section, desc):
- print
- print "=== " + section + " ==="
- print
- print desc
- print
- print "{|"
- print "| '''Command''' || || '''Description'''"
+ print()
+ print("=== " + section + " ===")
+ print()
+ print(desc)
+ print()
+ print("{|")
+ print("| '''Command''' || || '''Description'''")
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/server/action.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/server/action.py
@@ -25,6 +25,7 @@ import logging, os, subprocess, time, si
import threading, re
from abc import ABCMeta
from collections import MutableMapping
+import collections
#from subprocess import call
# Gets the instance of the logger.
@@ -46,7 +47,7 @@ _RETCODE_HINTS = {
# Dictionary to lookup signal name from number
signame = dict((num, name)
- for name, num in signal.__dict__.iteritems() if name.startswith("SIG"))
+ for name, num in signal.__dict__.items() if name.startswith("SIG"))
class CallingMap(MutableMapping):
"""A Mapping type which returns the result of callable values.
@@ -72,7 +73,7 @@ class CallingMap(MutableMapping):
def __getitem__(self, key):
value = self.data[key]
- if callable(value):
+ if isinstance(value, collections.Callable):
return value()
else:
return value
@@ -89,7 +90,7 @@ class CallingMap(MutableMapping):
def __len__(self):
return len(self.data)
-class ActionBase(object):
+class ActionBase(object, metaclass=ABCMeta):
"""An abstract base class for actions in Fail2Ban.
Action Base is a base definition of what methods need to be in
@@ -119,7 +120,6 @@ class ActionBase(object):
Any additional arguments specified in `jail.conf` or passed
via `fail2ban-client` will be passed as keyword arguments.
"""
- __metaclass__ = ABCMeta
@classmethod
def __subclasshook__(cls, C):
@@ -130,7 +130,7 @@ class ActionBase(object):
"unban",
)
for method in required:
- if not callable(getattr(C, method, None)):
+ if not isinstance(getattr(C, method, None), collections.Callable):
return False
return True
@@ -236,7 +236,7 @@ class CommandAction(ActionBase):
return dict(
(key, getattr(self, key))
for key in dir(self)
- if not key.startswith("_") and not callable(getattr(self, key)))
+ if not key.startswith("_") and not isinstance(getattr(self, key), collections.Callable))
@property
def actionstart(self):
@@ -373,7 +373,7 @@ class CommandAction(ActionBase):
within the values recursively replaced.
"""
t = re.compile(r'<([^ >]+)>')
- for tag, value in tags.iteritems():
+ for tag, value in tags.items():
value = str(value)
m = t.search(value)
done = []
@@ -386,7 +386,7 @@ class CommandAction(ActionBase):
#logSys.log(5, 'recursion fail tag: %s value: %s' % (tag, value) )
return False
else:
- if tags.has_key(found_tag):
+ if found_tag in tags:
value = value.replace('<%s>' % found_tag , tags[found_tag])
#logSys.log(5, 'value now: %s' % value)
done.append(found_tag)
@@ -550,7 +550,7 @@ class CommandAction(ActionBase):
os.kill(popen.pid, signal.SIGKILL) # Kill the process
time.sleep(0.1)
retcode = popen.poll()
- except OSError, e:
+ except OSError as e:
logSys.error("%s -- failed with %s" % (realCmd, e))
finally:
_cmd_lock.release()
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/server/actions.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/server/actions.py
@@ -210,7 +210,7 @@ class Actions(JailThread, Mapping):
bool
True when the thread exits nicely.
"""
- for name, action in self._actions.iteritems():
+ for name, action in self._actions.items():
try:
action.start()
except Exception as e:
@@ -227,7 +227,7 @@ class Actions(JailThread, Mapping):
time.sleep(self.sleeptime)
self.__flushBan()
- actions = self._actions.items()
+ actions = list(self._actions.items())
actions.reverse()
for name, action in actions:
try:
@@ -272,7 +272,7 @@ class Actions(JailThread, Mapping):
ip=bTicket.getIP(), jail=self._jail).getAttempt())
if self.__banManager.addBanTicket(bTicket):
logSys.notice("[%s] Ban %s" % (self._jail.name, aInfo["ip"]))
- for name, action in self._actions.iteritems():
+ for name, action in self._actions.items():
try:
action.ban(aInfo)
except Exception as e:
@@ -319,7 +319,7 @@ class Actions(JailThread, Mapping):
aInfo["time"] = ticket.getTime()
aInfo["matches"] = "".join(ticket.getMatches())
logSys.notice("[%s] Unban %s" % (self._jail.name, aInfo["ip"]))
- for name, action in self._actions.iteritems():
+ for name, action in self._actions.items():
try:
action.unban(aInfo)
except Exception as e:
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/server/database.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/server/database.py
@@ -134,7 +134,7 @@ class Fail2BanDb(object):
logSys.info(
"Connected to fail2ban persistent database '%s'", filename)
- except sqlite3.OperationalError, e:
+ except sqlite3.OperationalError as e:
logSys.error(
"Error connecting to fail2ban persistent database '%s': %s",
filename, e.args[0])
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/server/datetemplate.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/server/datetemplate.py
@@ -168,7 +168,7 @@ class DatePatternRegex(DateTemplate):
regex
pattern
"""
- _patternRE = r"%%(%%|[%s])" % "".join(timeRE.keys())
+ _patternRE = r"%%(%%|[%s])" % "".join(list(timeRE.keys()))
_patternName = {
'a': "DAY", 'A': "DAYNAME", 'b': "MON", 'B': "MONTH", 'd': "Day",
'H': "24hour", 'I': "12hour", 'j': "Yearday", 'm': "Month",
@@ -232,7 +232,7 @@ class DatePatternRegex(DateTemplate):
if dateMatch:
groupdict = dict(
(key, value)
- for key, value in dateMatch.groupdict().iteritems()
+ for key, value in dateMatch.groupdict().items()
if value is not None)
return reGroupDictStrptime(groupdict), dateMatch
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/server/failmanager.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/server/failmanager.py
@@ -90,7 +90,7 @@ class FailManager:
ip = ticket.getIP()
unixTime = ticket.getTime()
matches = ticket.getMatches()
- if self.__failList.has_key(ip):
+ if ip in self.__failList:
fData = self.__failList[ip]
if fData.getLastReset() < unixTime - self.__maxTime:
fData.setLastReset(unixTime)
@@ -111,7 +111,7 @@ class FailManager:
# in case of having many active failures, it should be ran only
# if debug level is "low" enough
failures_summary = ', '.join(['%s:%d' % (k, v.getRetry())
- for k,v in self.__failList.iteritems()])
+ for k,v in self.__failList.items()])
logSys.debug("Total # of detected failures: %d. Current failures from %d IPs (IP:count): %s"
% (self.__failTotal, len(self.__failList), failures_summary))
finally:
@@ -135,7 +135,7 @@ class FailManager:
self.__lock.release()
def __delFailure(self, ip):
- if self.__failList.has_key(ip):
+ if ip in self.__failList:
del self.__failList[ip]
def toBan(self):
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/server/filter.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/server/filter.py
@@ -99,7 +99,7 @@ class Filter(JailThread):
logSys.warning(
"Mutliline regex set for jail '%s' "
"but maxlines not greater than 1")
- except RegexException, e:
+ except RegexException as e:
logSys.error(e)
raise e
@@ -133,7 +133,7 @@ class Filter(JailThread):
try:
regex = Regex(value)
self.__ignoreRegex.append(regex)
- except RegexException, e:
+ except RegexException as e:
logSys.error(e)
raise e
@@ -309,7 +309,7 @@ class Filter(JailThread):
logSys.warning('Requested to manually ban an ignored IP %s. User knows best. Proceeding to ban it.' % ip)
unixTime = MyTime.time()
- for i in xrange(self.failManager.getMaxRetry()):
+ for i in range(self.failManager.getMaxRetry()):
self.failManager.addFailure(FailTicket(ip, unixTime))
# Perform the banning of the IP now.
@@ -360,7 +360,7 @@ class Filter(JailThread):
elif "." in s[1]: # 255.255.255.0 style mask
s[1] = len(re.search(
"(?<=b)1+", bin(DNSUtils.addr2bin(s[1]))).group())
- s[1] = long(s[1])
+ s[1] = int(s[1])
try:
a = DNSUtils.cidr(s[0], s[1])
b = DNSUtils.cidr(ip, s[1])
@@ -524,7 +524,7 @@ class Filter(JailThread):
failRegex.getMatchedLines()])
if not checkAllRegex:
break
- except RegexException, e: # pragma: no cover - unsure if reachable
+ except RegexException as e: # pragma: no cover - unsure if reachable
logSys.error(e)
return failList
@@ -655,15 +655,15 @@ class FileFilter(Filter):
try:
has_content = container.open()
# see http://python.org/dev/peps/pep-3151/
- except IOError, e:
+ except IOError as e:
logSys.error("Unable to open %s" % filename)
logSys.exception(e)
return False
- except OSError, e: # pragma: no cover - requires race condition to tigger this
+ except OSError as e: # pragma: no cover - requires race condition to tigger this
logSys.error("Error opening %s" % filename)
logSys.exception(e)
return False
- except OSError, e: # pragma: no cover - Requires implemention error in FileContainer to generate
+ except OSError as e: # pragma: no cover - Requires implemention error in FileContainer to generate
logSys.error("Internal errror in FileContainer open method - please report as a bug to https://github.com/fail2ban/fail2ban/issues")
logSys.exception(e)
return False
@@ -791,7 +791,7 @@ class FileContainer:
line = line.decode(self.getEncoding(), 'strict')
except UnicodeDecodeError:
logSys.warning("Error decoding line from '%s' with '%s': %s" %
- (self.getFileName(), self.getEncoding(), `line`))
+ (self.getFileName(), self.getEncoding(), repr(line)))
if sys.version_info >= (3,): # In python3, must be decoded
line = line.decode(self.getEncoding(), 'ignore')
return line
@@ -842,11 +842,11 @@ class DNSUtils:
"""
try:
return set(socket.gethostbyname_ex(dns)[2])
- except socket.error, e:
+ except socket.error as e:
logSys.warning("Unable to find a corresponding IP address for %s: %s"
% (dns, e))
return list()
- except socket.error, e:
+ except socket.error as e:
logSys.warning("Socket error raised trying to resolve hostname %s: %s"
% (dns, e))
return list()
@@ -906,7 +906,7 @@ class DNSUtils:
integer.
"""
# 32-bit IPv4 address mask
- MASK = 0xFFFFFFFFL
+ MASK = 0xFFFFFFFF
return ~(MASK >> n) & MASK & DNSUtils.addr2bin(i)
cidr = staticmethod(cidr)
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/server/filtergamin.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/server/filtergamin.py
@@ -61,7 +61,7 @@ class FilterGamin(FileFilter):
def callback(self, path, event):
- logSys.debug("Got event: " + `event` + " for " + path)
+ logSys.debug("Got event: " + repr(event) + " for " + path)
if event in (gamin.GAMCreated, gamin.GAMChanged, gamin.GAMExists):
logSys.debug("File changed: " + path)
self.__modified = True
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/server/filterpoll.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/server/filterpoll.py
@@ -135,7 +135,7 @@ class FilterPoll(FileFilter):
logSys.debug("%s has been modified", filename)
self.__prevStats[filename] = stats
return True
- except OSError, e:
+ except OSError as e:
logSys.error("Unable to get stat on %s because of: %s"
% (filename, e))
self.__file404Cnt[filename] += 1
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/server/filterpyinotify.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/server/filterpyinotify.py
@@ -43,7 +43,7 @@ if not hasattr(pyinotify, '__version__')
try:
manager = pyinotify.WatchManager()
del manager
-except Exception, e:
+except Exception as e:
raise ImportError("Pyinotify is probably not functional on this system: %s"
% str(e))
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/server/filtersystemd.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/server/filtersystemd.py
@@ -187,7 +187,7 @@ class FilterSystemd(JournalFilter): # pr
logelements.append(logentry.get('MESSAGE', ''))
try:
- logline = u" ".join(logelements)
+ logline = " ".join(logelements)
except UnicodeDecodeError:
# Python 2, so treat as string
logline = " ".join([str(logline) for logline in logelements])
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/server/jail.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/server/jail.py
@@ -23,7 +23,7 @@ __author__ = "Cyril Jaquier, Lee Clemens
__copyright__ = "Copyright (c) 2004 Cyril Jaquier, 2011-2012 Lee Clemens, 2012 Yaroslav Halchenko"
__license__ = "GPL"
-import Queue, logging
+import queue, logging
from .actions import Actions
@@ -70,7 +70,7 @@ class Jail:
"might not function correctly. Please shorten"
% name)
self.__name = name
- self.__queue = Queue.Queue()
+ self.__queue = queue.Queue()
self.__filter = None
logSys.info("Creating new jail '%s'" % self.name)
self._setBackend(backend)
@@ -103,7 +103,7 @@ class Jail:
logSys.info("Initiated %r backend" % b)
self.__actions = Actions(self)
return # we are done
- except ImportError, e:
+ except ImportError as e:
logSys.debug(
"Backend %r failed to initialize due to %s" % (b, e))
# log error since runtime error message isn't printed, INVALID COMMAND
@@ -114,25 +114,25 @@ class Jail:
def _initPolling(self):
- from filterpoll import FilterPoll
+ from .filterpoll import FilterPoll
logSys.info("Jail '%s' uses poller" % self.name)
self.__filter = FilterPoll(self)
def _initGamin(self):
# Try to import gamin
- from filtergamin import FilterGamin
+ from .filtergamin import FilterGamin
logSys.info("Jail '%s' uses Gamin" % self.name)
self.__filter = FilterGamin(self)
def _initPyinotify(self):
# Try to import pyinotify
- from filterpyinotify import FilterPyinotify
+ from .filterpyinotify import FilterPyinotify
logSys.info("Jail '%s' uses pyinotify" % self.name)
self.__filter = FilterPyinotify(self)
def _initSystemd(self): # pragma: systemd no cover
# Try to import systemd
- from filtersystemd import FilterSystemd
+ from .filtersystemd import FilterSystemd
logSys.info("Jail '%s' uses systemd" % self.name)
self.__filter = FilterSystemd(self)
@@ -196,7 +196,7 @@ class Jail:
"""
try:
return self.__queue.get(False)
- except Queue.Empty:
+ except queue.Empty:
return False
def start(self):
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/server/server.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/server/server.py
@@ -70,7 +70,7 @@ class Server:
signal.signal(signal.SIGINT, self.__sigTERMhandler)
# First set the mask to only allow access to owner
- os.umask(0077)
+ os.umask(0o077)
if self.__daemon: # pragma: no cover
logSys.info("Starting in daemon mode")
ret = self.__createDaemon()
@@ -86,20 +86,20 @@ class Server:
pidFile = open(pidfile, 'w')
pidFile.write("%s\n" % os.getpid())
pidFile.close()
- except IOError, e:
+ except IOError as e:
logSys.error("Unable to create PID file: %s" % e)
# Start the communication
logSys.debug("Starting communication")
try:
self.__asyncServer.start(sock, force)
- except AsyncServerException, e:
+ except AsyncServerException as e:
logSys.error("Could not start server: %s", e)
# Removes the PID file.
try:
logSys.debug("Remove PID file %s" % pidfile)
os.remove(pidfile)
- except OSError, e:
+ except OSError as e:
logSys.error("Unable to remove PID file: %s" % e)
logSys.info("Exiting Fail2ban")
@@ -155,7 +155,7 @@ class Server:
logSys.info("Stopping all jails")
try:
self.__lock.acquire()
- for jail in self.__jails.keys():
+ for jail in list(self.__jails.keys()):
self.stopJail(jail)
finally:
self.__lock.release()
@@ -482,7 +482,7 @@ class Server:
# the child gets a new PID, making it impossible for its PID to equal its
# PGID.
pid = os.fork()
- except OSError, e:
+ except OSError as e:
return((e.errno, e.strerror)) # ERROR (return a tuple)
if pid == 0: # The first child.
@@ -503,7 +503,7 @@ class Server:
# fork guarantees that the child is no longer a session leader, thus
# preventing the daemon from ever acquiring a controlling terminal.
pid = os.fork() # Fork a second child.
- except OSError, e:
+ except OSError as e:
return((e.errno, e.strerror)) # ERROR (return a tuple)
if (pid == 0): # The second child.
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/server/strptime.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/server/strptime.py
@@ -57,7 +57,7 @@ def reGroupDictStrptime(found_dict):
# weekday and julian defaulted to -1 so as to signal need to calculate
# values
weekday = julian = -1
- for group_key in found_dict.keys():
+ for group_key in list(found_dict.keys()):
# Directives not explicitly handled below:
# c, x, X
# handled by making out of other directives
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/server/ticket.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/server/ticket.py
@@ -62,7 +62,7 @@ class Ticket:
return False
def setIP(self, value):
- if isinstance(value, basestring):
+ if isinstance(value, str):
# guarantee using regular str instead of unicode for the IP
value = str(value)
self.__ip = value
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/server/transmitter.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/server/transmitter.py
@@ -26,6 +26,7 @@ __license__ = "GPL"
import logging, time
import json
+import collections
# Gets the instance of the logger.
logSys = logging.getLogger(__name__)
@@ -48,11 +49,11 @@ class Transmitter:
def proceed(self, command):
# Deserialize object
- logSys.debug("Command: " + `command`)
+ logSys.debug("Command: " + repr(command))
try:
ret = self.__commandHandler(command)
ack = 0, ret
- except Exception, e:
+ except Exception as e:
logSys.warning("Command %r has failed. Received %r"
% (command, e))
ack = 1, e
@@ -243,7 +244,7 @@ class Transmitter:
actionname = command[2]
actionkey = command[3]
action = self.__server.getAction(name, actionname)
- if callable(getattr(action, actionkey, None)):
+ if isinstance(getattr(action, actionkey, None), collections.Callable):
actionvalue = json.loads(command[4]) if len(command)>4 else {}
return getattr(action, actionkey)(**actionvalue)
else:
@@ -301,7 +302,7 @@ class Transmitter:
elif command[1] == "bantime":
return self.__server.getBanTime(name)
elif command[1] == "actions":
- return self.__server.getActions(name).keys()
+ return list(self.__server.getActions(name).keys())
elif command[1] == "action":
actionname = command[2]
actionvalue = command[3]
@@ -313,13 +314,13 @@ class Transmitter:
return [
key for key in dir(action)
if not key.startswith("_") and
- not callable(getattr(action, key))]
+ not isinstance(getattr(action, key), collections.Callable)]
elif command[1] == "actionmethods":
actionname = command[2]
action = self.__server.getAction(name, actionname)
return [
key for key in dir(action)
- if not key.startswith("_") and callable(getattr(action, key))]
+ if not key.startswith("_") and isinstance(getattr(action, key), collections.Callable)]
raise Exception("Invalid command (no get action or not yet implemented)")
def status(self, command):
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/tests/databasetestcase.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/tests/databasetestcase.py
@@ -92,7 +92,7 @@ class DatabaseTest(unittest.TestCase):
self.db = Fail2BanDb(self.dbFilename)
self.assertEqual(self.db.getJailNames(), set(['DummyJail #29162448 with 0 tickets']))
self.assertEqual(self.db.getLogPaths(), set(['/tmp/Fail2BanDb_pUlZJh.log']))
- ticket = FailTicket("127.0.0.1", 1388009242.26, [u"abc\n"])
+ ticket = FailTicket("127.0.0.1", 1388009242.26, ["abc\n"])
self.assertEqual(self.db.getBans()[0], ticket)
self.assertEqual(self.db.updateDb(Fail2BanDb.__version__), Fail2BanDb.__version__)
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/tests/datedetectortestcase.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/tests/datedetectortestcase.py
@@ -139,7 +139,7 @@ class DateDetectorTest(unittest.TestCase
self.assertEqual(logMatch.group(), '2012/10/11 02:37:17')
self.__datedetector.sortTemplate()
# confuse it with year being at the end
- for i in xrange(10):
+ for i in range(10):
( logTime, logMatch ) = self.__datedetector.getTime('11/10/2012 02:37:17 [error] 18434#0')
self.assertEqual(logTime, mu)
self.assertEqual(logMatch.group(), '11/10/2012 02:37:17')
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/tests/failmanagertestcase.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/tests/failmanagertestcase.py
@@ -33,11 +33,11 @@ class AddFailure(unittest.TestCase):
def setUp(self):
"""Call before every test case."""
- 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],
+ 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],
['87.142.124.10', 1167605999.0],
['87.142.124.10', 1167605999.0],
['87.142.124.10', 1167605999.0],
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/tests/files/config/apache-auth/digest.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/tests/files/config/apache-auth/digest.py
@@ -33,13 +33,13 @@ def auth(v):
response="%s"
""" % ( username, algorithm, realm, url, nonce, qop, response )
# opaque="%s",
- print p.method, p.url, p.headers
+ print(p.method, p.url, p.headers)
s = requests.Session()
return s.send(p)
def preauth():
r = requests.get(host + url)
- print r
+ print(r)
r.headers['www-authenticate'].split(', ')
return dict([ a.split('=',1) for a in r.headers['www-authenticate'].split(', ') ])
@@ -51,7 +51,7 @@ v = preauth()
username="username"
password = "password"
-print v
+print(v)
realm = 'so far away'
r = auth(v)
@@ -67,18 +67,18 @@ r = auth(v)
# [Sun Jul 28 21:41:20 2013] [error] [client 127.0.0.1] Digest: unknown algorithm `super funky chicken' received: /digest/
-print r.status_code,r.headers, r.text
+print(r.status_code,r.headers, r.text)
v['algorithm'] = algorithm
r = auth(v)
-print r.status_code,r.headers, r.text
+print(r.status_code,r.headers, r.text)
nonce = v['nonce']
v['nonce']=v['nonce'][5:-5]
r = auth(v)
-print r.status_code,r.headers, r.text
+print(r.status_code,r.headers, r.text)
# [Sun Jul 28 21:05:31.178340 2013] [auth_digest:error] [pid 24224:tid 139895539455744] [client 127.0.0.1:56906] AH01793: invalid qop `auth' received: /digest/qop_none/
@@ -86,7 +86,7 @@ print r.status_code,r.headers, r.text
v['nonce']=nonce[0:11] + 'ZZZ' + nonce[14:]
r = auth(v)
-print r.status_code,r.headers, r.text
+print(r.status_code,r.headers, r.text)
#[Sun Jul 28 21:18:11.769228 2013] [auth_digest:error] [pid 24752:tid 139895505884928] [client 127.0.0.1:56964] AH01776: invalid nonce b9YAiJDiBAZZZ1b1abe02d20063ea3b16b544ea1b0d981c1bafe received - hash is not d42d824dee7aaf50c3ba0a7c6290bd453e3dd35b
@@ -98,7 +98,7 @@ import time
time.sleep(1)
r = auth(v)
-print r.status_code,r.headers, r.text
+print(r.status_code,r.headers, r.text)
# Obtained by putting the following code in modules/aaa/mod_auth_digest.c
# in the function initialize_secret
@@ -128,7 +128,7 @@ s = sha.sha(apachesecret)
v=preauth()
-print v['nonce']
+print(v['nonce'])
realm = v['Digest realm'][1:-1]
(t,) = struct.unpack('l',base64.b64decode(v['nonce'][1:13]))
@@ -143,17 +143,17 @@ s.update(timepac)
v['nonce'] = v['nonce'][0] + timepac + s.hexdigest() + v['nonce'][-1]
-print v
+print(v)
r = auth(v)
#[Mon Jul 29 02:12:55.539813 2013] [auth_digest:error] [pid 9647:tid 139895522670336] [client 127.0.0.1:58474] AH01777: invalid nonce 59QJppTiBAA=b08983fd166ade9840407df1b0f75b9e6e07d88d received - user attempted time travel
-print r.status_code,r.headers, r.text
+print(r.status_code,r.headers, r.text)
url='/digest_onetime/'
v=preauth()
# Need opaque header handling in auth
r = auth(v)
-print r.status_code,r.headers, r.text
+print(r.status_code,r.headers, r.text)
r = auth(v)
-print r.status_code,r.headers, r.text
+print(r.status_code,r.headers, r.text)
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/tests/filtertestcase.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/tests/filtertestcase.py
@@ -22,7 +22,7 @@
__copyright__ = "Copyright (c) 2004 Cyril Jaquier; 2012 Yaroslav Halchenko"
__license__ = "GPL"
-from __builtin__ import open as fopen
+from builtins import open as fopen
import unittest
import os
import sys
@@ -132,7 +132,7 @@ def _copy_lines_between_files(in_, fout,
else:
fin = in_
# Skip
- for i in xrange(skip):
+ for i in range(skip):
fin.readline()
# Read
i = 0
@@ -169,7 +169,7 @@ def _copy_lines_to_journal(in_, fields={
"PRIORITY": "7",
})
# Skip
- for i in xrange(skip):
+ for i in range(skip):
fin.readline()
# Read/Write
i = 0
@@ -795,7 +795,7 @@ class GetFailures(unittest.TestCase):
# so that they could be reused by other tests
FAILURES_01 = ('193.168.0.128', 3, 1124017199.0,
- [u'Aug 14 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128']*3)
+ ['Aug 14 11:59:59 [sshd] error: PAM: Authentication failure for kevin from 193.168.0.128']*3)
def setUp(self):
"""Call before every test case."""
@@ -845,8 +845,8 @@ class GetFailures(unittest.TestCase):
def testGetFailures02(self):
output = ('141.3.81.106', 4, 1124017139.0,
- [u'Aug 14 11:%d:59 i60p295 sshd[12365]: Failed publickey for roehl from ::ffff:141.3.81.106 port 51332 ssh2'
- % m for m in 53, 54, 57, 58])
+ ['Aug 14 11:%d:59 i60p295 sshd[12365]: Failed publickey for roehl from ::ffff:141.3.81.106 port 51332 ssh2'
+ % m for m in (53, 54, 57, 58)])
self.filter.addLogPath(GetFailures.FILENAME_02)
self.filter.addFailRegex("Failed .* from <HOST>")
@@ -878,11 +878,11 @@ class GetFailures(unittest.TestCase):
def testGetFailuresUseDNS(self):
# We should still catch failures with usedns = no ;-)
output_yes = ('93.184.216.119', 2, 1124017139.0,
- [u'Aug 14 11:54:59 i60p295 sshd[12365]: Failed publickey for roehl from example.com port 51332 ssh2',
- u'Aug 14 11:58:59 i60p295 sshd[12365]: Failed publickey for roehl from ::ffff:93.184.216.119 port 51332 ssh2'])
+ ['Aug 14 11:54:59 i60p295 sshd[12365]: Failed publickey for roehl from example.com port 51332 ssh2',
+ 'Aug 14 11:58:59 i60p295 sshd[12365]: Failed publickey for roehl from ::ffff:93.184.216.119 port 51332 ssh2'])
output_no = ('93.184.216.119', 1, 1124017139.0,
- [u'Aug 14 11:58:59 i60p295 sshd[12365]: Failed publickey for roehl from ::ffff:93.184.216.119 port 51332 ssh2'])
+ ['Aug 14 11:58:59 i60p295 sshd[12365]: Failed publickey for roehl from ::ffff:93.184.216.119 port 51332 ssh2'])
# Actually no exception would be raised -- it will be just set to 'no'
#self.assertRaises(ValueError,
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/tests/misctestcase.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/tests/misctestcase.py
@@ -30,7 +30,7 @@ import shutil
import fnmatch
import datetime
from glob import glob
-from StringIO import StringIO
+from io import StringIO
from .utils import mbasename, TraceBack, FormatterWithTraceBack
from ..helpers import formatExceptionInfo
@@ -139,7 +139,7 @@ class TestsUtilsTest(unittest.TestCase):
else: func_raise()
try:
- print deep_function(3)
+ print(deep_function(3))
except ValueError:
s = tb()
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/tests/samplestestcase.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/tests/samplestestcase.py
@@ -28,7 +28,7 @@ if sys.version_info >= (2, 6):
import json
else:
import simplejson as json
- next = lambda x: x.next()
+ next = lambda x: x.__next__()
from ..server.filter import Filter
from ..client.filterreader import FilterReader
@@ -94,7 +94,7 @@ def testSampleRegexsFactory(name):
if jsonREMatch:
try:
faildata = json.loads(jsonREMatch.group(1))
- except ValueError, e:
+ except ValueError as e:
raise ValueError("%s: %s:%i" %
(e, logFile.filename(), logFile.filelineno()))
line = next(logFile)
@@ -116,7 +116,7 @@ def testSampleRegexsFactory(name):
"Line matched when shouldn't have: %s:%i %r" %
(logFile.filename(), logFile.filelineno(), line))
self.assertEqual(len(ret), 1, "Multiple regexs matched %r - %s:%i" %
- (map(lambda x: x[0], ret),logFile.filename(), logFile.filelineno()))
+ ([x[0] for x in ret],logFile.filename(), logFile.filelineno()))
# Verify timestamp and host as expected
failregex, host, fail2banTime, lines = ret[0]
@@ -149,7 +149,7 @@ def testSampleRegexsFactory(name):
return testFilter
-for filter_ in filter(lambda x: not x.endswith('common.conf'), os.listdir(os.path.join(CONFIG_DIR, "filter.d"))):
+for filter_ in [x for x in os.listdir(os.path.join(CONFIG_DIR, "filter.d")) if not x.endswith('common.conf')]:
filterName = filter_.rpartition(".")[0]
if not filterName.startswith('.'):
setattr(
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/tests/servertestcase.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/tests/servertestcase.py
@@ -661,7 +661,7 @@ class TransmitterLogging(TransmitterBase
def testLogTarget(self):
logTargets = []
- for _ in xrange(3):
+ for _ in range(3):
tmpFile = tempfile.mkstemp("fail2ban", "transmitter")
logTargets.append(tmpFile[1])
os.close(tmpFile[0])
@@ -714,26 +714,26 @@ class TransmitterLogging(TransmitterBase
self.assertEqual(self.transm.proceed(["flushlogs"]), (0, "rolled over"))
l.warning("After flushlogs")
with open(fn2,'r') as f:
- line1 = f.next()
+ line1 = next(f)
if line1.find('Changed logging target to') >= 0:
- line1 = f.next()
+ line1 = next(f)
self.assertTrue(line1.endswith("Before file moved\n"))
- line2 = f.next()
+ line2 = next(f)
self.assertTrue(line2.endswith("After file moved\n"))
try:
- n = f.next()
+ n = next(f)
if n.find("Command: ['flushlogs']") >=0:
- self.assertRaises(StopIteration, f.next)
+ self.assertRaises(StopIteration, f.__next__)
else:
self.fail("Exception StopIteration or Command: ['flushlogs'] expected. Got: %s" % n)
except StopIteration:
pass # on higher debugging levels this is expected
with open(fn,'r') as f:
- line1 = f.next()
+ line1 = next(f)
if line1.find('rollover performed on') >= 0:
- line1 = f.next()
+ line1 = next(f)
self.assertTrue(line1.endswith("After flushlogs\n"))
- self.assertRaises(StopIteration, f.next)
+ self.assertRaises(StopIteration, f.__next__)
f.close()
finally:
os.remove(fn2)
--- fail2ban-0.9.0+git48-gabcab00.orig/fail2ban/tests/utils.py
+++ fail2ban-0.9.0+git48-gabcab00/fail2ban/tests/utils.py
@@ -24,7 +24,7 @@ __license__ = "GPL"
import logging, os, re, traceback, time, unittest
from os.path import basename, dirname
-from StringIO import StringIO
+from io import StringIO
from ..server.mytime import MyTime
@@ -228,13 +228,13 @@ def gatherTests(regexps=None, no_network
try:
from ..server.filtergamin import FilterGamin
filters.append(FilterGamin)
- except Exception, e: # pragma: no cover
+ except Exception as e: # pragma: no cover
logSys.warning("Skipping gamin backend testing. Got exception '%s'" % e)
try:
from ..server.filterpyinotify import FilterPyinotify
filters.append(FilterPyinotify)
- except Exception, e: # pragma: no cover
+ except Exception as e: # pragma: no cover
logSys.warning("I: Skipping pyinotify backend testing. Got exception '%s'" % e)
for Filter_ in filters:
@@ -243,7 +243,7 @@ def gatherTests(regexps=None, no_network
try: # pragma: systemd no cover
from ..server.filtersystemd import FilterSystemd
tests.addTest(unittest.makeSuite(filtertestcase.get_monitor_failures_journal_testcase(FilterSystemd)))
- except Exception, e: # pragma: no cover
+ except Exception as e: # pragma: no cover
logSys.warning("I: Skipping systemd backend testing. Got exception '%s'" % e)
@@ -280,4 +280,4 @@ class LogCaptureTestCase(unittest.TestCa
return s in self._log.getvalue()
def printLog(self):
- print(self._log.getvalue())
+ print((self._log.getvalue()))