From 38f16688871c5edfa15048aadeede5f6b6050bef Mon Sep 17 00:00:00 2001
From: Alan Birchler De Allende <alan.birchler@telecom-paris.fr>
Date: Fri, 26 Apr 2024 13:49:55 +0200
Subject: [PATCH] Updated the code to include RshClient for executing the capec
 tracer script.

---
 src/main/java/ai/CAPECTracer.java | 35 +++++++++++++------------------
 1 file changed, 15 insertions(+), 20 deletions(-)

diff --git a/src/main/java/ai/CAPECTracer.java b/src/main/java/ai/CAPECTracer.java
index 95753adf87..d18ecd833b 100644
--- a/src/main/java/ai/CAPECTracer.java
+++ b/src/main/java/ai/CAPECTracer.java
@@ -1,5 +1,8 @@
 package ai;
 
+import launcher.LauncherException;
+import launcher.RshClient;
+import launcher.RshClientReader;
 import myutil.TraceManager;
 
 import java.io.*;
@@ -57,30 +60,22 @@ public class CAPECTracer extends AIInteract {
         String traces = "";
 
         try {
-            String s = null;
-
-            // Execute the process
-            Process p = Runtime.getRuntime().exec("python3 " + capecTracerFolder + "/capec_tracer.py");
-
-            BufferedReader stdInput = new BufferedReader(new
-                    InputStreamReader(p.getInputStream()));
-            BufferedReader stdError = new BufferedReader(new
-                    InputStreamReader(p.getErrorStream()));
-
-            // read the output from the command
-            while ((s = stdInput.readLine()) != null) {
-                TraceManager.addDev(s);
-            }
-
-            // read any errors from the attempted command
-            while ((s = stdError.readLine()) != null) {
-                TraceManager.addDev(s);
+            RshClient rshc = new RshClient("localhost");
+            rshc.setCmd("python3 " + capecTracerFolder + "/capec_tracer.py");
+            rshc.sendExecuteCommandRequest();
+            RshClientReader data = rshc.getDataReaderFromProcess();
+            int characterInt = data.read();
+            StringBuilder output = new StringBuilder();
+
+            while (characterInt != -1) {
+                output.append((char) characterInt);
+                characterInt = data.read();
             }
 
+            TraceManager.addDev(output.toString());
             byte[] bytes = Files.readAllBytes(Path.of(capecTracerFolder + "/traced_capecs.txt"));
-
             traces = new String(bytes);
-        } catch (IOException e) {
+        } catch (IOException | LauncherException e) {
             TraceManager.addDev(e.getMessage());
         }
 
-- 
GitLab