diff --git a/DEVELOP b/DEVELOP index 623aee12..158fb2b2 100644 --- a/DEVELOP +++ b/DEVELOP @@ -249,7 +249,7 @@ Takes care about executing start/check/ban/unban/stop commands Releasing ========= -# Ensure the version is correct in ./common/version.py +# Ensure the version is correct in ./fail2ban/version.py # Add/finalize the corresponding entry in the ChangeLog @@ -271,7 +271,7 @@ Releasing # Run the following and update the wiki with output: - python -c 'import common.protocol; common.protocol.printWiki()' + python -c 'import fail2ban.protocol; fail2ban.protocol.printWiki()' # Email users and development list of release diff --git a/MANIFEST b/MANIFEST index 28063b83..fc56356a 100644 --- a/MANIFEST +++ b/MANIFEST @@ -9,39 +9,39 @@ fail2ban-client fail2ban-server fail2ban-testcases fail2ban-regex -client/configreader.py -client/configparserinc.py -client/jailreader.py -client/fail2banreader.py -client/jailsreader.py -client/beautifier.py -client/filterreader.py -client/actionreader.py -client/__init__.py -client/configurator.py -client/csocket.py -server/asyncserver.py -server/filter.py -server/filterpyinotify.py -server/filtergamin.py -server/filterpoll.py -server/iso8601.py -server/server.py -server/actions.py -server/faildata.py -server/failmanager.py -server/datedetector.py -server/jailthread.py -server/transmitter.py -server/action.py -server/ticket.py -server/jail.py -server/jails.py -server/__init__.py -server/banmanager.py -server/datetemplate.py -server/mytime.py -server/failregex.py +fail2ban/client/configreader.py +fail2ban/client/configparserinc.py +fail2ban/client/jailreader.py +fail2ban/client/fail2banreader.py +fail2ban/client/jailsreader.py +fail2ban/client/beautifier.py +fail2ban/client/filterreader.py +fail2ban/client/actionreader.py +fail2ban/client/__init__.py +fail2ban/client/configurator.py +fail2ban/client/csocket.py +fail2ban/server/asyncserver.py +fail2ban/server/filter.py +fail2ban/server/filterpyinotify.py +fail2ban/server/filtergamin.py +fail2ban/server/filterpoll.py +fail2ban/server/iso8601.py +fail2ban/server/server.py +fail2ban/server/actions.py +fail2ban/server/faildata.py +fail2ban/server/failmanager.py +fail2ban/server/datedetector.py +fail2ban/server/jailthread.py +fail2ban/server/transmitter.py +fail2ban/server/action.py +fail2ban/server/ticket.py +fail2ban/server/jail.py +fail2ban/server/jails.py +fail2ban/server/__init__.py +fail2ban/server/banmanager.py +fail2ban/server/datetemplate.py +fail2ban/server/mytime.py +fail2ban/server/failregex.py testcases/files/testcase-usedns.log testcases/banmanagertestcase.py testcases/failmanagertestcase.py @@ -58,11 +58,11 @@ testcases/files/testcase03.log testcases/files/testcase04.log setup.py setup.cfg -common/__init__.py -common/exceptions.py -common/helpers.py -common/version.py -common/protocol.py +fail2ban/__init__.py +fail2ban/exceptions.py +fail2ban/helpers.py +fail2ban/version.py +fail2ban/protocol.py config/jail.conf config/filter.d/common.conf config/filter.d/apache-auth.conf diff --git a/fail2ban-client b/fail2ban-client index d8147f02..8068d60f 100755 --- a/fail2ban-client +++ b/fail2ban-client @@ -25,19 +25,11 @@ __license__ = "GPL" import sys, string, os, pickle, re, logging, signal import getopt, time, shlex, socket -# Inserts our own modules path first in the list -# fix for bug #343821 -try: - from common.version import version -except ImportError, e: - sys.path.insert(1, "/usr/share/fail2ban") - from common.version import version - -# Now we can import the rest of modules -from common.protocol import printFormatted -from client.csocket import CSocket -from client.configurator import Configurator -from client.beautifier import Beautifier +from fail2ban.version import version +from fail2ban.protocol import printFormatted +from fail2ban.client.csocket import CSocket +from fail2ban.client.configurator import Configurator +from fail2ban.client.beautifier import Beautifier # Gets the instance of the logger. logSys = logging.getLogger("fail2ban.client") diff --git a/fail2ban-regex b/fail2ban-regex index a0a90b05..6bff21de 100755 --- a/fail2ban-regex +++ b/fail2ban-regex @@ -23,19 +23,12 @@ __copyright__ = "Copyright (c) 2004 Cyril Jaquier, 2012 Yaroslav Halchenko" __license__ = "GPL" import getopt, sys, time, logging, os - -# Inserts our own modules path first in the list -# fix for bug #343821 -try: - from common.version import version -except ImportError, e: - sys.path.insert(1, "/usr/share/fail2ban") - from common.version import version - -from client.configparserinc import SafeConfigParserWithIncludes from ConfigParser import NoOptionError, NoSectionError, MissingSectionHeaderError -from server.filter import Filter -from server.failregex import RegexException + +from fail2ban.version import version +from fail2ban.client.configparserinc import SafeConfigParserWithIncludes +from fail2ban.server.filter import Filter +from fail2ban.server.failregex import RegexException # Gets the instance of the logger. logSys = logging.getLogger("fail2ban.regex") diff --git a/fail2ban-server b/fail2ban-server index 404a1ced..3a1686d3 100755 --- a/fail2ban-server +++ b/fail2ban-server @@ -24,15 +24,8 @@ __license__ = "GPL" import getopt, sys, logging, os -# Inserts our own modules path first in the list -# fix for bug #343821 -try: - from common.version import version -except ImportError, e: - sys.path.insert(1, "/usr/share/fail2ban") - from common.version import version - -from server.server import Server +from fail2ban.version import version +from fail2ban.server.server import Server # Gets the instance of the logger. logSys = logging.getLogger("fail2ban") diff --git a/fail2ban-testcases b/fail2ban-testcases index e00cc908..c10856ec 100755 --- a/fail2ban-testcases +++ b/fail2ban-testcases @@ -27,7 +27,7 @@ __license__ = "GPL" import unittest, logging, sys, time, os -from common.version import version +from fail2ban.version import version from testcases import banmanagertestcase from testcases import clientreadertestcase from testcases import failmanagertestcase @@ -38,7 +38,7 @@ from testcases import actiontestcase from testcases import sockettestcase from testcases.utils import FormatterWithTraceBack -from server.mytime import MyTime +from fail2ban.server.mytime import MyTime from optparse import OptionParser, Option @@ -168,20 +168,20 @@ tests.addTest(unittest.makeSuite(datedetectortestcase.DateDetectorTest)) # Extensive use-tests of different available filters backends # -from server.filterpoll import FilterPoll +from fail2ban.server.filterpoll import FilterPoll filters = [FilterPoll] # always available # Additional filters available only if external modules are available # yoh: Since I do not know better way for parametric tests # with good old unittest try: - from server.filtergamin import FilterGamin + from fail2ban.server.filtergamin import FilterGamin filters.append(FilterGamin) except Exception, e: # pragma: no cover print "I: Skipping gamin backend testing. Got exception '%s'" % e try: - from server.filterpyinotify import FilterPyinotify + from fail2ban.server.filterpyinotify import FilterPyinotify filters.append(FilterPyinotify) except Exception, e: # pragma: no cover print "I: Skipping pyinotify backend testing. Got exception '%s'" % e diff --git a/client/__init__.py b/fail2ban/__init__.py similarity index 100% rename from client/__init__.py rename to fail2ban/__init__.py diff --git a/common/__init__.py b/fail2ban/client/__init__.py similarity index 100% rename from common/__init__.py rename to fail2ban/client/__init__.py diff --git a/client/actionreader.py b/fail2ban/client/actionreader.py similarity index 100% rename from client/actionreader.py rename to fail2ban/client/actionreader.py diff --git a/client/beautifier.py b/fail2ban/client/beautifier.py similarity index 98% rename from client/beautifier.py rename to fail2ban/client/beautifier.py index 7e48016c..1403bb08 100644 --- a/client/beautifier.py +++ b/fail2ban/client/beautifier.py @@ -23,7 +23,7 @@ __license__ = "GPL" import logging -from common.exceptions import UnknownJailException, DuplicateJailException +from fail2ban.exceptions import UnknownJailException, DuplicateJailException # Gets the instance of the logger. logSys = logging.getLogger("fail2ban.client.config") diff --git a/client/configparserinc.py b/fail2ban/client/configparserinc.py similarity index 100% rename from client/configparserinc.py rename to fail2ban/client/configparserinc.py diff --git a/client/configreader.py b/fail2ban/client/configreader.py similarity index 100% rename from client/configreader.py rename to fail2ban/client/configreader.py diff --git a/client/configurator.py b/fail2ban/client/configurator.py similarity index 100% rename from client/configurator.py rename to fail2ban/client/configurator.py diff --git a/client/csocket.py b/fail2ban/client/csocket.py similarity index 100% rename from client/csocket.py rename to fail2ban/client/csocket.py diff --git a/client/fail2banreader.py b/fail2ban/client/fail2banreader.py similarity index 100% rename from client/fail2banreader.py rename to fail2ban/client/fail2banreader.py diff --git a/client/filterreader.py b/fail2ban/client/filterreader.py similarity index 100% rename from client/filterreader.py rename to fail2ban/client/filterreader.py diff --git a/client/jailreader.py b/fail2ban/client/jailreader.py similarity index 100% rename from client/jailreader.py rename to fail2ban/client/jailreader.py diff --git a/client/jailsreader.py b/fail2ban/client/jailsreader.py similarity index 100% rename from client/jailsreader.py rename to fail2ban/client/jailsreader.py diff --git a/common/exceptions.py b/fail2ban/exceptions.py similarity index 100% rename from common/exceptions.py rename to fail2ban/exceptions.py diff --git a/common/helpers.py b/fail2ban/helpers.py similarity index 100% rename from common/helpers.py rename to fail2ban/helpers.py diff --git a/common/protocol.py b/fail2ban/protocol.py similarity index 100% rename from common/protocol.py rename to fail2ban/protocol.py diff --git a/server/__init__.py b/fail2ban/server/__init__.py similarity index 100% rename from server/__init__.py rename to fail2ban/server/__init__.py diff --git a/server/action.py b/fail2ban/server/action.py similarity index 100% rename from server/action.py rename to fail2ban/server/action.py diff --git a/server/actions.py b/fail2ban/server/actions.py similarity index 100% rename from server/actions.py rename to fail2ban/server/actions.py diff --git a/server/asyncserver.py b/fail2ban/server/asyncserver.py similarity index 99% rename from server/asyncserver.py rename to fail2ban/server/asyncserver.py index 66b2b53f..d5fb791c 100644 --- a/server/asyncserver.py +++ b/fail2ban/server/asyncserver.py @@ -28,9 +28,10 @@ __copyright__ = "Copyright (c) 2004 Cyril Jaquier" __license__ = "GPL" from pickle import dumps, loads, HIGHEST_PROTOCOL -from common import helpers import asyncore, asynchat, socket, os, logging, sys, traceback +from fail2ban import helpers + # Gets the instance of the logger. logSys = logging.getLogger("fail2ban.server") diff --git a/server/banmanager.py b/fail2ban/server/banmanager.py similarity index 100% rename from server/banmanager.py rename to fail2ban/server/banmanager.py diff --git a/server/datedetector.py b/fail2ban/server/datedetector.py similarity index 100% rename from server/datedetector.py rename to fail2ban/server/datedetector.py diff --git a/server/datetemplate.py b/fail2ban/server/datetemplate.py similarity index 100% rename from server/datetemplate.py rename to fail2ban/server/datetemplate.py diff --git a/server/faildata.py b/fail2ban/server/faildata.py similarity index 100% rename from server/faildata.py rename to fail2ban/server/faildata.py diff --git a/server/failmanager.py b/fail2ban/server/failmanager.py similarity index 100% rename from server/failmanager.py rename to fail2ban/server/failmanager.py diff --git a/server/failregex.py b/fail2ban/server/failregex.py similarity index 100% rename from server/failregex.py rename to fail2ban/server/failregex.py diff --git a/server/filter.py b/fail2ban/server/filter.py similarity index 100% rename from server/filter.py rename to fail2ban/server/filter.py diff --git a/server/filtergamin.py b/fail2ban/server/filtergamin.py similarity index 100% rename from server/filtergamin.py rename to fail2ban/server/filtergamin.py diff --git a/server/filterpoll.py b/fail2ban/server/filterpoll.py similarity index 100% rename from server/filterpoll.py rename to fail2ban/server/filterpoll.py diff --git a/server/filterpyinotify.py b/fail2ban/server/filterpyinotify.py similarity index 100% rename from server/filterpyinotify.py rename to fail2ban/server/filterpyinotify.py diff --git a/server/iso8601.py b/fail2ban/server/iso8601.py similarity index 100% rename from server/iso8601.py rename to fail2ban/server/iso8601.py diff --git a/server/jail.py b/fail2ban/server/jail.py similarity index 100% rename from server/jail.py rename to fail2ban/server/jail.py diff --git a/server/jails.py b/fail2ban/server/jails.py similarity index 98% rename from server/jails.py rename to fail2ban/server/jails.py index 4bf5f971..7ea1dde0 100644 --- a/server/jails.py +++ b/fail2ban/server/jails.py @@ -21,7 +21,7 @@ __author__ = "Cyril Jaquier, Yaroslav Halchenko" __copyright__ = "Copyright (c) 2004 Cyril Jaquier, 2013- Yaroslav Halchenko" __license__ = "GPL" -from common.exceptions import DuplicateJailException, UnknownJailException +from fail2ban.exceptions import DuplicateJailException, UnknownJailException from jail import Jail from threading import Lock diff --git a/server/jailthread.py b/fail2ban/server/jailthread.py similarity index 100% rename from server/jailthread.py rename to fail2ban/server/jailthread.py diff --git a/server/mytime.py b/fail2ban/server/mytime.py similarity index 100% rename from server/mytime.py rename to fail2ban/server/mytime.py diff --git a/server/server.py b/fail2ban/server/server.py similarity index 99% rename from server/server.py rename to fail2ban/server/server.py index a0824f1d..e8696b36 100644 --- a/server/server.py +++ b/fail2ban/server/server.py @@ -32,7 +32,7 @@ from jails import Jails from transmitter import Transmitter from asyncserver import AsyncServer from asyncserver import AsyncServerException -from common import version +from fail2ban import version import logging, logging.handlers, sys, os, signal # Gets the instance of the logger. diff --git a/server/ticket.py b/fail2ban/server/ticket.py similarity index 100% rename from server/ticket.py rename to fail2ban/server/ticket.py diff --git a/server/transmitter.py b/fail2ban/server/transmitter.py similarity index 100% rename from server/transmitter.py rename to fail2ban/server/transmitter.py diff --git a/common/version.py b/fail2ban/version.py similarity index 100% rename from common/version.py rename to fail2ban/version.py diff --git a/setup.cfg b/setup.cfg index 74c22b25..bb016599 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,3 @@ -[install] -install-purelib=/usr/share/fail2ban - [sdist] formats=bztar diff --git a/setup.py b/setup.py index 784999a2..004f2f84 100755 --- a/setup.py +++ b/setup.py @@ -23,11 +23,12 @@ __copyright__ = "Copyright (c) 2004 Cyril Jaquier" __license__ = "GPL" from distutils.core import setup -from common.version import version from os.path import isfile, join, isdir -from sys import argv +import sys from glob import glob +from fail2ban.version import version + longdesc = ''' Fail2Ban scans log files like /var/log/pwdfail or /var/log/apache/error_log and bans IP that makes @@ -38,7 +39,7 @@ commands.''' setup( name = "fail2ban", version = version, - description = "Ban IPs that make too many password failure", + description = "Ban IPs that make too many password failures", long_description = longdesc, author = "Cyril Jaquier", author_email = "cyril.jaquier@fail2ban.org", @@ -51,9 +52,9 @@ setup( 'fail2ban-regex' ], packages = [ - 'common', - 'client', - 'server' + 'fail2ban', + 'fail2ban.client', + 'fail2ban.server' ], data_files = [ ('/etc/fail2ban', @@ -117,7 +118,7 @@ if isdir("/usr/lib/fail2ban"): print # Update config file -if argv[1] == "install": +if sys.argv[1] == "install": print print "Please do not forget to update your configuration files." print "They are in /etc/fail2ban/." diff --git a/testcases/actiontestcase.py b/testcases/actiontestcase.py index b8292c27..e0ea3a9b 100644 --- a/testcases/actiontestcase.py +++ b/testcases/actiontestcase.py @@ -29,9 +29,10 @@ __license__ = "GPL" import unittest, time import logging, sys -from server.action import Action from StringIO import StringIO +from fail2ban.server.action import Action + class ExecuteAction(unittest.TestCase): def setUp(self): diff --git a/testcases/banmanagertestcase.py b/testcases/banmanagertestcase.py index 6d0ce55a..8d0f1929 100644 --- a/testcases/banmanagertestcase.py +++ b/testcases/banmanagertestcase.py @@ -28,8 +28,9 @@ __copyright__ = "Copyright (c) 2004 Cyril Jaquier" __license__ = "GPL" import unittest -from server.banmanager import BanManager -from server.ticket import BanTicket + +from fail2ban.server.banmanager import BanManager +from fail2ban.server.ticket import BanTicket class AddFailure(unittest.TestCase): diff --git a/testcases/clientreadertestcase.py b/testcases/clientreadertestcase.py index fad16f04..f54df659 100644 --- a/testcases/clientreadertestcase.py +++ b/testcases/clientreadertestcase.py @@ -22,10 +22,11 @@ __copyright__ = "Copyright (c) 2004 Cyril Jaquier, 2011-2013 Yaroslav Halchenko" __license__ = "GPL" import os, shutil, tempfile, unittest -from client.configreader import ConfigReader -from client.jailreader import JailReader -from client.jailsreader import JailsReader -from client.configurator import Configurator + +from fail2ban.client.configreader import ConfigReader +from fail2ban.client.jailreader import JailReader +from fail2ban.client.jailsreader import JailsReader +from fail2ban.client.configurator import Configurator class ConfigReaderTest(unittest.TestCase): diff --git a/testcases/datedetectortestcase.py b/testcases/datedetectortestcase.py index 64af1fab..e9cabca0 100644 --- a/testcases/datedetectortestcase.py +++ b/testcases/datedetectortestcase.py @@ -28,8 +28,9 @@ __copyright__ = "Copyright (c) 2004 Cyril Jaquier" __license__ = "GPL" import unittest -from server.datedetector import DateDetector -from server.datetemplate import DateTemplate + +from fail2ban.server.datedetector import DateDetector +from fail2ban.server.datetemplate import DateTemplate class DateDetectorTest(unittest.TestCase): diff --git a/testcases/failmanagertestcase.py b/testcases/failmanagertestcase.py index ffee4ff1..7a714122 100644 --- a/testcases/failmanagertestcase.py +++ b/testcases/failmanagertestcase.py @@ -28,8 +28,9 @@ __copyright__ = "Copyright (c) 2004 Cyril Jaquier" __license__ = "GPL" import unittest, socket, time, pickle -from server.failmanager import FailManager, FailManagerEmpty -from server.ticket import FailTicket + +from fail2ban.server.failmanager import FailManager, FailManagerEmpty +from fail2ban.server.ticket import FailTicket class AddFailure(unittest.TestCase): diff --git a/testcases/filtertestcase.py b/testcases/filtertestcase.py index 927cb2fe..75b72c05 100644 --- a/testcases/filtertestcase.py +++ b/testcases/filtertestcase.py @@ -29,11 +29,11 @@ import sys import time import tempfile -from server.jail import Jail -from server.filterpoll import FilterPoll -from server.filter import FileFilter, DNSUtils -from server.failmanager import FailManager -from server.failmanager import FailManagerEmpty +from fail2ban.server.jail import Jail +from fail2ban.server.filterpoll import FilterPoll +from fail2ban.server.filter import FileFilter, DNSUtils +from fail2ban.server.failmanager import FailManager +from fail2ban.server.failmanager import FailManagerEmpty # # Useful helpers diff --git a/testcases/servertestcase.py b/testcases/servertestcase.py index ffb057a9..0cdf0422 100644 --- a/testcases/servertestcase.py +++ b/testcases/servertestcase.py @@ -28,8 +28,9 @@ __copyright__ = "Copyright (c) 2004 Cyril Jaquier" __license__ = "GPL" import unittest, socket, time, tempfile, os -from server.server import Server -from common.exceptions import UnknownJailException + +from fail2ban.server.server import Server +from fail2ban.exceptions import UnknownJailException class StartStop(unittest.TestCase): diff --git a/testcases/sockettestcase.py b/testcases/sockettestcase.py index 4cd5a687..bbca8dde 100644 --- a/testcases/sockettestcase.py +++ b/testcases/sockettestcase.py @@ -28,8 +28,9 @@ __copyright__ = "Copyright (c) 2013 Steven Hiscocks" __license__ = "GPL" import unittest, time, tempfile, os, threading -from server.asyncserver import AsyncServer, AsyncServerException -from client.csocket import CSocket + +from fail2ban.server.asyncserver import AsyncServer, AsyncServerException +from fail2ban.client.csocket import CSocket class Socket(unittest.TestCase):