diff --git a/apps/database-abstractor/src/main/java/com/akto/action/DbAction.java b/apps/database-abstractor/src/main/java/com/akto/action/DbAction.java
index d389c28933..e55116e457 100644
--- a/apps/database-abstractor/src/main/java/com/akto/action/DbAction.java
+++ b/apps/database-abstractor/src/main/java/com/akto/action/DbAction.java
@@ -409,6 +409,20 @@ public String updateApiCollectionNameForVxlan() {
return Action.SUCCESS.toUpperCase();
}
+ String transportType;
+ public String updateTransportType() {
+ try {
+ ApiCollection apiCollection = ApiCollectionsDao.instance.getMeta(apiCollectionId);
+ if (apiCollection != null) {
+ ApiCollectionsDao.instance.updateTransportType(apiCollection, transportType);
+ }
+ } catch (Exception e) {
+ loggerMaker.errorAndAddToDb(e, "error in updateTransportType " + e.toString());
+ return Action.ERROR.toUpperCase();
+ }
+ return Action.SUCCESS.toUpperCase();
+ }
+
public String updateModuleInfo() {
try {
DbLayer.updateModuleInfo(moduleInfo);
@@ -4109,4 +4123,12 @@ public void setTestingRunResultId(String testingRunResultId) {
public void setUrlType(String urlType) {
this.urlType = urlType;
}
+
+ public String getTransportType() {
+ return transportType;
+ }
+
+ public void setTransportType(String transportType) {
+ this.transportType = transportType;
+ }
}
diff --git a/apps/database-abstractor/src/main/resources/struts.xml b/apps/database-abstractor/src/main/resources/struts.xml
index d1713349a0..e350efd5db 100644
--- a/apps/database-abstractor/src/main/resources/struts.xml
+++ b/apps/database-abstractor/src/main/resources/struts.xml
@@ -68,6 +68,17 @@
+
+
+
+
+
+ 422
+ false
+ ^actionErrors.*
+
+
+
diff --git a/libs/dao/src/main/java/com/akto/dao/ApiCollectionsDao.java b/libs/dao/src/main/java/com/akto/dao/ApiCollectionsDao.java
index a6b1a86aa9..d8f256fd55 100644
--- a/libs/dao/src/main/java/com/akto/dao/ApiCollectionsDao.java
+++ b/libs/dao/src/main/java/com/akto/dao/ApiCollectionsDao.java
@@ -74,6 +74,14 @@ public Map getApiCollectionsMetaMap() {
return apiCollectionsMap;
}
+ public void updateTransportType(ApiCollection apiCollection, String transportType) {
+ Bson filter = Filters.eq(ApiCollection.ID, apiCollection.getId());
+ Bson update = Updates.set(ApiCollection.MCP_TRANSPORT_TYPE, transportType);
+ ApiCollectionsDao.instance.updateOne(filter, update);
+ apiCollection.setMcpTransportType(transportType);
+ }
+
+
public List getMetaAll() {
return ApiCollectionsDao.instance.findAll(new BasicDBObject(), Projections.exclude("urls"));
}
diff --git a/libs/dao/src/main/java/com/akto/dto/ApiCollection.java b/libs/dao/src/main/java/com/akto/dto/ApiCollection.java
index c246ff67d5..f9b34b2f1e 100644
--- a/libs/dao/src/main/java/com/akto/dto/ApiCollection.java
+++ b/libs/dao/src/main/java/com/akto/dto/ApiCollection.java
@@ -58,6 +58,10 @@ public class ApiCollection {
String sseCallbackUrl;
public static final String SSE_CALLBACK_URL = "sseCallbackUrl";
+ private String mcpTransportType;
+ public static final String MCP_TRANSPORT_TYPE = "mcpTransportType";
+
+
private static final List ENV_KEYWORDS_WITH_DOT = Arrays.asList(
"staging", "preprod", "qa", "demo", "dev", "test", "svc",
"localhost", "local", "intranet", "lan", "example", "invalid",
@@ -69,6 +73,14 @@ public class ApiCollection {
"kubernetes", "internal"
);
+ public String getMcpTransportType() {
+ return mcpTransportType;
+ }
+
+ public void setMcpTransportType(String mcpTransportType) {
+ this.mcpTransportType = mcpTransportType;
+ }
+
public enum Type {
API_GROUP
diff --git a/libs/utils/src/main/java/com/akto/data_actor/ClientActor.java b/libs/utils/src/main/java/com/akto/data_actor/ClientActor.java
index cb5f5180c1..5276b511a5 100644
--- a/libs/utils/src/main/java/com/akto/data_actor/ClientActor.java
+++ b/libs/utils/src/main/java/com/akto/data_actor/ClientActor.java
@@ -220,6 +220,24 @@ public void updateApiCollectionNameForVxlan(int vxlanId, String name) {
}
}
+ public void updateTransportType(int apiCollectionId, String transportType) {
+ Map> headers = buildHeaders();
+ BasicDBObject obj = new BasicDBObject();
+ obj.put("apiCollectionId", apiCollectionId);
+ obj.put("transportType", transportType);
+ OriginalHttpRequest request = new OriginalHttpRequest(url + "/updateTransportType", "", "POST", obj.toString(), headers, "");
+ try {
+ OriginalHttpResponse response = ApiExecutor.sendRequest(request, true, null, false, null);
+ if (response.getStatusCode() != 200) {
+ loggerMaker.errorAndAddToDb("non 2xx response in updateTransportType", LoggerMaker.LogDb.RUNTIME);
+ return;
+ }
+ } catch (Exception e) {
+ loggerMaker.errorAndAddToDb("error updating transport type" + e + " apiCollectionId " + apiCollectionId
+ + " transportType " + transportType, LoggerMaker.LogDb.RUNTIME);
+ }
+ }
+
public APIConfig fetchApiConfig(String configName) {
Map> headers = buildHeaders();
String queryParams = "?configName="+configName;
diff --git a/libs/utils/src/main/java/com/akto/data_actor/DataActor.java b/libs/utils/src/main/java/com/akto/data_actor/DataActor.java
index 7034d26033..c951ec95dc 100644
--- a/libs/utils/src/main/java/com/akto/data_actor/DataActor.java
+++ b/libs/utils/src/main/java/com/akto/data_actor/DataActor.java
@@ -55,6 +55,8 @@ public abstract class DataActor {
public abstract void updateApiCollectionNameForVxlan(int vxlanId, String name);
+ public abstract void updateTransportType(int apiCollectionId, String transportType);
+
public abstract APIConfig fetchApiConfig(String configName);
public abstract void bulkWriteSingleTypeInfo(List