Browse Source

- Improved client

git-svn-id: https://fail2ban.svn.sourceforge.net/svnroot/fail2ban/trunk@282 a942ae1a-1317-0410-a47c-b1dcaea8d605
0.x
Cyril Jaquier 19 years ago
parent
commit
9fe1efcc45
  1. 50
      fail2ban-client

50
fail2ban-client

@ -51,6 +51,7 @@ class Fail2banClient:
self.conf = dict()
self.conf["dump"] = False
self.conf["force"] = False
self.conf["verbose"] = 2
def dispUsage(self):
""" Prints Fail2Ban command line options and exits
@ -62,6 +63,8 @@ class Fail2banClient:
print
print " -c <DIR> configuration directory"
print " -d dump configuration"
print " -v increase verbosity"
print " -q decrease verbosity"
print " -x force execution of the server"
print " -h display this help message"
print
@ -74,28 +77,35 @@ class Fail2banClient:
for opt in optList:
if opt[0] == "-d":
self.conf["dump"] = True
if opt[0] == "-x":
elif opt[0] == "-v":
self.conf["verbose"] = self.conf["verbose"] + 1
elif opt[0] == "-q":
self.conf["verbose"] = self.conf["verbose"] - 1
elif opt[0] == "-x":
self.conf["force"] = True
if opt[0] in ["-h", "--help"]:
elif opt[0] in ["-h", "--help"]:
self.dispUsage()
def ping(self):
return self.processCmd([["ping"]])
return self.processCmd([["ping"]], False)
@staticmethod
def processCmd(cmd):
def processCmd(cmd, showRet = True):
for c in cmd:
try:
client = CSocket()
except Exception, e:
logSys.error(e)
logSys.error("Arrggh... Start the server first")
if showRet:
logSys.error(e)
logSys.error("Arrggh... Start the server first")
return False
ret = client.send(c)
if ret[0] == 0:
logSys.info("OK : " + `ret[1]`)
logSys.debug("OK : " + `ret[1]`)
if showRet:
print `ret[1]`
else:
logSys.info("NOK: " + `ret[1].args`)
logSys.error("NOK: " + `ret[1].args`)
return False
return True
@ -114,7 +124,7 @@ class Fail2banClient:
if len(sys.argv) < 2:
self.dispUsage()
if cmd[0] == "start" and len(cmd) == 1:
if len(cmd) == 1 and cmd[0] == "start":
if self.ping():
logSys.info("Server already running")
return False
@ -126,17 +136,17 @@ class Fail2banClient:
# Wait for the server to start
self.waitOnServer()
# Configure the server
self.processCmd(self.stream)
self.processCmd(self.stream, False)
return True
except ServerExecutionException:
logSys.error("Could not start server. Try -x option")
return False
elif cmd[0] == "reload" and len(cmd) == 1:
elif len(cmd) == 1 and cmd[0] == "reload":
if self.ping():
self.readConfig()
self.processCmd(['stop', 'all'])
self.processCmd(['stop', 'all'], False)
# Configure the server
self.processCmd(self.stream)
self.processCmd(self.stream, False)
else:
logSys.error("Could not find server")
else:
@ -177,7 +187,7 @@ class Fail2banClient:
# Reads the command line options.
try:
cmdOpts = 'hc:xd'
cmdOpts = 'hc:xdvq'
cmdLongOpts = ['help']
optList, args = getopt.getopt(self.argv[1:], cmdOpts, cmdLongOpts)
except getopt.GetoptError:
@ -185,11 +195,19 @@ class Fail2banClient:
self.getCmdLineOptions(optList)
logSys.setLevel(logging.DEBUG)
verbose = self.conf["verbose"]
if verbose <= 0:
logSys.setLevel(logging.ERROR)
elif verbose == 1:
logSys.setLevel(logging.WARN)
elif verbose == 2:
logSys.setLevel(logging.INFO)
else:
logSys.setLevel(logging.DEBUG)
# Add the default logging handler
stdout = logging.StreamHandler(sys.stdout)
# set a format which is simpler for console use
formatter = logging.Formatter('%(name)-16s: %(levelname)-6s %(message)s')
formatter = logging.Formatter('%(levelname)-6s %(message)s')
# tell the handler to use this format
stdout.setFormatter(formatter)
logSys.addHandler(stdout)

Loading…
Cancel
Save