[ISSUE #773] add useTLS configure for rocketmq console
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/aspect/admin/MQAdminAspect.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/aspect/admin/MQAdminAspect.java
index e8f2f4c..2e7e945 100644
--- a/rocketmq-console/src/main/java/org/apache/rocketmq/console/aspect/admin/MQAdminAspect.java
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/aspect/admin/MQAdminAspect.java
@@ -61,10 +61,10 @@
Method method = signature.getMethod();
MultiMQAdminCmdMethod multiMQAdminCmdMethod = method.getAnnotation(MultiMQAdminCmdMethod.class);
if (multiMQAdminCmdMethod != null && multiMQAdminCmdMethod.timeoutMillis() > 0) {
- MQAdminInstance.initMQAdminInstance(multiMQAdminCmdMethod.timeoutMillis(),rmqConfigure.getAccessKey(),rmqConfigure.getSecretKey());
+ MQAdminInstance.initMQAdminInstance(multiMQAdminCmdMethod.timeoutMillis(),rmqConfigure.getAccessKey(),rmqConfigure.getSecretKey(), rmqConfigure.isUseTLS());
}
else {
- MQAdminInstance.initMQAdminInstance(0,rmqConfigure.getAccessKey(),rmqConfigure.getSecretKey());
+ MQAdminInstance.initMQAdminInstance(0,rmqConfigure.getAccessKey(),rmqConfigure.getSecretKey(), rmqConfigure.isUseTLS());
}
obj = joinPoint.proceed();
}
@@ -74,4 +74,4 @@
}
return obj;
}
-}
\ No newline at end of file
+}
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/config/RMQConfigure.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/config/RMQConfigure.java
index 95df632..7718ffa 100644
--- a/rocketmq-console/src/main/java/org/apache/rocketmq/console/config/RMQConfigure.java
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/config/RMQConfigure.java
@@ -55,6 +55,8 @@
private String secretKey;
+ private boolean useTLS = false;
+
public String getAccessKey() {
return accessKey;
}
@@ -134,6 +136,14 @@
this.loginRequired = loginRequired;
}
+ public boolean isUseTLS() {
+ return useTLS;
+ }
+
+ public void setUseTLS(boolean useTLS) {
+ this.useTLS = useTLS;
+ }
+
// Error Page process logic, move to a central configure later
@Bean
public ErrorPageRegistrar errorPageRegistrar() {
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/OpsController.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/OpsController.java
index d82862f..f1f0852 100644
--- a/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/OpsController.java
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/controller/OpsController.java
@@ -57,4 +57,12 @@
public Object clusterStatus() {
return opsService.rocketMqStatusCheck();
}
+
+
+ @RequestMapping(value = "/updateUseTLS.do", method = RequestMethod.POST)
+ @ResponseBody
+ public Object updateUseTLS(@RequestParam String useTLS) {
+ opsService.updateUseTLS(Boolean.parseBoolean(useTLS));
+ return true;
+ }
}
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/OpsService.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/OpsService.java
index d3bd68c..1fd9eae 100644
--- a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/OpsService.java
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/OpsService.java
@@ -29,4 +29,6 @@
Map<CheckerType,Object> rocketMqStatusCheck();
boolean updateIsVIPChannel(String useVIPChannel);
+
+ boolean updateUseTLS(boolean useTLS);
}
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/client/MQAdminInstance.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/client/MQAdminInstance.java
index 3fb57d0..991931f 100644
--- a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/client/MQAdminInstance.java
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/client/MQAdminInstance.java
@@ -51,7 +51,7 @@
DefaultMQAdminExtImpl defaultMQAdminExtImpl = Reflect.on(MQAdminInstance.threadLocalMQAdminExt()).get("defaultMQAdminExtImpl");
return Reflect.on(defaultMQAdminExtImpl).get("mqClientInstance");
}
- public static void initMQAdminInstance(long timeoutMillis,String accessKey,String secretKey) throws MQClientException {
+ public static void initMQAdminInstance(long timeoutMillis,String accessKey,String secretKey, boolean useTLS) throws MQClientException {
Integer nowCount = INIT_COUNTER.get();
if (nowCount == null) {
RPCHook rpcHook = null;
@@ -66,6 +66,7 @@
else {
defaultMQAdminExt = new DefaultMQAdminExt(rpcHook);
}
+ defaultMQAdminExt.setUseTLS(useTLS);
defaultMQAdminExt.setInstanceName(Long.toString(System.currentTimeMillis()));
defaultMQAdminExt.start();
MQ_ADMIN_EXT_THREAD_LOCAL.set(defaultMQAdminExt);
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/MessageServiceImpl.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/MessageServiceImpl.java
index 00777e7..5182b0b 100644
--- a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/MessageServiceImpl.java
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/MessageServiceImpl.java
@@ -122,7 +122,7 @@
if (isEnableAcl) {
rpcHook = new AclClientRPCHook(new SessionCredentials(configure.getAccessKey(), configure.getSecretKey()));
}
- DefaultMQPullConsumer consumer = buildDefaultMQPullConsumer(rpcHook);
+ DefaultMQPullConsumer consumer = buildDefaultMQPullConsumer(rpcHook, configure.isUseTLS());
List<MessageView> messageViewList = Lists.newArrayList();
try {
String subExpression = "*";
@@ -255,7 +255,7 @@
if (isEnableAcl) {
rpcHook = new AclClientRPCHook(new SessionCredentials(configure.getAccessKey(), configure.getSecretKey()));
}
- DefaultMQPullConsumer consumer = buildDefaultMQPullConsumer(rpcHook);
+ DefaultMQPullConsumer consumer = buildDefaultMQPullConsumer(rpcHook, configure.isUseTLS());
long total = 0;
List<QueueOffsetInfo> queueOffsetInfos = new ArrayList<>();
@@ -396,7 +396,7 @@
if (isEnableAcl) {
rpcHook = new AclClientRPCHook(new SessionCredentials(configure.getAccessKey(), configure.getSecretKey()));
}
- DefaultMQPullConsumer consumer = buildDefaultMQPullConsumer(rpcHook);
+ DefaultMQPullConsumer consumer = buildDefaultMQPullConsumer(rpcHook, configure.isUseTLS());
List<MessageView> messageViews = new ArrayList<>();
long offset = query.getPageNum() * query.getPageSize();
@@ -536,7 +536,9 @@
}
}
- public DefaultMQPullConsumer buildDefaultMQPullConsumer(RPCHook rpcHook) {
- return new DefaultMQPullConsumer(MixAll.TOOLS_CONSUMER_GROUP, rpcHook);
+ public DefaultMQPullConsumer buildDefaultMQPullConsumer(RPCHook rpcHook, boolean useTLS) {
+ DefaultMQPullConsumer consumer = new DefaultMQPullConsumer(MixAll.TOOLS_CONSUMER_GROUP, rpcHook);
+ consumer.setUseTLS(useTLS);
+ return consumer;
}
}
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/OpsServiceImpl.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/OpsServiceImpl.java
index b31a869..d37fdb0 100644
--- a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/OpsServiceImpl.java
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/OpsServiceImpl.java
@@ -42,6 +42,7 @@
Map<String, Object> homePageInfoMap = Maps.newHashMap();
homePageInfoMap.put("namesvrAddrList", Splitter.on(";").splitToList(configure.getNamesrvAddr()));
homePageInfoMap.put("useVIPChannel", Boolean.valueOf(configure.getIsVIPChannel()));
+ homePageInfoMap.put("useTLS", configure.isUseTLS());
return homePageInfoMap;
}
@@ -68,4 +69,10 @@
configure.setIsVIPChannel(useVIPChannel);
return true;
}
+
+ @Override
+ public boolean updateUseTLS(boolean useTLS) {
+ configure.setUseTLS(useTLS);
+ return true;
+ }
}
diff --git a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/TopicServiceImpl.java b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/TopicServiceImpl.java
index 794e8cc..6400cfb 100644
--- a/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/TopicServiceImpl.java
+++ b/rocketmq-console/src/main/java/org/apache/rocketmq/console/service/impl/TopicServiceImpl.java
@@ -200,8 +200,10 @@
return true;
}
- public DefaultMQProducer buildDefaultMQProducer(String producerGroup, RPCHook rpcHook) {
- return new DefaultMQProducer(producerGroup, rpcHook);
+ public DefaultMQProducer buildDefaultMQProducer(String producerGroup, RPCHook rpcHook, boolean useTLS) {
+ DefaultMQProducer producer = new DefaultMQProducer(producerGroup, rpcHook);
+ producer.setUseTLS(useTLS);
+ return producer;
}
private TopicList getSystemTopicList() {
@@ -210,7 +212,7 @@
if (isEnableAcl) {
rpcHook = new AclClientRPCHook(new SessionCredentials(configure.getAccessKey(), configure.getSecretKey()));
}
- DefaultMQProducer producer = buildDefaultMQProducer(MixAll.SELF_TEST_PRODUCER_GROUP, rpcHook);
+ DefaultMQProducer producer = buildDefaultMQProducer(MixAll.SELF_TEST_PRODUCER_GROUP, rpcHook, configure.isUseTLS());
producer.setInstanceName(String.valueOf(System.currentTimeMillis()));
producer.setNamesrvAddr(configure.getNamesrvAddr());
@@ -232,9 +234,9 @@
configure.getAccessKey(),
configure.getSecretKey()
));
- producer = buildDefaultMQProducer(MixAll.SELF_TEST_PRODUCER_GROUP, rpcHook);
+ producer = buildDefaultMQProducer(MixAll.SELF_TEST_PRODUCER_GROUP, rpcHook, configure.isUseTLS());
} else {
- producer = buildDefaultMQProducer(MixAll.SELF_TEST_PRODUCER_GROUP, null);
+ producer = buildDefaultMQProducer(MixAll.SELF_TEST_PRODUCER_GROUP, null, configure.isUseTLS());
}
producer.setInstanceName(String.valueOf(System.currentTimeMillis()));
diff --git a/rocketmq-console/src/main/resources/application.properties b/rocketmq-console/src/main/resources/application.properties
index 6b1d2df..53faec2 100644
--- a/rocketmq-console/src/main/resources/application.properties
+++ b/rocketmq-console/src/main/resources/application.properties
@@ -31,4 +31,5 @@
#set the accessKey and secretKey if you used acl
#rocketmq.config.accessKey=
-#rocketmq.config.secretKey=
\ No newline at end of file
+#rocketmq.config.secretKey=
+rocketmq.config.useTLS=false
diff --git a/rocketmq-console/src/main/resources/static/src/ops.js b/rocketmq-console/src/main/resources/static/src/ops.js
index 5760f46..e4fb60c 100644
--- a/rocketmq-console/src/main/resources/static/src/ops.js
+++ b/rocketmq-console/src/main/resources/static/src/ops.js
@@ -18,13 +18,15 @@
app.controller('opsController', ['$scope','$location','$http','Notification','remoteApi','tools', function ($scope,$location,$http,Notification,remoteApi,tools) {
$scope.namesvrAddrList = "";
$scope.useVIPChannel = true;
+ $scope.useTLS = false;
$http({
method: "GET",
url: "ops/homePage.query"
}).success(function (resp) {
if (resp.status == 0) {
$scope.namesvrAddrList = resp.data.namesvrAddrList.join(";");
- $scope.useVIPChannel = resp.data.useVIPChannel
+ $scope.useVIPChannel = resp.data.useVIPChannel;
+ $scope.useTLS = resp.data.useTLS;
}else{
Notification.error({message: resp.errMsg, delay: 2000});
}
@@ -55,5 +57,18 @@
Notification.error({message: resp.errMsg, delay: 2000});
}
});
+ };
+ $scope.updateUseTLS = function () {
+ $http({
+ method: "POST",
+ url: "ops/updateUseTLS.do",
+ params:{useTLS:$scope.useTLS}
+ }).success(function (resp) {
+ if (resp.status == 0) {
+ Notification.info({message: "SUCCESS", delay: 2000});
+ }else{
+ Notification.error({message: resp.errMsg, delay: 2000});
+ }
+ });
}
}]);
diff --git a/rocketmq-console/src/main/resources/static/view/pages/ops.html b/rocketmq-console/src/main/resources/static/view/pages/ops.html
index ca2fb29..ba8c098 100644
--- a/rocketmq-console/src/main/resources/static/view/pages/ops.html
+++ b/rocketmq-console/src/main/resources/static/view/pages/ops.html
@@ -35,5 +35,18 @@
<button class="btn btn-raised btn-sm btn-primary" type="button" ng-click="updateIsVIPChannel()">{{'UPDATE' | translate}}
</button>
</div>
+
+ <br/>
+ <br/>
+ <br/>
+ <h2 class="md-title">useTLS</h2>
+ <div class="pull-left">
+ <md-switch class="md-primary" md-no-ink aria-label="Switch No Ink" ng-model="useTLS">
+ </md-switch>
+ </div>
+ <div class="pull-left">
+ <button class="btn btn-raised btn-sm btn-primary" type="button" ng-click="updateUseTLS()">{{'UPDATE' | translate}}
+ </button>
+ </div>
</div>
</div>
diff --git a/rocketmq-console/src/test/java/org/apache/rocketmq/console/controller/MessageControllerTest.java b/rocketmq-console/src/test/java/org/apache/rocketmq/console/controller/MessageControllerTest.java
index 8d3aefc..0b54754 100644
--- a/rocketmq-console/src/test/java/org/apache/rocketmq/console/controller/MessageControllerTest.java
+++ b/rocketmq-console/src/test/java/org/apache/rocketmq/console/controller/MessageControllerTest.java
@@ -50,6 +50,7 @@
import static org.hamcrest.Matchers.hasSize;
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyString;
@@ -88,7 +89,7 @@
when(pullResult.getNextBeginOffset()).thenReturn(Long.MAX_VALUE);
when(pullResult.getPullStatus()).thenReturn(PullStatus.FOUND);
when(pullResult.getMsgFoundList()).thenReturn(wrappers);
- when(messageService.buildDefaultMQPullConsumer(any())).thenReturn(defaultMQPullConsumer);
+ when(messageService.buildDefaultMQPullConsumer(any(), anyBoolean())).thenReturn(defaultMQPullConsumer);
}
}
diff --git a/rocketmq-console/src/test/java/org/apache/rocketmq/console/controller/TopicControllerTest.java b/rocketmq-console/src/test/java/org/apache/rocketmq/console/controller/TopicControllerTest.java
index 2b73201..afb0c73 100644
--- a/rocketmq-console/src/test/java/org/apache/rocketmq/console/controller/TopicControllerTest.java
+++ b/rocketmq-console/src/test/java/org/apache/rocketmq/console/controller/TopicControllerTest.java
@@ -108,7 +108,7 @@
when(defaultMQProducer.getmQClientFactory()).thenReturn(mqClientInstance);
when(mqClientInstance.getMQClientAPIImpl()).thenReturn(mqClientAPIImpl);
when(mqClientAPIImpl.getSystemTopicList(anyLong())).thenReturn(sysTopicList);
- when(topicService.buildDefaultMQProducer(anyString(), any())).thenReturn(producer);
+ when(topicService.buildDefaultMQProducer(anyString(), any(), anyBoolean())).thenReturn(producer);
}
final String url = "/topic/list.query";
@@ -246,7 +246,7 @@
SendResult result = new SendResult(SendStatus.SEND_OK, "7F000001E41A2E5D6D978B82C20F003D",
"0A8E83C300002A9F00000000000013D3", new MessageQueue(), 1000L);
when(producer.send(any(Message.class))).thenReturn(result);
- when(topicService.buildDefaultMQProducer(anyString(), any())).thenReturn(producer);
+ when(topicService.buildDefaultMQProducer(anyString(), any(), anyBoolean())).thenReturn(producer);
}
SendTopicMessageRequest request = new SendTopicMessageRequest();