Skip to content

Commit

Permalink
feat: created a new endpoint to fetch merged urls
Browse files Browse the repository at this point in the history
  • Loading branch information
TangoBeeAkto committed Sep 21, 2024
1 parent 925880f commit 390325f
Show file tree
Hide file tree
Showing 8 changed files with 81 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.akto.dto.billing.Tokens;
import com.akto.dto.bulk_updates.BulkUpdates;
import com.akto.dto.bulk_updates.UpdatePayload;
import com.akto.dto.filter.MergedUrls;
import com.akto.dto.runtime_filters.RuntimeFilter;
import com.akto.dto.settings.DataControlSettings;
import com.akto.dto.test_editor.YamlTemplate;
Expand Down Expand Up @@ -145,6 +146,7 @@ public void setTestSourceConfig(TestSourceConfig testSourceConfig) {
String logicalGroupName;
BasicDBList issuesIds;
List<YamlTemplate> activeAdvancedFilters;
Set<MergedUrls> mergedUrls;

public BasicDBList getIssuesIds() {
return issuesIds;
Expand Down Expand Up @@ -1654,6 +1656,15 @@ public String fetchActiveAdvancedFilters(){
return Action.SUCCESS.toUpperCase();
}

public String fetchMergedUrls() {
try {
this.mergedUrls = DbLayer.fetchMergedUrls();
} catch (Exception e) {
return Action.ERROR.toUpperCase();
}
return Action.SUCCESS.toUpperCase();
}

public List<CustomDataTypeMapper> getCustomDataTypes() {
return customDataTypes;
}
Expand Down Expand Up @@ -2540,4 +2551,11 @@ public void setActiveAdvancedFilters(List<YamlTemplate> activeAdvancedFilters) {
this.activeAdvancedFilters = activeAdvancedFilters;
}

public Set<MergedUrls> getMergedUrls() {
return mergedUrls;
}

public void setMergedUrls(Set<MergedUrls> mergedUrls) {
this.mergedUrls = mergedUrls;
}
}
11 changes: 11 additions & 0 deletions apps/database-abstractor/src/main/resources/struts.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1146,6 +1146,17 @@
</result>
</action>

<action name="api/fetchMergedUrls" class="com.akto.action.DbAction" method="fetchMergedUrls">
<interceptor-ref name="json"/>
<interceptor-ref name="defaultStack" />
<result name="SUCCESS" type="json"/>
<result name="ERROR" type="json">
<param name="statusCode">422</param>
<param name="ignoreHierarchy">false</param>
<param name="includeProperties">^actionErrors.*</param>
</result>
</action>

</package>

</struts>
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

import com.akto.dao.*;
import com.akto.dao.context.Context;
import com.akto.dao.filter.MergedUrlsDao;
import com.akto.dao.monitoring.FilterYamlTemplateDao;
import com.akto.dao.runtime_filters.AdvancedTrafficFiltersDao;
import com.akto.dto.*;
Expand Down Expand Up @@ -1155,7 +1154,7 @@ public void buildFromDB(boolean calcDiff, boolean fetchAllSTI) {
loggerMaker.infoAndAddToDb("Error while clearing values in db: " + e.getMessage(), LogDb.RUNTIME);
}

mergedUrls = MergedUrlsDao.instance.getMergedUrls();
mergedUrls = dataActor.fetchMergedUrls();

aktoPolicyNew.buildFromDb(fetchAllSTI);
}
Expand Down
2 changes: 2 additions & 0 deletions libs/dao/src/main/java/com/akto/dao/filter/MergedUrlsDao.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ public Set<MergedUrls> getMergedUrls() {
mergedUrls.add(mergedUrlsObj);
}

cursor.close();

return mergedUrls;
}

Expand Down
35 changes: 35 additions & 0 deletions libs/utils/src/main/java/com/akto/data_actor/ClientActor.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.akto.data_actor;

import com.akto.DaoInit;
import com.akto.dto.filter.MergedUrls;
import com.akto.dto.settings.DataControlSettings;
import com.akto.testing.ApiExecutor;
import com.auth0.jwt.JWT;
Expand Down Expand Up @@ -3055,4 +3056,38 @@ public List<YamlTemplate> fetchActiveAdvancedFilters(){
return respList;
}

