Commit f321c3cb authored by Ruzal Gimazov's avatar Ruzal Gimazov

Add configparser, 2 functions with it, changed config name to settings.ini, created logfile

parent b468c17a
<?php <?php
$ip = $_SERVER['REMOTE_ADDR']; $ip = $_SERVER['REMOTE_ADDR'];
$old_addr = $_SERVER['HTTP_REFERER']; $old_addr = $_SERVER['HTTP_REFERER'];
$host_redis = '192.168.101.101'; $host_redis = '10.20.30.101';
$redis = new Redis(); $redis = new Redis();
$redis->pconnect($host_redis,6379); $redis->pconnect($host_redis,6379);
$redis->publish('unban', $ip); $redis->publish('unban', $ip);
......
#!/usr/bin/python3 #!/usr/bin/python3
import redis import redis
import subprocess import subprocess
import time
import sys
import configparser
import os
f = open ('/etc/eterban/eterban.conf','r') def createConfig(path_to_config, path_to_log):
line = f.readline() """
f.close() Create a config file
if line[:10] == "host_redis": """
i = 10 config = configparser.ConfigParser()
while (line[i] == " "): config.add_section("Settings")
i+=1 config.set("Settings", "redis_server", "10.20.30.101")
i+=1 config.set("Settings", "hostname", "")
while (line[i] == " "):
i+=1 with open(path_to_config, "w") as config_file:
if line[-1] == '\n': config.write(config_file)
host_redis = line[i:-1] info = time.strftime( "%Y-%m-%d %H:%M:%S", time.localtime())
info +=" Created a config file (" + path_to_config + "). Update him!"
with open(path_to_log, "a") as log_file:
log_file.write(info)
sys.exit()
def get_ip_redis_server (path_to_config, path_to_log):
if not os.path.exists(path_to_config):
createConfig (path_to_config, path_to_log)
config = configparser.ConfigParser()
config.read(path_to_config)
# Читаем некоторые значения из конфиг. файла.
redis_server = config.get("Settings", "redis_server", fallback = "No such things as redis_server")
if redis_server == "No such things as monsters":
config.set("Settings", "redis_server", "10.20.30.101")
with open(path_to_config, "w") as config_file:
config_file.write(config)
info = time.strftime( "%Y-%m-%d %H:%M:%S", time.localtime())
info +=" " + redis_server + ". Added to config file (" + path_to_config + ") redis_server. Update him!"
with open(path_to_log, "a") as log_file:
log_file.write(info)
sys.exit()
else: else:
host_redis = line[i:] return (redis_server)
del(line)
del(f) 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()
path_to_config = '/etc/eterban/settings.ini'
redis_server = get_ip_redis_server (path_to_config, path_to_log)
print ("done!")
#print (time.strftime( "%Y-%m-%d %H:%M:%S", time.localtime()))
#subprocess.call ('ipset create blacklist hash:ip', stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell = True) #subprocess.call ('ipset create blacklist hash:ip', stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell = True)
r = redis.Redis(host=host_redis) r = redis.Redis(host=redis_server)
p = r.pubsub() p = r.pubsub()
p.subscribe('ban', 'unban') p.subscribe('ban', 'unban', 'by')
for message in p.listen(): for message in p.listen():
if message is not None and message['type']=='message' and message['channel'] == b'ban': if message is not None and message['type']=='message' and message['channel'] == b'ban':
#print (message) #print (message)
ip = message['data'].decode('utf-8') ip = message['data'].decode('utf-8')
#ban = 'ipset -A blacklist ' + ip #ban = 'ipset -A blacklist ' + ip
...@@ -47,8 +94,19 @@ for message in p.listen(): ...@@ -47,8 +94,19 @@ for message in p.listen():
tcp_drop = 'conntrack -D -s ' + ip tcp_drop = 'conntrack -D -s ' + ip
subprocess.Popen(tcp_drop, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell = True) subprocess.Popen(tcp_drop, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell = True)
#subprocess.Popen(tcp_drop, 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.flush()
elif message is not None: elif message is not None:
#print ("AHTUNG!!1!", message) #print ("AHTUNG!!1!", message)
pass info = time.strftime( "%Y-%m-%d %H:%M:%S", time.localtime())
info += " Unknown message: " + str(message) + "\n"
#print (info)
log.write (info)
log.flush()
else: else:
pass pass
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