|
|
|
@ -134,11 +134,11 @@ class Fail2banClient:
|
|
|
|
|
elif opt[0] == "-i":
|
|
|
|
|
self.__conf["interactive"] = True
|
|
|
|
|
elif opt[0] in ["-h", "--help"]:
|
|
|
|
|
self.dispUsage()
|
|
|
|
|
sys.exit(0)
|
|
|
|
|
elif opt[0] in ["-V", "--version"]:
|
|
|
|
|
self.dispVersion()
|
|
|
|
|
sys.exit(0)
|
|
|
|
|
self.dispUsage()
|
|
|
|
|
sys.exit(0)
|
|
|
|
|
elif opt[0] in ["-V", "--version"]:
|
|
|
|
|
self.dispVersion()
|
|
|
|
|
sys.exit(0)
|
|
|
|
|
|
|
|
|
|
def __ping(self):
|
|
|
|
|
return self.__processCmd([["ping"]], False)
|
|
|
|
@ -185,6 +185,18 @@ class Fail2banClient:
|
|
|
|
|
# Do not continue if configuration is not 100% valid
|
|
|
|
|
if not ret:
|
|
|
|
|
return False
|
|
|
|
|
# verify that directory for the socket file exists
|
|
|
|
|
socket_dir = os.path.dirname(self.__conf["socket"])
|
|
|
|
|
if not os.path.exists(socket_dir):
|
|
|
|
|
logSys.error(
|
|
|
|
|
"There is no directory %s to contain the socket file %s."
|
|
|
|
|
% (socket_dir, self.__conf["socket"]))
|
|
|
|
|
return False
|
|
|
|
|
if not os.access(socket_dir, os.W_OK | os.X_OK):
|
|
|
|
|
logSys.error(
|
|
|
|
|
"Directory %s exists but not accessible for writing"
|
|
|
|
|
% (socket_dir,))
|
|
|
|
|
return False
|
|
|
|
|
# Start the server
|
|
|
|
|
self.__startServerAsync(self.__conf["socket"],
|
|
|
|
|
self.__conf["pidfile"],
|
|
|
|
@ -196,10 +208,10 @@ class Fail2banClient:
|
|
|
|
|
self.__processCmd(self.__stream, False)
|
|
|
|
|
return True
|
|
|
|
|
except ServerExecutionException:
|
|
|
|
|
logSys.error("Could not start server. Maybe an old " +
|
|
|
|
|
"socket file is still present. Try to " +
|
|
|
|
|
"remove " + self.__conf["socket"] + ". If " +
|
|
|
|
|
"you used fail2ban-client to start the " +
|
|
|
|
|
logSys.error("Could not start server. Maybe an old "
|
|
|
|
|
"socket file is still present. Try to "
|
|
|
|
|
"remove " + self.__conf["socket"] + ". If "
|
|
|
|
|
"you used fail2ban-client to start the "
|
|
|
|
|
"server, adding the -x option will do it")
|
|
|
|
|
return False
|
|
|
|
|
elif len(cmd) == 1 and cmd[0] == "reload":
|
|
|
|
@ -256,16 +268,17 @@ class Fail2banClient:
|
|
|
|
|
try:
|
|
|
|
|
# Use the current directory.
|
|
|
|
|
exe = os.path.abspath(os.path.join(sys.path[0], self.SERVER))
|
|
|
|
|
logSys.debug("Starting %r with args %r" % (exe, args))
|
|
|
|
|
os.execv(exe, args)
|
|
|
|
|
except OSError:
|
|
|
|
|
try:
|
|
|
|
|
# Use the PATH env.
|
|
|
|
|
logSys.warning("Initial start attempt failed. Starting %r with the same args" % (self.SERVER,))
|
|
|
|
|
os.execvp(self.SERVER, args)
|
|
|
|
|
except OSError:
|
|
|
|
|
print "Could not find %s" % self.SERVER
|
|
|
|
|
logSys.error("Could not start %s" % self.SERVER)
|
|
|
|
|
os.exit(-1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def __waitOnServer(self):
|
|
|
|
|
# Wait for the server to start
|
|
|
|
|
cnt = 0
|
|
|
|
|