Compare commits

...

4 Commits

Author SHA1 Message Date
Crazylychee
9cb185afc1 [ISSUE #344] fix maven package display errors and npm i failed (#345)
* [ISSUE #344] fix maven package display errors and npm i failed

* fix
2025-07-16 19:21:39 +08:00
Crazylychee
f60103af9b [ISSUE #346] fix request error when logging in using the configuration file (#347) 2025-07-16 19:21:25 +08:00
TianMing2018
9c2a069976 #docs fix wrong port (#343) 2025-07-16 18:54:15 +08:00
Crazylychee
8cc7d6a727 [ISSUE #341] Add url parameter transcoding (#342)
* [Enhancement] ACL can add rules in clusters and fix ISSUE #297

* rollback the yml change

* [ISSUE #341] Add url parameter transcoding

* [ISSUE #344] fix maven package display errors and npm i failed
2025-07-16 18:53:54 +08:00
7 changed files with 25 additions and 59 deletions

View File

@@ -9,7 +9,7 @@ In the project directory, you can run:
### `npm run start` ### `npm run start`
Runs the app in the development mode.\ Runs the app in the development mode.\
Open [http://localhost:3003](http://localhost:3000) to view it in your browser. Open [http://localhost:3003](http://localhost:3003) to view it in your browser.
The page will reload when you make changes.\ The page will reload when you make changes.\
You may also see any lint errors in the console. You may also see any lint errors in the console.

View File

@@ -19,11 +19,11 @@
"echarts": "^5.6.0", "echarts": "^5.6.0",
"framer-motion": "^12.16.0", "framer-motion": "^12.16.0",
"http-proxy-middleware": "^3.0.5", "http-proxy-middleware": "^3.0.5",
"i18next": "^25.1.3", "i18next": "^23.2.3",
"moment": "^2.30.1", "moment": "^2.30.1",
"react": "^19.1.0", "react": "^19.1.0",
"react-dom": "^19.1.0", "react-dom": "^19.1.0",
"react-i18next": "^15.5.1", "react-i18next": "14.1.3",
"react-redux": "^9.2.0", "react-redux": "^9.2.0",
"react-router-dom": "^7.6.0", "react-router-dom": "^7.6.0",
"react-scripts": "5.0.1", "react-scripts": "5.0.1",
@@ -8918,9 +8918,9 @@
} }
}, },
"node_modules/i18next": { "node_modules/i18next": {
"version": "25.1.3", "version": "23.16.8",
"resolved": "https://registry.npmmirror.com/i18next/-/i18next-25.1.3.tgz", "resolved": "https://registry.npmmirror.com/i18next/-/i18next-23.16.8.tgz",
"integrity": "sha512-VY1iKox3YWPRTNMHFdgk5TV+Jq6rNKexLCLpPmP5oXXJ5Kl7yDBi3ycZ5fyEKZ1tNBW5gOqD4WV0XqE7rl3JUg==", "integrity": "sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==",
"funding": [ "funding": [
{ {
"type": "individual", "type": "individual",
@@ -8936,15 +8936,7 @@
} }
], ],
"dependencies": { "dependencies": {
"@babel/runtime": "^7.27.1" "@babel/runtime": "^7.23.2"
},
"peerDependencies": {
"typescript": "^5"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
} }
}, },
"node_modules/iconv-lite": { "node_modules/iconv-lite": {
@@ -14000,17 +13992,16 @@
"integrity": "sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==" "integrity": "sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ=="
}, },
"node_modules/react-i18next": { "node_modules/react-i18next": {
"version": "15.5.1", "version": "14.1.3",
"resolved": "https://registry.npmmirror.com/react-i18next/-/react-i18next-15.5.1.tgz", "resolved": "https://registry.npmmirror.com/react-i18next/-/react-i18next-14.1.3.tgz",
"integrity": "sha512-C8RZ7N7H0L+flitiX6ASjq9p5puVJU1Z8VyL3OgM/QOMRf40BMZX+5TkpxzZVcTmOLPX5zlti4InEX5pFyiVeA==", "integrity": "sha512-wZnpfunU6UIAiJ+bxwOiTmBOAaB14ha97MjOEnLGac2RJ+h/maIYXZuTHlmyqQVX1UVHmU1YDTQ5vxLmwfXTjw==",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.25.0", "@babel/runtime": "^7.23.9",
"html-parse-stringify": "^3.0.1" "html-parse-stringify": "^3.0.1"
}, },
"peerDependencies": { "peerDependencies": {
"i18next": ">= 23.2.3", "i18next": ">= 23.2.3",
"react": ">= 16.8.0", "react": ">= 16.8.0"
"typescript": "^5"
}, },
"peerDependenciesMeta": { "peerDependenciesMeta": {
"react-dom": { "react-dom": {
@@ -14018,9 +14009,6 @@
}, },
"react-native": { "react-native": {
"optional": true "optional": true
},
"typescript": {
"optional": true
} }
} }
}, },

View File

@@ -14,11 +14,11 @@
"echarts": "^5.6.0", "echarts": "^5.6.0",
"framer-motion": "^12.16.0", "framer-motion": "^12.16.0",
"http-proxy-middleware": "^3.0.5", "http-proxy-middleware": "^3.0.5",
"i18next": "^25.1.3", "i18next": "^23.2.3",
"moment": "^2.30.1", "moment": "^2.30.1",
"react": "^19.1.0", "react": "^19.1.0",
"react-dom": "^19.1.0", "react-dom": "^19.1.0",
"react-i18next": "^15.5.1", "react-i18next": "14.1.3",
"react-redux": "^9.2.0", "react-redux": "^9.2.0",
"react-router-dom": "^7.6.0", "react-router-dom": "^7.6.0",
"react-scripts": "5.0.1", "react-scripts": "5.0.1",

View File

@@ -316,7 +316,7 @@ const remoteApi = {
*/ */
queryMessageByTopicAndKey: async (topic, key) => { queryMessageByTopicAndKey: async (topic, key) => {
try { try {
const response = await remoteApi._fetch(remoteApi.buildUrl(`/message/queryMessageByTopicAndKey.query?topic=${topic}&key=${key}`)); const response = await remoteApi._fetch(remoteApi.buildUrl(`/message/queryMessageByTopicAndKey.query?topic=${encodeURIComponent(topic)}&key=${key}`));
const data = await response.json(); const data = await response.json();
return data; return data;
} catch (error) { } catch (error) {
@@ -559,7 +559,7 @@ const remoteApi = {
getTopicStats: async (topic) => { getTopicStats: async (topic) => {
try { try {
const response = await remoteApi._fetch(remoteApi.buildUrl(`/topic/stats.query?topic=${topic}`)); const response = await remoteApi._fetch(remoteApi.buildUrl(`/topic/stats.query?topic=${encodeURIComponent(topic)}`));
return await response.json(); return await response.json();
} catch (error) { } catch (error) {
console.error("Error fetching topic stats:", error); console.error("Error fetching topic stats:", error);
@@ -569,7 +569,7 @@ const remoteApi = {
getTopicRoute: async (topic) => { getTopicRoute: async (topic) => {
try { try {
const response = await remoteApi._fetch(remoteApi.buildUrl(`/topic/route.query?topic=${topic}`)); const response = await remoteApi._fetch(remoteApi.buildUrl(`/topic/route.query?topic=${encodeURIComponent(topic)}`));
return await response.json(); return await response.json();
} catch (error) { } catch (error) {
console.error("Error fetching topic route:", error); console.error("Error fetching topic route:", error);
@@ -579,7 +579,7 @@ const remoteApi = {
getTopicConsumers: async (topic) => { getTopicConsumers: async (topic) => {
try { try {
const response = await remoteApi._fetch(remoteApi.buildUrl(`/topic/queryConsumerByTopic.query?topic=${topic}`)); const response = await remoteApi._fetch(remoteApi.buildUrl(`/topic/queryConsumerByTopic.query?topic=${encodeURIComponent(topic)}`));
return await response.json(); return await response.json();
} catch (error) { } catch (error) {
console.error("Error fetching topic consumers:", error); console.error("Error fetching topic consumers:", error);
@@ -589,7 +589,7 @@ const remoteApi = {
getTopicConsumerGroups: async (topic) => { getTopicConsumerGroups: async (topic) => {
try { try {
const response = await remoteApi._fetch(remoteApi.buildUrl(`/topic/queryTopicConsumerInfo.query?topic=${topic}`)); const response = await remoteApi._fetch(remoteApi.buildUrl(`/topic/queryTopicConsumerInfo.query?topic=${encodeURIComponent(topic)}`));
return await response.json(); return await response.json();
} catch (error) { } catch (error) {
console.error("Error fetching consumer groups:", error); console.error("Error fetching consumer groups:", error);
@@ -599,7 +599,7 @@ const remoteApi = {
getTopicConfig: async (topic) => { getTopicConfig: async (topic) => {
try { try {
const response = await remoteApi._fetch(remoteApi.buildUrl(`/topic/examineTopicConfig.query?topic=${topic}`)); const response = await remoteApi._fetch(remoteApi.buildUrl(`/topic/examineTopicConfig.query?topic=${encodeURIComponent(topic)}`));
return await response.json(); return await response.json();
} catch (error) { } catch (error) {
console.error("Error fetching topic config:", error); console.error("Error fetching topic config:", error);

View File

@@ -448,7 +448,7 @@
<goal>npm</goal> <goal>npm</goal>
</goals> </goals>
<configuration> <configuration>
<arguments>install --legacy-peer-deps</arguments> <arguments>install</arguments>
</configuration> </configuration>
</execution> </execution>
<execution> <execution>

View File

@@ -80,7 +80,7 @@ public class MQAdminAspect {
String methodName = joinPoint.getSignature().getName(); String methodName = joinPoint.getSignature().getName();
try { try {
if (isPoolConfigIsolatedByUser(rmqConfigure.isLoginRequired(), methodName)) { if (isPoolConfigIsolatedByUser(rmqConfigure.isLoginRequired(), rmqConfigure.getAuthMode(), methodName)) {
currentUserInfo = (UserInfo) UserInfoContext.get(WebUtil.USER_NAME); currentUserInfo = (UserInfo) UserInfoContext.get(WebUtil.USER_NAME);
// 2. Borrow the user-specific MQAdminExt instance. // 2. Borrow the user-specific MQAdminExt instance.
// currentUser.getName() is assumed to be the AccessKey, and currentUser.getPassword() is SecretKey. // currentUser.getName() is assumed to be the AccessKey, and currentUser.getPassword() is SecretKey.
@@ -123,8 +123,8 @@ public class MQAdminAspect {
} }
} }
private boolean isPoolConfigIsolatedByUser(boolean loginRequired, String methodName) { private boolean isPoolConfigIsolatedByUser(boolean loginRequired, String authMode, String methodName) {
if (!loginRequired) { if (!loginRequired || authMode.equals("file")) {
return false; return false;
} else { } else {
return !METHODS_TO_CHECK.contains(methodName); return !METHODS_TO_CHECK.contains(methodName);

View File

@@ -21,11 +21,9 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import org.apache.rocketmq.client.QueryResult; import org.apache.rocketmq.client.QueryResult;
import org.apache.rocketmq.client.exception.MQBrokerException; import org.apache.rocketmq.client.exception.MQBrokerException;
import org.apache.rocketmq.client.impl.MQAdminImpl;
import org.apache.rocketmq.client.impl.MQClientAPIImpl; import org.apache.rocketmq.client.impl.MQClientAPIImpl;
import org.apache.rocketmq.client.impl.factory.MQClientInstance; import org.apache.rocketmq.client.impl.factory.MQClientInstance;
import org.apache.rocketmq.common.TopicConfig; import org.apache.rocketmq.common.TopicConfig;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.common.message.MessageExt; import org.apache.rocketmq.common.message.MessageExt;
import org.apache.rocketmq.common.message.MessageQueue; import org.apache.rocketmq.common.message.MessageQueue;
import org.apache.rocketmq.dashboard.service.client.MQAdminExtImpl; import org.apache.rocketmq.dashboard.service.client.MQAdminExtImpl;
@@ -589,26 +587,6 @@ public class MQAdminExtImplTest {
Assert.assertNotNull(result); Assert.assertNotNull(result);
} }
@Test
public void testStart() {
assertNotNull(mqAdminExtImpl);
try {
mqAdminExtImpl.start();
} catch (Exception e) {
Assert.assertTrue(e instanceof IllegalStateException);
}
}
@Test
public void testShutdown() {
assertNotNull(mqAdminExtImpl);
try {
mqAdminExtImpl.shutdown();
} catch (Exception e) {
Assert.assertTrue(e instanceof IllegalStateException);
}
}
@Test @Test
public void testQueryConsumeTimeSpan() throws Exception { public void testQueryConsumeTimeSpan() throws Exception {
assertNotNull(mqAdminExtImpl); assertNotNull(mqAdminExtImpl);
@@ -659,7 +637,7 @@ public class MQAdminExtImplTest {
{ {
when(defaultMQAdminExt.viewBrokerStatsData(anyString(), anyString(), anyString())).thenReturn(new BrokerStatsData()); when(defaultMQAdminExt.viewBrokerStatsData(anyString(), anyString(), anyString())).thenReturn(new BrokerStatsData());
} }
BrokerStatsData brokerStatsData = mqAdminExtImpl.viewBrokerStatsData(brokerAddr, BrokerStatsManager.TOPIC_PUT_NUMS, "topic_test"); BrokerStatsData brokerStatsData = mqAdminExtImpl.viewBrokerStatsData(brokerAddr, BrokerStatsManager.BROKER_ACK_NUMS, "topic_test");
Assert.assertNotNull(brokerStatsData); Assert.assertNotNull(brokerStatsData);
} }