Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,8 @@ public class ProxyConfig implements ConfigFile {

private boolean enableBatchAck = false;

private boolean enableControlCharacterCheck = true;

@Override
public void initData() {
parseDelayLevel();
Expand Down Expand Up @@ -1537,4 +1539,12 @@ public boolean isEnableMessageBodyEmptyCheck() {
public void setEnableMessageBodyEmptyCheck(boolean enableMessageBodyEmptyCheck) {
this.enableMessageBodyEmptyCheck = enableMessageBodyEmptyCheck;
}

public boolean isEnableControlCharacterCheck() {
return enableControlCharacterCheck;
}

public void setEnableControlCharacterCheck(boolean enableControlCharacterCheck) {
this.enableControlCharacterCheck = enableControlCharacterCheck;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ public void validateTag(String tag) {
if (tag.contains("|")) {
throw new GrpcProxyException(Code.ILLEGAL_MESSAGE_TAG, "tag cannot contain '|'");
}
if (containControlCharacter(tag)) {
if (ConfigurationManager.getProxyConfig().isEnableControlCharacterCheck() && containControlCharacter(tag)) {
throw new GrpcProxyException(Code.ILLEGAL_MESSAGE_TAG, "tag cannot contain control character");
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ protected void validateMessageKey(String key) {
if (StringUtils.isBlank(key)) {
throw new GrpcProxyException(Code.ILLEGAL_MESSAGE_KEY, "key cannot be the char sequence of whitespace");
}
if (GrpcValidator.getInstance().containControlCharacter(key)) {
if (ConfigurationManager.getProxyConfig().isEnableControlCharacterCheck() && GrpcValidator.getInstance().containControlCharacter(key)) {
throw new GrpcProxyException(Code.ILLEGAL_MESSAGE_KEY, "key cannot contain control character");
}
}
Expand All @@ -169,7 +169,7 @@ protected void validateMessageGroup(String messageGroup) {
if (messageGroup.getBytes(StandardCharsets.UTF_8).length >= maxSize) {
throw new GrpcProxyException(Code.ILLEGAL_MESSAGE_GROUP, "message group exceed the max size " + maxSize);
}
if (GrpcValidator.getInstance().containControlCharacter(messageGroup)) {
if (ConfigurationManager.getProxyConfig().isEnableControlCharacterCheck() && GrpcValidator.getInstance().containControlCharacter(messageGroup)) {
throw new GrpcProxyException(Code.ILLEGAL_MESSAGE_GROUP, "message group cannot contain control character");
}
}
Expand Down Expand Up @@ -208,10 +208,10 @@ protected Map<String, String> buildMessageProperty(ProxyContext context, apache.
if (MessageConst.STRING_HASH_SET.contains(userPropertiesEntry.getKey())) {
throw new GrpcProxyException(Code.ILLEGAL_MESSAGE_PROPERTY_KEY, "property is used by system: " + userPropertiesEntry.getKey());
}
if (GrpcValidator.getInstance().containControlCharacter(userPropertiesEntry.getKey())) {
if (ConfigurationManager.getProxyConfig().isEnableControlCharacterCheck() && GrpcValidator.getInstance().containControlCharacter(userPropertiesEntry.getKey())) {
throw new GrpcProxyException(Code.ILLEGAL_MESSAGE_PROPERTY_KEY, "the key of property cannot contain control character");
}
if (GrpcValidator.getInstance().containControlCharacter(userPropertiesEntry.getValue())) {
if (ConfigurationManager.getProxyConfig().isEnableControlCharacterCheck() && GrpcValidator.getInstance().containControlCharacter(userPropertiesEntry.getValue())) {
throw new GrpcProxyException(Code.ILLEGAL_MESSAGE_PROPERTY_KEY, "the value of property cannot contain control character");
}
userPropertySize += userPropertiesEntry.getKey().getBytes(StandardCharsets.UTF_8).length;
Expand Down