From 8538792da140a8e3cc376fdc79ca5bd5f4d98882 Mon Sep 17 00:00:00 2001 From: Terrtia Date: Wed, 30 Jan 2019 14:47:43 +0100 Subject: [PATCH] chg: [server UI v0.2] blacklist/unblacklist by network + add navfooter + fix css --- server/web/Flask_server.py | 24 ++++++++++++++++++++ server/web/static/img/cef.png | Bin 20064 -> 18552 bytes server/web/templates/index.html | 23 +++++++++---------- server/web/templates/navfooter.html | 19 ++++++++++++++++ server/web/templates/sensors_status.html | 6 +---- server/web/templates/server_management.html | 6 +++-- server/web/templates/uuid_management.html | 1 + 7 files changed, 60 insertions(+), 19 deletions(-) create mode 100644 server/web/templates/navfooter.html diff --git a/server/web/Flask_server.py b/server/web/Flask_server.py index c902570..b2c4efe 100755 --- a/server/web/Flask_server.py +++ b/server/web/Flask_server.py @@ -60,6 +60,13 @@ def is_valid_ip(ip): except ValueError: return False +def is_valid_network(ip_network): + try: + ipaddress.ip_network(ip_network) + return True + except ValueError: + return False + # server_management input handler def get_server_management_input_handler_value(value): if value is not None: @@ -303,6 +310,7 @@ def unblacklist_uuid(): def blacklist_ip(): ip = request.args.get('ip') user = request.args.get('redirect') + if is_valid_ip(ip): res = redis_server_metadata.sadd('blacklist_ip', ip) if user: @@ -310,6 +318,14 @@ def blacklist_ip(): return redirect(url_for('server_management', blacklisted_ip=2)) else: return redirect(url_for('server_management', blacklisted_ip=1)) + elif is_valid_network(ip): + for addr in ipaddress.ip_network(ip): + res = redis_server_metadata.sadd('blacklist_ip', str(addr)) + if user: + if res==0: + return redirect(url_for('server_management', blacklisted_ip=2)) + else: + return redirect(url_for('server_management', blacklisted_ip=1)) else: if user: return redirect(url_for('server_management', blacklisted_ip=0)) @@ -326,6 +342,14 @@ def unblacklist_ip(): return redirect(url_for('server_management', unblacklisted_ip=2)) else: return redirect(url_for('server_management', unblacklisted_ip=1)) + elif is_valid_network(ip): + for addr in ipaddress.ip_network(ip): + res = redis_server_metadata.srem('blacklist_ip', str(addr)) + if user: + if res==0: + return redirect(url_for('server_management', unblacklisted_ip=2)) + else: + return redirect(url_for('server_management', unblacklisted_ip=1)) else: if user: return redirect(url_for('server_management', unblacklisted_ip=0)) diff --git a/server/web/static/img/cef.png b/server/web/static/img/cef.png index 9d29cf7037472e95084c321973d977ae23c85760..a4a8e4f77291b0ce201779d5bcc193c9340dc3d6 100644 GIT binary patch literal 18552 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 literal 20064 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 C9kp2i diff --git a/server/web/templates/index.html b/server/web/templates/index.html index 31a2049..b628433 100644 --- a/server/web/templates/index.html +++ b/server/web/templates/index.html @@ -6,6 +6,7 @@ + @@ -56,13 +57,13 @@ - - - + + + @@ -94,17 +95,15 @@ -
- circl - cef -
+ + {% include 'navfooter.html' %} - + {% include 'navfooter.html' %} diff --git a/server/web/templates/server_management.html b/server/web/templates/server_management.html index d468328..6ed5c37 100644 --- a/server/web/templates/server_management.html +++ b/server/web/templates/server_management.html @@ -6,6 +6,7 @@ + @@ -39,7 +40,7 @@ -
+
Blacklist IP @@ -145,7 +146,7 @@
-
+
Header Accepted Types @@ -193,6 +194,7 @@
+ {% include 'navfooter.html' %}