def stop_monitor_by_container_id(container_id): # -- Check runtime monitor status if not InternalServer.is_runtime_analysis_enabled(): return json.dumps({'err': 503, 'msg': 'Behaviour analysis service unavailable'}, sort_keys=True), 503 # -- Checks input if not container_id: return json.dumps({'err': 400, 'msg': 'Bad container id'}, sort_keys=True), 400 # -- Retrieves docker image name try: image_name = InternalServer.get_docker_driver().get_docker_image_name_by_container_id(container_id) except: return json.dumps({'err': 404, 'msg': 'Container Id not found'}, sort_keys=True), 404 # -- Checks if the container is already being monitoring if not InternalServer.get_mongodb_driver().is_there_a_started_monitoring(container_id): return json.dumps({'err': 400, 'msg': 'There is not monitoring for the requested container id'}, sort_keys=True), 400 now = datetime.datetime.now().timestamp() # -- Process request InternalServer.get_mongodb_driver().update_runtime_monitoring_analysis(container_id) monitoring_result = InternalServer.get_mongodb_driver().get_a_started_monitoring(container_id) monitoring_result['runtime_analysis']['stop_timestamp'] = now monitoring_result['status'] = 'Completed' id = str(monitoring_result['_id']) # -- Update history InternalServer.get_mongodb_driver().update_docker_image_scan_result_to_history(id, monitoring_result) # -- Return return json.dumps(InternalServer.get_mongodb_driver().get_docker_image_history(image_name, id)[0], sort_keys=True)
def stop_monitor_by_container_id(container_id): # -- Check runtime monitor status if not InternalServer.is_runtime_analysis_enabled(): return json.dumps( { 'err': 503, 'msg': 'Behaviour analysis service unavailable' }, sort_keys=True), 503 # -- Checks input if not container_id: return json.dumps({ 'err': 400, 'msg': 'Bad container id' }, sort_keys=True), 400 # -- Retrieves docker image name try: image_name = InternalServer.get_docker_driver( ).get_docker_image_name_by_container_id(container_id) except: return json.dumps({ 'err': 404, 'msg': 'Container Id not found' }, sort_keys=True), 404 # -- Checks if the container is already being monitoring if not InternalServer.get_mongodb_driver().is_there_a_started_monitoring( container_id): return json.dumps( { 'err': 400, 'msg': 'There is not monitoring for the requested container id' }, sort_keys=True), 400 now = datetime.datetime.now().timestamp() # -- Process request InternalServer.get_mongodb_driver().update_runtime_monitoring_analysis( container_id) monitoring_result = InternalServer.get_mongodb_driver( ).get_a_started_monitoring(container_id) monitoring_result['runtime_analysis']['stop_timestamp'] = now monitoring_result['status'] = 'Completed' id = str(monitoring_result['_id']) # -- Update history InternalServer.get_mongodb_driver( ).update_docker_image_scan_result_to_history(id, monitoring_result) # -- Return return json.dumps( InternalServer.get_mongodb_driver().get_docker_image_history( image_name, id)[0], sort_keys=True)
def start_monitor_by_container_id(container_id): # -- Check runtime monitor status if not InternalServer.is_runtime_analysis_enabled(): return json.dumps({'err': 503, 'msg': 'Behaviour analysis service unavailable'}, sort_keys=True), 503 # -- Checks input if not container_id: return json.dumps({'err': 400, 'msg': 'Bad container id'}, sort_keys=True), 400 # -- Retrieves docker image name try: image_name = InternalServer.get_docker_driver().get_docker_image_name_by_container_id(container_id) except: return json.dumps({'err': 404, 'msg': 'Container Id not found'}, sort_keys=True), 404 # -- Checks if the container is already being monitoring if InternalServer.get_mongodb_driver().is_there_a_started_monitoring(container_id): return json.dumps({'err': 400, 'msg': 'The monitoring for the requested container id is already started'}, sort_keys=True), 400 now = datetime.datetime.now().timestamp() # -- Create image_history history = {} history['image_name'] = image_name history['timestamp'] = now history['status'] = 'Monitoring' history['runtime_analysis'] = {'container_id': container_id, 'start_timestamp': now, 'stop_timestamp': None, 'anomalous_activities_detected': None} id = InternalServer.get_mongodb_driver().insert_docker_image_scan_result_to_history(history) # -- Return output = {} output['id'] = str(id) output['image_name'] = image_name output['msg'] = 'Monitoring of docker container with id <' + container_id + '> started' return json.dumps(output, sort_keys=True), 202
def start_monitor_by_container_id(container_id): # -- Check runtime monitor status if not InternalServer.is_runtime_analysis_enabled(): return json.dumps( { 'err': 503, 'msg': 'Behaviour analysis service unavailable' }, sort_keys=True), 503 # -- Checks input if not container_id: return json.dumps({ 'err': 400, 'msg': 'Bad container id' }, sort_keys=True), 400 # -- Retrieves docker image name try: image_name = InternalServer.get_docker_driver( ).get_docker_image_name_by_container_id(container_id) except: return json.dumps({ 'err': 404, 'msg': 'Container Id not found' }, sort_keys=True), 404 # -- Checks if the container is already being monitoring if InternalServer.get_mongodb_driver().is_there_a_started_monitoring( container_id): return json.dumps( { 'err': 400, 'msg': 'The monitoring for the requested container id is already started' }, sort_keys=True), 400 now = datetime.datetime.now().timestamp() # -- Create image_history history = {} history['image_name'] = image_name history['timestamp'] = now history['status'] = 'Monitoring' history['runtime_analysis'] = { 'container_id': container_id, 'start_timestamp': now, 'stop_timestamp': None, 'anomalous_activities_detected': None } id = InternalServer.get_mongodb_driver( ).insert_docker_image_scan_result_to_history(history) # -- Return output = {} output['id'] = str(id) output['image_name'] = image_name output[ 'msg'] = 'Monitoring of docker container with id <' + container_id + '> started' return json.dumps(output, sort_keys=True), 202