Skip to content

Commit 350b77b

Browse files
committed
fix: filter only valid IPs when parsing coordinate map chart data
1 parent 31eb7e9 commit 350b77b

1 file changed

Lines changed: 24 additions & 1 deletion

File tree

backend/src/main/java/com/park/utmstack/util/chart_builder/elasticsearch_dsl/responses/impl/coordinate_map/ResponseParserForCoordinateMapChart.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,9 @@ public List<CoordinateMapChartResult> parse(UtmVisualization visualization, Sear
4545

4646
if (bucket != null) {
4747
List<BucketAggregation> entries = TermAggregateParser.parse(result.aggregations().get(bucket.getId()));
48-
entries = entries.stream().filter(e -> StringUtils.hasText(e.getKey())).collect(Collectors.toList());
48+
entries = entries.stream().filter(e -> isValidIP(e.getKey()))
49+
.collect(Collectors.toList());
50+
4951

5052
for (BucketAggregation entry : entries) {
5153
GeoIp ipV4Info;
@@ -88,4 +90,25 @@ public List<CoordinateMapChartResult> parse(UtmVisualization visualization, Sear
8890
throw new RuntimeException(ctx + ": " + e.getMessage());
8991
}
9092
}
93+
94+
public static boolean isValidIP(String ip) {
95+
return isValidIPv4(ip) || isValidIPv6(ip);
96+
}
97+
98+
99+
public static boolean isValidIPv4(String ip) {
100+
if (ip == null || ip.isEmpty()) return false;
101+
String regex =
102+
"^((25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)(\\.|$)){4}$";
103+
return ip.matches(regex);
104+
}
105+
106+
public static boolean isValidIPv6(String ip) {
107+
if (ip == null || ip.isEmpty()) return false;
108+
String regex =
109+
"^(?:[\\da-fA-F]{1,4}:){7}[\\da-fA-F]{1,4}$";
110+
return ip.matches(regex);
111+
}
112+
113+
91114
}

0 commit comments

Comments
 (0)