From 64ba644e63fa8bed6d677d0e9294214566cf4162 Mon Sep 17 00:00:00 2001 From: Ark2307 Date: Fri, 13 Dec 2024 09:33:58 +0530 Subject: [PATCH 1/2] Overriding host from url in test completed --- .../java/com/akto/testing/TestExecutor.java | 2 +- .../com/akto/dto/OriginalHttpRequest.java | 15 +++++++++++++- .../src/main/java/com/akto/dto/RawApi.java | 20 +++++++++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/apps/testing/src/main/java/com/akto/testing/TestExecutor.java b/apps/testing/src/main/java/com/akto/testing/TestExecutor.java index c40d6ed941..33046ed974 100644 --- a/apps/testing/src/main/java/com/akto/testing/TestExecutor.java +++ b/apps/testing/src/main/java/com/akto/testing/TestExecutor.java @@ -698,7 +698,7 @@ public TestingRunResult runTestNew(ApiInfo.ApiInfoKey apiInfoKey, ObjectId testR String message = messages.get(messages.size() - 1); - RawApi rawApi = RawApi.buildFromMessage(message); + RawApi rawApi = RawApi.buildFromMessage(message, true); int startTime = Context.now(); try { diff --git a/libs/dao/src/main/java/com/akto/dto/OriginalHttpRequest.java b/libs/dao/src/main/java/com/akto/dto/OriginalHttpRequest.java index 26a9d59bb1..14820bfcbb 100644 --- a/libs/dao/src/main/java/com/akto/dto/OriginalHttpRequest.java +++ b/libs/dao/src/main/java/com/akto/dto/OriginalHttpRequest.java @@ -4,7 +4,6 @@ import com.akto.util.HttpRequestResponseUtils; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; -import com.ctc.wstx.shaded.msv_core.util.Uri; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; import com.mongodb.BasicDBObject; @@ -48,6 +47,20 @@ public OriginalHttpRequest copy() { ); } + public void buildFromSampleMessage(String message, boolean useUrlToFillHost) { + buildFromSampleMessage(message); + if(useUrlToFillHost){ + try { + URI uri = new URI(this.url); + String calculatedHost = uri.getHost() != null ? uri.getHost() : ""; + this.headers.put("host", Arrays.asList(calculatedHost)); + } catch (Exception e) { + e.printStackTrace(); + } + + } + } + public void buildFromSampleMessage(String message) { Map json = gson.fromJson(message, Map.class); diff --git a/libs/dao/src/main/java/com/akto/dto/RawApi.java b/libs/dao/src/main/java/com/akto/dto/RawApi.java index f815f5f6b1..bbc8b9488c 100644 --- a/libs/dao/src/main/java/com/akto/dto/RawApi.java +++ b/libs/dao/src/main/java/com/akto/dto/RawApi.java @@ -1,5 +1,6 @@ package com.akto.dto; +import java.net.URI; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -25,6 +26,25 @@ public RawApi(OriginalHttpRequest request, OriginalHttpResponse response, String this.originalMessage = originalMessage; } + public static RawApi buildFromMessage(String message, boolean overrideHostHeader){ + if(!overrideHostHeader){ + return buildFromMessage(message); + }else{ + try { + OriginalHttpRequest request = new OriginalHttpRequest(); + request.buildFromSampleMessage(message, true); + + OriginalHttpResponse response = new OriginalHttpResponse(); + response.buildFromSampleMessage(message); + + return new RawApi(request, response, message); + } catch (Exception e) { + e.printStackTrace(); + return buildFromMessage(message); + } + } + } + public static RawApi buildFromMessage(String message) { OriginalHttpRequest request = new OriginalHttpRequest(); request.buildFromSampleMessage(message); From 9da67e5fa6bc004b6a4b1551f2594b7be03c164f Mon Sep 17 00:00:00 2001 From: Ark2307 Date: Fri, 13 Dec 2024 11:44:00 +0530 Subject: [PATCH 2/2] Adding check for host header absent --- .../src/main/java/com/akto/dto/OriginalHttpRequest.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libs/dao/src/main/java/com/akto/dto/OriginalHttpRequest.java b/libs/dao/src/main/java/com/akto/dto/OriginalHttpRequest.java index 14820bfcbb..f6c85ebc52 100644 --- a/libs/dao/src/main/java/com/akto/dto/OriginalHttpRequest.java +++ b/libs/dao/src/main/java/com/akto/dto/OriginalHttpRequest.java @@ -51,9 +51,11 @@ public void buildFromSampleMessage(String message, boolean useUrlToFillHost) { buildFromSampleMessage(message); if(useUrlToFillHost){ try { - URI uri = new URI(this.url); - String calculatedHost = uri.getHost() != null ? uri.getHost() : ""; - this.headers.put("host", Arrays.asList(calculatedHost)); + if(this.headers.getOrDefault("host", null) == null){ + URI uri = new URI(this.url); + String calculatedHost = uri.getHost() != null ? uri.getHost() : ""; + this.headers.put("host", Arrays.asList(calculatedHost)); + } } catch (Exception e) { e.printStackTrace(); }