public Set<MergedUrls> fetchMergedUrls() {
Map<String, List<String>> headers = buildHeaders();

List<MergedUrls> respList = new ArrayList<>();
OriginalHttpRequest request = new OriginalHttpRequest(url + "/fetchMergedUrls", "", "POST", "", headers, "");

try {
OriginalHttpResponse response = ApiExecutor.sendRequestBackOff(request, true, null, false, null);
String responsePayload = response.getBody();
if (response.getStatusCode() != 200 || responsePayload == null) {
loggerMaker.errorAndAddToDb("non 2xx response in fetchMergedUrls", LoggerMaker.LogDb.RUNTIME);
return null;
}
BasicDBObject payloadObj;

try {
payloadObj = BasicDBObject.parse(responsePayload);
BasicDBList newUrls = (BasicDBList) payloadObj.get("mergedUrls");
for (Object url: newUrls) {
BasicDBObject urlObj = (BasicDBObject) url;
MergedUrls mergedUrl = objectMapper.readValue(urlObj.toJson(), MergedUrls.class);
respList.add(mergedUrl);
}
} catch (Exception e) {
loggerMaker.errorAndAddToDb("error extracting response in fetchMergedUrls" + e, LoggerMaker.LogDb.RUNTIME);
}
} catch (Exception e) {
loggerMaker.errorAndAddToDb("error in fetching merged urls: " + e, LoggerMaker.LogDb.RUNTIME);
return null;
}

return new HashSet<>(respList);
}

}
3 changes: 3 additions & 0 deletions libs/utils/src/main/java/com/akto/data_actor/DataActor.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.akto.dto.*;
import com.akto.dto.billing.Organization;
import com.akto.dto.billing.Tokens;
import com.akto.dto.filter.MergedUrls;
import com.akto.dto.runtime_filters.RuntimeFilter;
import com.akto.dto.settings.DataControlSettings;
import com.akto.dto.test_editor.YamlTemplate;
Expand Down Expand Up @@ -227,4 +228,6 @@ public abstract class DataActor {
public abstract List<ApiInfo.ApiInfoKey> fetchLatestEndpointsForTesting(int startTimestamp, int endTimestamp, int apiCollectionId);

public abstract List<YamlTemplate> fetchActiveAdvancedFilters();

public abstract Set<MergedUrls> fetchMergedUrls();
}
5 changes: 5 additions & 0 deletions libs/utils/src/main/java/com/akto/data_actor/DbActor.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.akto.dto.ApiInfo.ApiInfoKey;
import com.akto.dto.billing.Organization;
import com.akto.dto.billing.Tokens;
import com.akto.dto.filter.MergedUrls;
import com.akto.dto.runtime_filters.RuntimeFilter;
import com.akto.dto.settings.DataControlSettings;
import com.akto.dto.test_editor.YamlTemplate;
Expand Down Expand Up @@ -472,4 +473,8 @@ public List<YamlTemplate> fetchActiveAdvancedFilters(){
return DbLayer.fetchActiveFilterTemplates();
}

public Set<MergedUrls> fetchMergedUrls() {
return DbLayer.fetchMergedUrls();
}

}
6 changes: 6 additions & 0 deletions libs/utils/src/main/java/com/akto/data_actor/DbLayer.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,11 @@

import com.akto.bulk_update_util.ApiInfoBulkUpdate;
import com.akto.dao.*;
import com.akto.dao.filter.MergedUrlsDao;
import com.akto.dao.settings.DataControlSettingsDao;
import com.akto.dependency_analyser.DependencyAnalyserUtils;
import com.akto.dto.*;
import com.akto.dto.filter.MergedUrls;
import com.akto.dto.settings.DataControlSettings;
import com.mongodb.client.model.*;
import org.bson.conversions.Bson;
Expand Down Expand Up @@ -865,4 +867,8 @@ public static List<YamlTemplate> fetchActiveFilterTemplates(){
Filters.ne(YamlTemplate.INACTIVE, false)
);
}

public static Set<MergedUrls> fetchMergedUrls() {
return MergedUrlsDao.instance.getMergedUrls();
}
}

0 comments on commit 390325f

Please sign in to comment.