diff --git a/server/web/Flask_server.py b/server/web/Flask_server.py index e2ed6ed..f3cf2b1 100755 --- a/server/web/Flask_server.py +++ b/server/web/Flask_server.py @@ -24,6 +24,7 @@ host_redis_stream = "localhost" port_redis_stream = 6379 default_max_entries_by_stream = 10000 +analyzer_list_max_default_size = 10000 json_type_description_path = os.path.join(os.environ['D4_HOME'], 'web/static/json/type.json') @@ -197,8 +198,24 @@ def server_management(): json_type_description = get_json_type_description() list_accepted_types = [] + list_analyzer_types = [] for type in redis_server_metadata.smembers('server:accepted_type'): - list_accepted_types.append({"id": int(type), "description": json_type_description[int(type)]['description']}) + try: + description = json_type_description[int(type)]['description'] + except: + description = 'Please update your web server' + + list_analyzer_uuid = [] + for analyzer_uuid in redis_server_metadata.smembers('analyzer:{}'.format(type)): + size_limit = redis_server_metadata.hget('analyzer:{}'.format(analyzer_uuid), 'max_size') + if size_limit is None: + size_limit = analyzer_list_max_default_size + last_updated = redis_server_metadata.hget('analyzer:{}'.format(analyzer_uuid), 'last_updated') + if last_updated is None: + last_updated = 'Never' + list_analyzer_uuid.append({'uuid': analyzer_uuid, 'size_limit': size_limit,'last_updated': last_updated}) + + list_accepted_types.append({"id": int(type), "description": description, 'list_analyzer_uuid': list_analyzer_uuid}) return render_template("server_management.html", list_accepted_types=list_accepted_types, blacklisted_ip=blacklisted_ip, unblacklisted_ip=unblacklisted_ip, @@ -323,6 +340,61 @@ def uuid_change_stream_max_size(): else: return 'Invalid uuid' +@app.route('/add_new_analyzer') +def add_new_analyzer(): + type = request.args.get('type') + user = request.args.get('redirect') + analyzer_uuid = request.args.get('analyzer_uuid') + if is_valid_uuid_v4(analyzer_uuid): + try: + type = int(type) + if type < 0: + return 'type, Invalid Integer' + except: + return 'type, Invalid Integer' + redis_server_metadata.sadd('analyzer:{}'.format(type), analyzer_uuid) + if user: + return redirect(url_for('server_management')) + else: + return 'Invalid uuid' + +@app.route('/remove_analyzer') +def remove_analyzer(): + analyzer_uuid = request.args.get('analyzer_uuid') + type = request.args.get('type') + user = request.args.get('redirect') + if is_valid_uuid_v4(analyzer_uuid): + try: + type = int(type) + if type < 0: + return 'type, Invalid Integer' + except: + return 'type, Invalid Integer' + redis_server_metadata.srem('analyzer:{}'.format(type), analyzer_uuid) + print(user) + if user: + return redirect(url_for('server_management')) + else: + return 'Invalid uuid' + +@app.route('/analyzer_change_max_size') +def analyzer_change_max_size(): + analyzer_uuid = request.args.get('analyzer_uuid') + user = request.args.get('redirect') + max_size_analyzer = request.args.get('max_size_analyzer') + if is_valid_uuid_v4(analyzer_uuid): + try: + max_size_analyzer = int(max_size_analyzer) + if max_size_analyzer < 0: + return 'analyzer max size, Invalid Integer' + except: + return 'analyzer max size, Invalid Integer' + redis_server_metadata.hset('analyzer:{}'.format(analyzer_uuid), 'max_size', max_size_analyzer) + if user: + return redirect(url_for('server_management')) + else: + return 'Invalid uuid' + @app.route('/blacklist_uuid') def blacklist_uuid(): uuid_sensor = request.args.get('uuid') diff --git a/server/web/templates/server_management.html b/server/web/templates/server_management.html index 76c521f..fd1dc74 100644 --- a/server/web/templates/server_management.html +++ b/server/web/templates/server_management.html @@ -14,11 +14,6 @@ - - - @@ -182,7 +177,7 @@
Add New Types
- +
@@ -194,6 +189,69 @@ + +
+
+
+ Analyzer Management +
+
+ +
+
+ + + + + + + + + + + + {% for type in list_accepted_types %} + {% if type['list_analyzer_uuid'] %} + {% for analyzer in type['list_analyzer_uuid'] %} + + + + + + + + {% endfor %} + {% endif %} + {% endfor %} + +
Typeuuidlast updatedChange max size limitDelete Analyzer Queue
{{type['id']}}{{analyzer['uuid']}}{{analyzer['last_updated']}} +
+ + +
+
+ + + +
+
+
+
+
+
Add New Analyzer Queue
+ + + +
+
+
+
+ +
+
+ +
+ {% include 'navfooter.html' %} diff --git a/server/workers/workers_8/worker.py b/server/workers/workers_8/worker.py index 142ed88..3125e6e 100755 --- a/server/workers/workers_8/worker.py +++ b/server/workers/workers_8/worker.py @@ -33,7 +33,7 @@ redis_server_analyzer = redis.StrictRedis( db=2) type = 8 -rotation_save_cycle = 10 #seconds +rotation_save_cycle = 300 #seconds save_to_file = True @@ -96,10 +96,10 @@ if __name__ == "__main__": if b'\n' in data[b'message']: all_line = data[b'message'].split(b'\n') for line in all_line[:-1]: - for analyzer_uuid in redis_server_metadata.smembers('analyser:{}'.format(type)): + for analyzer_uuid in redis_server_metadata.smembers('analyzer:{}'.format(type)): analyzer_uuid = analyzer_uuid.decode() redis_server_analyzer.lpush('analyzer:{}:{}'.format(type, analyzer_uuid), line) - redis_server_metadata.hset('analyser:{}'.format(analyzer_uuid), 'last_updated', time.time()) + redis_server_metadata.hset('analyzer:{}'.format(analyzer_uuid), 'last_updated', time.time()) # keep incomplete line if all_line[-1] != b'': buffer += data[b'message']