package io.cattle.platform.iaas.api.filter.common;
import io.cattle.platform.util.type.Priority;
import io.github.ibuildthecloud.gdapi.request.resource.AbstractResourceManagerFilter;
import io.github.ibuildthecloud.gdapi.validation.ValidationErrorCodes;
import java.util.regex.Pattern;
public class AbstractDefaultResourceManagerFilter extends AbstractResourceManagerFilter implements Priority {
private static final Pattern DNS_NAME_PATTERN = Pattern.compile("^[a-zA-Z0-9](?!.*--)[a-zA-Z0-9-]*$");
@Override
public int getPriority() {
return Priority.DEFAULT;
}
protected void validateDNSPatternForName(String name) {
if (name != null) {
if(!DNS_NAME_PATTERN.matcher(name).matches()) {
ValidationErrorCodes.throwValidationError(ValidationErrorCodes.INVALID_CHARACTERS,
"name");
} else if (name.endsWith("-")){
ValidationErrorCodes.throwValidationError(ValidationErrorCodes.INVALID_CHARACTERS,
"name");
}
}
}
protected void validateLinkName(String linkName){
if(linkName != null && !linkName.isEmpty()){
if(linkName.startsWith(".") || linkName.endsWith(".") || linkName.contains("..")) {
ValidationErrorCodes.throwValidationError(ValidationErrorCodes.INVALID_CHARACTERS,
"name");
}
//split around a "."
String[] parts = linkName.split("\\.");
if(parts.length > 1) {
//check total length <= 253
if (linkName.length() > 253) {
ValidationErrorCodes.throwValidationError(ValidationErrorCodes.MAX_LENGTH_EXCEEDED,
"name");
}
}
for (String linkPart : parts) {
if(linkPart.startsWith("-") || linkPart.endsWith("-") || linkPart.contains("--")) {
ValidationErrorCodes.throwValidationError(ValidationErrorCodes.INVALID_CHARACTERS,
"name");
}
//check length
if (linkPart.length() < 1) {
ValidationErrorCodes.throwValidationError(ValidationErrorCodes.MIN_LENGTH_EXCEEDED,
"name");
}
if (linkPart.length() > 63) {
ValidationErrorCodes.throwValidationError(ValidationErrorCodes.MAX_LENGTH_EXCEEDED,
"name");
}
}
}
}
}