From bec9ad8d1d11f4e29389ec4792973e5d3a77aa92 Mon Sep 17 00:00:00 2001
From: luiscal4a <l.delacal@alumnos.upm.es>
Date: Fri, 10 Feb 2023 13:15:10 +0100
Subject: [PATCH] Obtaining ML features through ONNX file metadata Modified CAD
 component to send ML features to DAD

---
 ...alizedattackdetectorServiceServicerImpl.py | 34 +++++++------------
 1 file changed, 13 insertions(+), 21 deletions(-)

diff --git a/src/l3_centralizedattackdetector/service/l3_centralizedattackdetectorServiceServicerImpl.py b/src/l3_centralizedattackdetector/service/l3_centralizedattackdetectorServiceServicerImpl.py
index 9017bec69..d694ac7df 100644
--- a/src/l3_centralizedattackdetector/service/l3_centralizedattackdetectorServiceServicerImpl.py
+++ b/src/l3_centralizedattackdetector/service/l3_centralizedattackdetectorServiceServicerImpl.py
@@ -22,7 +22,7 @@ import onnxruntime as rt
 import logging
 import time
 
-from common.proto.l3_centralizedattackdetector_pb2 import Empty
+from common.proto.l3_centralizedattackdetector_pb2 import Empty, AutoFeatures
 from common.proto.l3_centralizedattackdetector_pb2_grpc import L3CentralizedattackdetectorServicer
 
 from common.proto.l3_attackmitigator_pb2 import L3AttackmitigatorOutput
@@ -59,11 +59,10 @@ class l3_centralizedattackdetectorServiceServicerImpl(L3Centralizedattackdetecto
         self.inference_results = []
         self.model = rt.InferenceSession(MODEL_FILE)
         
+        # Load features metadata from onnx file
         self.meta = list(self.model.get_modelmeta().custom_metadata_map.values())
-        self.meta = [int(x) for x in self.meta]
+        self.meta = [float(x) for x in self.meta]
         self.meta.sort()
-        LOGGER.debug(self.meta)
-        LOGGER.debug("Prueba onnx")
         
         self.input_name = self.model.get_inputs()[0].name
         self.label_name = self.model.get_outputs()[0].name
@@ -455,23 +454,6 @@ class l3_centralizedattackdetectorServiceServicerImpl(L3Centralizedattackdetecto
     """
 
     def make_inference(self, request):
-        '''x_data = np.array(
-            [
-                [
-                    request.c_pkts_all,
-                    request.c_ack_cnt,
-                    request.c_bytes_uniq,
-                    request.c_pkts_data,
-                    request.c_bytes_all,
-                    request.s_pkts_all,
-                    request.s_ack_cnt,
-                    request.s_bytes_uniq,
-                    request.s_pkts_data,
-                    request.s_bytes_all,
-                ]
-            ]
-        )'''
-        
         x_data = np.array(
             [
                 [feature.feature for feature in request.features]
@@ -643,3 +625,13 @@ class l3_centralizedattackdetectorServiceServicerImpl(L3Centralizedattackdetecto
             logging.info("No attack detected")
 
             return Empty(message="Ok, information received (no attack detected)")
+        
+    """
+    Send features allocated in the metadata of the onnx file to the DAD
+        -output: ONNX metadata as a list of integers
+    """
+    def SendFeatures(self, request : Empty, context):
+        features = AutoFeatures()
+        for feature in self.meta:
+            features.autoFeatures.append(feature)
+        return features
\ No newline at end of file
-- 
GitLab