You need to sign in or sign up before continuing.
Commit a946d15f authored by Ruzal Gimazov's avatar Ruzal Gimazov

Added configparser, renamed configfile to settings.ini, added new message to chanal 'by'

parent f321c3cb
......@@ -33,7 +33,7 @@ def get_ip_redis_server (path_to_config, path_to_log):
# Читаем некоторые значения из конфиг. файла.
redis_server = config.get("Settings", "redis_server", fallback = "No such things as redis_server")
if redis_server == "No such things as monsters":
if redis_server == "No such things as redis_server":
config.set("Settings", "redis_server", "10.20.30.101")
with open(path_to_config, "w") as config_file:
config_file.write(config)
......@@ -48,12 +48,10 @@ def get_ip_redis_server (path_to_config, path_to_log):
try:
path_to_log = '/var/log/eterban/eterban.log'
log = open (path_to_log, 'a')
log.close()
except:
try:
path_to_log = '/var/log/eterban.log'
log = open (path_to_log,'a')
log.close()
except:
print ("Unknown error with logfile")
sys.exit()
......@@ -75,7 +73,7 @@ p.subscribe('ban', 'unban', 'by')
for message in p.listen():
if message is not None and message['type']=='message' and message['channel'] == b'ban':
#print (message)
ip = message['data'].decode('utf-8')
ip = message['data'].decode('utf-8')
#ban = 'ipset -A blacklist ' + ip
ban = 'fail2ban-client set blacklist banip ' + ip
......@@ -94,19 +92,18 @@ for message in p.listen():
tcp_drop = 'conntrack -D -s ' + ip
subprocess.Popen(tcp_drop, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell = True)
#subprocess.Popen(tcp_drop, shell = True)
elif message is not None and message['type'] =='message' and message['channel'] == b'by':
info = time.strftime( "%Y-%m-%d %H:%M:%S", time.localtime())
info += " " + message['data'].decode('utf-8') + "\n"
#print (info)
log.write (info)
log.write(info)
log.flush()
elif message is not None:
#print ("AHTUNG!!1!", message)
info = time.strftime( "%Y-%m-%d %H:%M:%S", time.localtime())
info += " Unknown message: " + str(message) + "\n"
#print (info)
log.write (info)
log.write(info)
log.flush()
else:
pass
#!/usr/bin/python3
import sys, redis
f = open ('/etc/eterban/eterban.conf','r')
line = f.readline()
f.close()
if line[:10] == "host_redis":
i = 10
while (line[i] == ' '):
i+=1
i+=1
while (line[i] == ' '):
i+=1
if line[-1] == '\n':
host_redis = line[i:-1]
import redis
import sys
import configparser
import os
def createConfig(path_to_config):
"""
Create a config file
"""
config = configparser.ConfigParser()
config.add_section("Settings")
config.set("Settings", "redis_server", "10.20.30.101")
config.set("Settings", "hostname", "UNKNOWN")
with open(path_to_config, "w") as config_file:
config.write(config_file)
sys.exit()
def get_ip_redis_server (path_to_config):
if not os.path.exists(path_to_config):
createConfig (path_to_config)
config = configparser.ConfigParser()
config.read(path_to_config)
# Читаем некоторые значения из конфиг. файла.
redis_server = config.get("Settings", "redis_server", fallback = "No such things as redis_server")
hostname = config.get("Settings", "hostname", fallback = "No such things as hostname")
if redis_server == "No such things as redis_server":
config.set("Settings", "redis_server", "10.20.30.101")
with open(path_to_config, "a") as config_file:
config_file.write(config)
sys.exit()
else:
host_redis = line[i:]
r = redis.Redis (host=host_redis)
return (redis_server, hostname)
path_to_config = '/etc/eterban/settings.ini'
redis_server, hostname = get_ip_redis_server (path_to_config)
r = redis.Redis (host=redis_server)
r.publish ('ban', sys.argv[1])
message = sys.argv[1] + " was blocked by " + hostname
r.publish ('by', message)
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment