diff --git a/src/common/core/cors/ui/actions.py b/src/common/core/cors/ui/actions.py
index 9e1aed8ef..c5bf62b25 100644
--- a/src/common/core/cors/ui/actions.py
+++ b/src/common/core/cors/ui/actions.py
@@ -1,25 +1,26 @@
+from logging import getLogger
from traceback import format_exc
def pre_render(**kwargs):
+ logger = getLogger("UI")
+ ret = {
+ "counter_failed_cors": {
+ "value": 0,
+ "title": "CORS",
+ "subtitle": "Request blocked",
+ "subtitle_color": "danger",
+ "svg_color": "danger",
+ },
+ }
try:
- data = kwargs["bw_instances_utils"].get_metrics("cors")
- return {
- "counter_failed_cors": {
- "value": data.get("counter_failed_cors", 0),
- "title": "CORS",
- "subtitle": "request blocked",
- "subtitle_color": "error",
- "svg_color": "red",
- }
- }
+ ret["counter_failed_cors"]["value"] = kwargs["bw_instances_utils"].get_metrics("cors").get("counter_failed_cors", 0)
+ except BaseException as e:
+ logger.debug(format_exc())
+ logger.error(f"Failed to get cors metrics: {e}")
+ ret["error"] = str(e)
- except BaseException:
- print(format_exc(), flush=True)
- return {
- "counter_failed_cors": {"value": "unknown", "title": "CORS", "subtitle": "request blocked", "subtitle_color": "error", "svg_color": "red"},
- "error": format_exc(),
- }
+ return ret
def cors(**kwargs):
diff --git a/src/common/core/cors/ui/template.html b/src/common/core/cors/ui/template.html
deleted file mode 100644
index a4a058de7..000000000
--- a/src/common/core/cors/ui/template.html
+++ /dev/null
@@ -1,144 +0,0 @@
-{% extends "base.html" %}
-
-{% set read_doc_text = 'You will find more information about the cors plugin in the documentation.' %}
-
-{% block content %}
-
-
- {% if is_used and is_metrics %}
-
-
INFO
-
-
{{plugin.get('description')}}
-
-
{{ read_doc_text|safe }}
-
-
-
- {% if pre_render.get("status", False) and pre_render.get("status", False) == "ko" or "error" in pre_render.get("data", {}) or pre_render.get("data") is not mapping %}
-
-
-
-
-
(Pre rendering error) {{ pre_render.get("data", { "error" : "No log to show" }).get("error", "No log to show") }}
-
- {% endif %}
-
- {% if pre_render.get("status", False) and pre_render.get("status", False) == "ok" and pre_render.get("data") is mapping and "error" not in pre_render.get("data", {}) %}
-
-
- {% for key, value in pre_render.get("data", {}).items() %}
-
- {% if key.startswith("ping_") %}
-
-
-
- {% if pre_render.get("status", False) and pre_render.get("status", False) == "ko" or "error" in pre_render.get("data", {}) or pre_render.get("data") is not mapping %}
-
-
-
-
-
(Pre rendering error) {{ pre_render.get("data", { "error" : "No log to show" }).get("error", "No log to show") }}
-
- {% endif %}
-
- {% if pre_render.get("status", False) and pre_render.get("status", False) == "ok" and pre_render.get("data") is mapping and "error" not in pre_render.get("data", {}) %}
-
-
- {% for key, value in pre_render.get("data", {}).items() %}
-
- {% if key.startswith("ping_") %}
-
-
-
- {% if pre_render.get("status", False) and pre_render.get("status", False) == "ko" or "error" in pre_render.get("data", {}) or pre_render.get("data") is not mapping %}
-
-
-
-
-
(Pre rendering error) {{ pre_render.get("data", { "error" : "No log to show" }).get("error", "No log to show") }}
-
- {% endif %}
-
- {% if pre_render.get("status", False) and pre_render.get("status", False) == "ok" and pre_render.get("data") is mapping and "error" not in pre_render.get("data", {}) %}
-
-
- {% for key, value in pre_render.get("data", {}).items() %}
-
- {% if key.startswith("ping_") %}
-
-{% endblock %}
diff --git a/src/common/core/errors/ui/actions.py b/src/common/core/errors/ui/actions.py
index 4d7619686..4d1e53d78 100644
--- a/src/common/core/errors/ui/actions.py
+++ b/src/common/core/errors/ui/actions.py
@@ -1,18 +1,40 @@
+from logging import getLogger
from operator import itemgetter
from traceback import format_exc
def pre_render(**kwargs):
+ logger = getLogger("UI")
+ ret = {
+ "top_errors": {
+ "data": {},
+ "order": {
+ "column": 1,
+ "dir": "desc",
+ },
+ "svg_color": "danger",
+ },
+ }
try:
- # Here we will have a list { 'counter_403': X, 'counter_401': Y ... }
- data = kwargs["bw_instances_utils"].get_metrics("errors")
- # Format to fit [{code: 403, count: X}, {code: 401, count: Y} ...]
- format_data = [{"code": int(key.split("_")[1]), "count": int(value)} for key, value in data.items()]
+ format_data = [
+ {
+ "code": int(key.split("_")[1]),
+ "count": int(value),
+ }
+ for key, value in kwargs["bw_instances_utils"].get_metrics("errors").items()
+ ]
format_data.sort(key=itemgetter("count"), reverse=True)
- return {"top_errors": format_data}
- except BaseException:
- print(format_exc(), flush=True)
- return {"top_errors": [], "error": format_exc()}
+ data = {"code": [], "count": []}
+ for item in format_data:
+ data["code"].append(item["code"])
+ data["count"].append(item["count"])
+ ret["top_errors"]["data"] = data
+ except BaseException as e:
+ logger.debug(format_exc())
+ logger.error(f"Failed to get errors metrics: {e}")
+ ret["error"] = str(e)
+
+ return ret
def errors(**kwargs):
diff --git a/src/common/core/errors/ui/template.html b/src/common/core/errors/ui/template.html
deleted file mode 100644
index 3554a7634..000000000
--- a/src/common/core/errors/ui/template.html
+++ /dev/null
@@ -1,119 +0,0 @@
-{% extends "base.html" %}
-
-{% set read_doc_text = 'You will find more information about the errors plugin in the documentation.' %}
-
-{% block content %}
-
-
-
-
INFO
-
-
{{plugin.get('description')}}
-
-
{{ read_doc_text|safe }}
-
-
-
- {% if pre_render.get("status", False) and pre_render.get("status", False) == "ko" or "error" in pre_render.get("data", {}) or pre_render.get("data") is not mapping %}
-
-
-
-
-
(Pre rendering error) {{ pre_render.get("data", { "error" : "No log to show" }).get("error", "No log to show") }}
-
- {% endif %}
-
- {% if pre_render.get("status", False) and pre_render.get("status", False) == "ok" and pre_render.get("data") is mapping and "error" not in pre_render.get("data", {}) %}
-
-
- {% for key, value in pre_render.get("data", {}).items() %}
-
- {% if key.startswith("ping_") %}
-
-
-
- {% if pre_render.get("status", False) and pre_render.get("status", False) == "ko" or "error" in pre_render.get("data", {}) or pre_render.get("data") is not mapping %}
-
-
-
-
-
(Pre rendering error) {{ pre_render.get("data", { "error" : "No log to show" }).get("error", "No log to show") }}
-
- {% endif %}
-
- {% if pre_render.get("status", False) and pre_render.get("status", False) == "ok" and pre_render.get("data") is mapping and "error" not in pre_render.get("data", {}) %}
-
-
- {% for key, value in pre_render.get("data", {}).items() %}
-
- {% if key.startswith("ping_") %}
-
-{% endblock %}
diff --git a/src/common/core/limit/ui/actions.py b/src/common/core/limit/ui/actions.py
index e44a966f4..f39d72d5e 100644
--- a/src/common/core/limit/ui/actions.py
+++ b/src/common/core/limit/ui/actions.py
@@ -1,25 +1,37 @@
+from logging import getLogger
from operator import itemgetter
from traceback import format_exc
def pre_render(**kwargs):
+ logger = getLogger("UI")
+ ret = {
+ "top_limit": {
+ "data": {},
+ "order": {
+ "column": 1,
+ "dir": "desc",
+ },
+ "svg_color": "amber",
+ },
+ }
try:
- # Here we will have a list { 'limit_uri_url1': X, 'limit_uri_url2': Y ... }
- data = kwargs["bw_instances_utils"].get_metrics("limit")
- format_data = []
- # Format to fit [{url: "url1", count: X}, {url: "url2", count: Y} ...]
- for key, value in data.items():
- key = key.split("/", 1)
- if len(key) > 1:
- key = key[1]
- else:
- key = ""
- format_data.append({"url": f"/{key}", "count": int(value)})
+ format_data = [
+ {"URL": f"/{key.split('/', 1)[1] if '/' in key else ''}", "count": int(value)}
+ for key, value in kwargs["bw_instances_utils"].get_metrics("limit").items()
+ ]
format_data.sort(key=itemgetter("count"), reverse=True)
- return {"top_limit": format_data}
- except BaseException:
- print(format_exc(), flush=True)
- return {"top_limit": [], "error": format_exc()}
+ data = {"URL": [], "count": []}
+ for item in format_data:
+ data["URL"].append(item["URL"])
+ data["count"].append(item["count"])
+ ret["top_limit"]["data"] = data
+ except BaseException as e:
+ logger.debug(format_exc())
+ logger.error(f"Failed to get limit metrics: {e}")
+ ret["error"] = str(e)
+
+ return ret
def limit(**kwargs):
diff --git a/src/common/core/limit/ui/template.html b/src/common/core/limit/ui/template.html
deleted file mode 100644
index 65e7faf6d..000000000
--- a/src/common/core/limit/ui/template.html
+++ /dev/null
@@ -1,144 +0,0 @@
-{% extends "base.html" %}
-
-{% set read_doc_text = 'You will find more information about the limit plugin in the documentation.' %}
-
-{% block content %}
-
-
- {% if is_used and is_metrics %}
-
-
INFO
-
-
{{plugin.get('description')}}
-
-
{{ read_doc_text|safe }}
-
-
-
- {% if pre_render.get("status", False) and pre_render.get("status", False) == "ko" or "error" in pre_render.get("data", {}) or pre_render.get("data") is not mapping %}
-
-
-
-
-
(Pre rendering error) {{ pre_render.get("data", { "error" : "No log to show" }).get("error", "No log to show") }}
-
- {% endif %}
-
- {% if pre_render.get("status", False) and pre_render.get("status", False) == "ok" and pre_render.get("data") is mapping and "error" not in pre_render.get("data", {}) %}
-
-
- {% for key, value in pre_render.get("data", {}).items() %}
-
- {% if key.startswith("ping_") %}
-
-
-
- {% if pre_render.get("status", False) and pre_render.get("status", False) == "ko" or "error" in pre_render.get("data", {}) or pre_render.get("data") is not mapping %}
-
-
-
-
-
(Pre rendering error) {{ pre_render.get("data", { "error" : "No log to show" }).get("error", "No log to show") }}
-
- {% endif %}
-
- {% if pre_render.get("status", False) and pre_render.get("status", False) == "ok" and pre_render.get("data") is mapping and "error" not in pre_render.get("data", {}) %}
-
-
- {% for key, value in pre_render.get("data", {}).items() %}
-
- {% if key.startswith("ping_") %}
-
-
-
- {% if pre_render.get("status", False) and pre_render.get("status", False) == "ko" or "error" in pre_render.get("data", {}) or pre_render.get("data") is not mapping %}
-
-
-
-
-
(Pre rendering error) {{ pre_render.get("data", { "error" : "No log to show" }).get("error", "No log to show") }}
-
- {% endif %}
-
- {% if pre_render.get("status", False) and pre_render.get("status", False) == "ok" and pre_render.get("data") is mapping and "error" not in pre_render.get("data", {}) %}
-
-
- {% for key, value in pre_render.get("data", {}).items() %}
-
- {% if key.startswith("ping_") %}
-
-{% endblock %}
diff --git a/src/common/core/reversescan/ui/actions.py b/src/common/core/reversescan/ui/actions.py
index 6d9752ebf..ad5e23e87 100644
--- a/src/common/core/reversescan/ui/actions.py
+++ b/src/common/core/reversescan/ui/actions.py
@@ -1,18 +1,40 @@
+from logging import getLogger
from operator import itemgetter
from traceback import format_exc
def pre_render(**kwargs):
+ logger = getLogger("UI")
+ ret = {
+ "top_reverse_scan": {
+ "data": {},
+ "order": {
+ "column": 1,
+ "dir": "desc",
+ },
+ "svg_color": "danger",
+ },
+ }
try:
- # Here we will have a list { 'counter_403': X, 'counter_401': Y ... }
- data = kwargs["bw_instances_utils"].get_metrics("reversescan")
- # Format to fit [{code: 403, count: X}, {code: 401, count: Y} ...]
- format_data = [{"port": int(key.split("_")[-1]), "count": value} for key, value in data.items()]
+ format_data = [
+ {
+ "port": int(key.split("_")[-1]),
+ "count": int(value),
+ }
+ for key, value in kwargs["bw_instances_utils"].get_metrics("reversescan").items()
+ ]
format_data.sort(key=itemgetter("count"), reverse=True)
- return {"top_reverse_scan": format_data}
- except BaseException:
- print(format_exc(), flush=True)
- return {"top_reverse_scan": [], "error": format_exc()}
+ data = {"port": [], "count": []}
+ for item in format_data:
+ data["port"].append(item["port"])
+ data["count"].append(item["count"])
+ ret["top_reverse_scan"]["data"] = data
+ except BaseException as e:
+ logger.debug(format_exc())
+ logger.error(f"Failed to get reversescan metrics: {e}")
+ ret["error"] = str(e)
+
+ return ret
def reversescan(**kwargs):
diff --git a/src/common/core/reversescan/ui/template.html b/src/common/core/reversescan/ui/template.html
deleted file mode 100644
index 9f9b84975..000000000
--- a/src/common/core/reversescan/ui/template.html
+++ /dev/null
@@ -1,145 +0,0 @@
-{% extends "base.html" %}
-
-{% set read_doc_text = 'You will find more information about the redis plugin in the documentation.' %}
-
-
-{% block content %}
-
-
- {% if is_used and is_metrics %}
-
-
INFO
-
-
{{plugin.get('description')}}
-
-
{{ read_doc_text|safe }}
-
-
-
- {% if pre_render.get("status", False) and pre_render.get("status", False) == "ko" or "error" in pre_render.get("data", {}) or pre_render.get("data") is not mapping %}
-
-
-
-
-
(Pre rendering error) {{ pre_render.get("data", { "error" : "No log to show" }).get("error", "No log to show") }}
-
- {% endif %}
-
- {% if pre_render.get("status", False) and pre_render.get("status", False) == "ok" and pre_render.get("data") is mapping and "error" not in pre_render.get("data", {}) %}
-
-
- {% for key, value in pre_render.get("data", {}).items() %}
-
- {% if key.startswith("ping_") %}
-
-
-
- {% if pre_render.get("status", False) and pre_render.get("status", False) == "ko" or "error" in pre_render.get("data", {}) or pre_render.get("data") is not mapping %}
-
-
-
-
-
(Pre rendering error) {{ pre_render.get("data", { "error" : "No log to show" }).get("error", "No log to show") }}
-
- {% endif %}
-
- {% if pre_render.get("status", False) and pre_render.get("status", False) == "ok" and pre_render.get("data") is mapping and "error" not in pre_render.get("data", {}) %}
-
-
- {% for key, value in pre_render.get("data", {}).items() %}
-
- {% if key.startswith("ping_") %}
-