Commit c16c1fc6 authored by Vitaly Lipatov's avatar Vitaly Lipatov

internal: handle broken config in unban requests

parent 329de0ed
......@@ -67,12 +67,10 @@ class OriginalDstHandler(BaseHTTPRequestHandler):
# Обработка запроса на разблокировку
if self.path.startswith("/unban"):
# Читаем настройки из файла
settings_file = '/etc/eterban/settings.ini'
settings = read_settings(settings_file)
# Подключаемся к Redis
try:
# Read configuration and enqueue the command as one failure
# domain, so a broken config is reported as a controlled 503.
settings = read_settings('/etc/eterban/settings.ini')
r = redis.Redis(**redis_connection_options(settings))
r.xadd('eterban:commands', {
'command': 'unban', 'ip': ip,
......
......@@ -54,3 +54,5 @@ if [ "$status" -ne 78 ]; then
fi
python3 -c 'import importlib.util; p = "gateway/usr/share/eterban/eterban_api.py"; s = importlib.util.spec_from_file_location("eterban_api", p); m = importlib.util.module_from_spec(s); s.loader.exec_module(m); m.ipset_test = lambda setname, ip: None; assert m.check_ip("192.0.2.1") == {"error": "ipset query failed"}'
python3 -c 'import importlib.util; p = "ban-internal-server/data/www/int2.py"; s = importlib.util.spec_from_file_location("eterban_internal", p); m = importlib.util.module_from_spec(s); s.loader.exec_module(m); m.get_original_dst = lambda request: ("192.0.2.1", 80); m.read_settings = lambda path: (_ for _ in ()).throw(KeyError("Settings")); f = type("F", (), {"path": "/unban", "request": object(), "client_address": ("198.51.100.1", 1), "send_error": lambda self, status, message: setattr(self, "response", (status, message))})(); m.OriginalDstHandler.do_GET(f); assert f.response[0] == 503' >/dev/null 2>&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