Commit 822821d4 authored by Vitaly Lipatov's avatar Vitaly Lipatov

producer: validate unban addresses

parent 14bdc662
...@@ -5,6 +5,7 @@ import sys ...@@ -5,6 +5,7 @@ import sys
import configparser import configparser
import os import os
import socket import socket
import ipaddress
def get_settings (path_to_config): def get_settings (path_to_config):
if not os.path.exists(path_to_config): if not os.path.exists(path_to_config):
...@@ -31,15 +32,20 @@ else: ...@@ -31,15 +32,20 @@ else:
if not ip: if not ip:
print("Run with IP arg") print("Run with IP arg")
sys.exit() sys.exit()
try:
ip = str(ipaddress.ip_network(ip, strict=False))
except ValueError:
print("Invalid IP address or network: " + ip)
sys.exit(2)
try: try:
r = redis.Redis (host=redis_server) r = redis.Redis(host=redis_server, socket_connect_timeout=5, socket_timeout=5)
subscribers = r.publish ('unban', ip) subscribers = r.publish ('unban', ip)
if subscribers == 0: if subscribers == 0:
print("No eterban Redis subscribers; IP was not unblocked") print("No eterban Redis subscribers; IP was not unblocked")
sys.exit(1) sys.exit(1)
message = ip + " was unblocked by admin on " + hostname message = ip + " was unblocked by admin on " + hostname
r.publish ('by', message) r.publish ('by', message)
except Exception as error: except redis.exceptions.RedisError as error:
print("Error with connect to redis " + redis_server + ": " + str(error)) print("Error with connect to redis " + redis_server + ": " + str(error))
sys.exit(1) sys.exit(1)
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