Skip to content

Commit

Permalink
Merge pull request #3511, apply #2925 to branch 2.6.x (to make telnet…
Browse files Browse the repository at this point in the history
… config work again).
  • Loading branch information
nzomkxia authored and chickenlj committed Feb 20, 2019
1 parent 54e14e9 commit 0f9cef9
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -641,6 +641,8 @@ public class Constants {

public static final String FORCE_USE_TAG = "dubbo.force.tag";

public static final String TELNET = "telnet";

/*
* private Constants(){ }
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@
package com.alibaba.dubbo.remoting.telnet.support;

import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extension.ExtensionLoader;
import com.alibaba.dubbo.common.utils.StringUtils;
import com.alibaba.dubbo.remoting.Channel;
import com.alibaba.dubbo.remoting.RemotingException;
import com.alibaba.dubbo.remoting.telnet.TelnetHandler;
Expand Down Expand Up @@ -49,14 +51,20 @@ public String telnet(Channel channel, String message) throws RemotingException {
}
if (command.length() > 0) {
if (extensionLoader.hasExtension(command)) {
try {
String result = extensionLoader.getExtension(command).telnet(channel, message);
if (result == null) {
return null;
if (commandEnabled(channel.getUrl(), command)) {
try {
String result = extensionLoader.getExtension(command).telnet(channel, message);
if (result == null) {
return null;
}
buf.append(result);
} catch (Throwable t) {
buf.append(t.getMessage());
}
buf.append(result);
} catch (Throwable t) {
buf.append(t.getMessage());
} else {
buf.append("Command: ");
buf.append(command);
buf.append(" disabled");
}
} else {
buf.append("Unsupported command: ");
Expand All @@ -72,4 +80,21 @@ public String telnet(Channel channel, String message) throws RemotingException {
return buf.toString();
}

private boolean commandEnabled(URL url, String command) {
boolean commandEnable = false;
String supportCommands = url.getParameter(Constants.TELNET);
if (StringUtils.isEmpty(supportCommands)) {
commandEnable = true;
} else {
String[] commands = Constants.COMMA_SPLIT_PATTERN.split(supportCommands);
for (String c : commands) {
if (command.equals(c)) {
commandEnable = true;
break;
}
}
}
return commandEnable;
}

}

0 comments on commit 0f9cef9

Please sign in to comment.