Skip to content

Commit 9dc58a2

Browse files
committed
Merge remote-tracking branch 'origin/issues/650-fix-err-500-with-proto-any' into issues/650-fix-err-500-with-proto-any
2 parents eaa4904 + 7b319b8 commit 9dc58a2

File tree

10 files changed

+54
-17
lines changed

10 files changed

+54
-17
lines changed

api/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@
9797
<dependency>
9898
<groupId>com.azure</groupId>
9999
<artifactId>azure-identity</artifactId>
100-
<version>1.13.3</version>
100+
<version>1.14.2</version>
101101
<exclusions>
102102
<exclusion>
103103
<groupId>io.netty</groupId>

api/src/main/java/io/kafbat/ui/emitter/MessageFilters.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,23 @@ public static Predicate<TopicMessageDTO> noop() {
5252

5353
public static Predicate<TopicMessageDTO> containsStringFilter(String string) {
5454
return msg -> StringUtils.contains(msg.getKey(), string)
55-
|| StringUtils.contains(msg.getContent(), string);
55+
|| StringUtils.contains(msg.getContent(), string) || headersContains(msg, string);
56+
}
57+
58+
private static boolean headersContains(TopicMessageDTO msg, String searchString) {
59+
final var headers = msg.getHeaders();
60+
61+
if (headers == null) {
62+
return false;
63+
}
64+
65+
for (final var entry : headers.entrySet()) {
66+
if (StringUtils.contains(entry.getKey(), searchString) || StringUtils.contains(entry.getValue(), searchString)) {
67+
return true;
68+
}
69+
}
70+
71+
return false;
5672
}
5773

5874
public static Predicate<TopicMessageDTO> celScriptFilter(String script) {

api/src/main/java/io/kafbat/ui/model/rbac/Role.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.kafbat.ui.model.rbac;
22

3+
import com.google.common.base.Preconditions;
34
import java.util.List;
45
import lombok.Data;
56

@@ -12,6 +13,7 @@ public class Role {
1213
List<Permission> permissions;
1314

1415
public void validate() {
16+
Preconditions.checkArgument(!clusters.isEmpty(), "Role clusters cannot be empty");
1517
permissions.forEach(Permission::transform);
1618
permissions.forEach(Permission::validate);
1719
}

api/src/main/java/io/kafbat/ui/service/rbac/AccessControlService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,11 +113,11 @@ private boolean isAccessible(AuthenticatedUser user, AccessContext context) {
113113
return context.isAccessible(getUserPermissions(user, context.cluster()));
114114
}
115115

116-
private List<Permission> getUserPermissions(AuthenticatedUser user, String clusterName) {
116+
private List<Permission> getUserPermissions(AuthenticatedUser user, @Nullable String clusterName) {
117117
return properties.getRoles()
118118
.stream()
119119
.filter(filterRole(user))
120-
.filter(role -> role.getClusters().stream().anyMatch(clusterName::equalsIgnoreCase))
120+
.filter(role -> clusterName == null || role.getClusters().stream().anyMatch(clusterName::equalsIgnoreCase))
121121
.flatMap(role -> role.getPermissions().stream())
122122
.toList();
123123
}

api/src/test/java/io/kafbat/ui/emitter/MessageFiltersTest.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class StringContainsFilter {
2828
Predicate<TopicMessageDTO> filter = containsStringFilter("abC");
2929

3030
@Test
31-
void returnsTrueWhenStringContainedInKeyOrContentOrInBoth() {
31+
void returnsTrueWhenStringContainedInKeyOrContentOrHeadersOrInAllThree() {
3232
assertTrue(
3333
filter.test(msg().key("contains abCd").content("some str"))
3434
);
@@ -40,6 +40,14 @@ void returnsTrueWhenStringContainedInKeyOrContentOrInBoth() {
4040
assertTrue(
4141
filter.test(msg().key("contains abCd").content("contains abCd"))
4242
);
43+
44+
assertTrue(
45+
filter.test(msg().key("dfg").content("does-not-contain").headers(Map.of("abC", "value")))
46+
);
47+
48+
assertTrue(
49+
filter.test(msg().key("dfg").content("does-not-contain").headers(Map.of("x1", "some abC")))
50+
);
4351
}
4452

4553
@Test
@@ -55,6 +63,11 @@ void returnsFalseOtherwise() {
5563
assertFalse(
5664
filter.test(msg().key("aBc").content("AbC"))
5765
);
66+
67+
assertFalse(
68+
filter.test(msg().key("aBc").content("AbC").headers(Map.of("abc", "value")))
69+
);
70+
5871
}
5972

6073
}

contract/src/main/resources/swagger/kafbat-ui-api.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3779,6 +3779,7 @@ components:
37793779
- DYNAMIC_BROKER_LOGGER_CONFIG
37803780
- DYNAMIC_BROKER_CONFIG
37813781
- DYNAMIC_DEFAULT_BROKER_CONFIG
3782+
- DYNAMIC_CLIENT_METRICS_CONFIG
37823783
- STATIC_BROKER_CONFIG
37833784
- DEFAULT_CONFIG
37843785
- UNKNOWN

frontend/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,8 @@
116116
"follow-redirects@<1.15.4": ">=1.15.4",
117117
"json5@>=2.0.0 <2.2.2": ">=2.2.2",
118118
"semver@>=7.0.0 <7.5.2": ">=7.5.2",
119-
"axios@>=0.8.1 <0.28.0": ">=0.28.0"
119+
"axios@>=0.8.1 <0.28.0": ">=0.28.0",
120+
"braces": "3.0.3"
120121
}
121122
}
122123
}

frontend/pnpm-lock.yaml

Lines changed: 10 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frontend/src/components/Brokers/Broker/Configs/lib/constants.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ export const CONFIG_SOURCE_NAME_MAP: Record<ConfigSource, string> = {
55
[ConfigSource.DYNAMIC_BROKER_LOGGER_CONFIG]: 'Dynamic broker logger config',
66
[ConfigSource.DYNAMIC_BROKER_CONFIG]: 'Dynamic broker config',
77
[ConfigSource.DYNAMIC_DEFAULT_BROKER_CONFIG]: 'Dynamic default broker config',
8+
[ConfigSource.DYNAMIC_CLIENT_METRICS_CONFIG]:
9+
'Dynamic client metrics subscription config',
810
[ConfigSource.STATIC_BROKER_CONFIG]: 'Static broker config',
911
[ConfigSource.DEFAULT_CONFIG]: 'Default config',
1012
[ConfigSource.UNKNOWN]: 'Unknown',
@@ -15,6 +17,7 @@ export const CONFIG_SOURCE_PRIORITY = {
1517
[ConfigSource.DYNAMIC_BROKER_LOGGER_CONFIG]: 1,
1618
[ConfigSource.DYNAMIC_BROKER_CONFIG]: 1,
1719
[ConfigSource.DYNAMIC_DEFAULT_BROKER_CONFIG]: 1,
20+
[ConfigSource.DYNAMIC_CLIENT_METRICS_CONFIG]: 1,
1821
[ConfigSource.STATIC_BROKER_CONFIG]: 2,
1922
[ConfigSource.DEFAULT_CONFIG]: 3,
2023
[ConfigSource.UNKNOWN]: 4,

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,13 @@
3939
<datasketches-java.version>3.1.0</datasketches-java.version>
4040
<groovy.version>3.0.13</groovy.version>
4141
<jackson.version>2.14.0</jackson.version>
42-
<kafka-clients.version>3.5.2</kafka-clients.version>
42+
<kafka-clients.version>3.7.1</kafka-clients.version>
4343
<org.mapstruct.version>1.6.2</org.mapstruct.version>
4444
<org.projectlombok.version>1.18.34</org.projectlombok.version>
4545
<protobuf-java.version>3.25.5</protobuf-java.version>
4646
<scala-lang.library.version>2.13.9</scala-lang.library.version>
4747
<snakeyaml.version>2.3</snakeyaml.version>
48-
<spring-boot.version>3.3.4</spring-boot.version>
48+
<spring-boot.version>3.3.6</spring-boot.version>
4949
<serde-api.version>1.0.0</serde-api.version>
5050
<odd-oddrn-generator.version>0.1.17</odd-oddrn-generator.version>
5151
<odd-oddrn-client.version>0.1.39</odd-oddrn-client.version>

0 commit comments

Comments
 (0)