Skip to content

Commit

Permalink
[Improve] Refactor update setting interface
Browse files Browse the repository at this point in the history
  • Loading branch information
zzzk1 committed Feb 27, 2024
1 parent 9db8616 commit ea9c1c8
Show file tree
Hide file tree
Showing 8 changed files with 456 additions and 457 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,73 +26,74 @@

@Data
public class SettingAlertEmailConfigParams {
private Setting host;
private Setting port;
private Setting from;
private Setting username;
private Setting password;
private Setting ssl;
/* Only letters, digits, underscores, periods, and hyphens are allowed */
private static final String EMAIL_ADDRESS_REGEXP = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
/* The port value must be between 0-65535 */
private static final String PORT_REGEXP =
"^([1-9]\\d{0,3}|[1-5]\\d{4}|6[0-4]\\d{3}|65[0-4]\\d{2}|655[0-2]\\d|6553[0-5])$";
private static final String FROM_REGEXP = "";
/* Letters start with 5-16 bytes, alphanumeric underscores are allowed */
private static final String USER_NAME_REGEXP = "^[a-zA-Z][a-zA-Z0-9_]{4,15}$";
/* Letters start with 5-16 bytes, alphanumeric underscores are allowed */
private static final String PASS_WORD_REGEXP = "^[a-zA-Z][a-zA-Z0-9_]{4,15}$";
/* Whether SSL is enabled or not can only be true false */
private static final String SSL_REGEXP = "^(true|false)$";

public static boolean verifyParams(SettingAlertEmailConfigParams params) {
return params.verifyHost()
&& params.verifyPort()
&& params.verifyFrom()
&& params.verifyUserName()
&& params.verifyPassWord()
&& params.verifySSL();
}

private boolean verifyHost() {
if (Objects.isNull(getHost()) || Objects.isNull(getHost().getSettingValue())) {
return false;
}
return Pattern.matches(EMAIL_ADDRESS_REGEXP, getHost().getSettingValue());
}

private boolean verifyPort() {
if (Objects.isNull(getPort()) || Objects.isNull(getPort().getSettingValue())) {
return false;
}
return Pattern.matches(PORT_REGEXP, getPort().getSettingValue());
}

private boolean verifyFrom() {
if (Objects.isNull(getFrom()) || Objects.isNull(getFrom().getSettingValue())) {
return false;
}
return Pattern.matches(FROM_REGEXP, getFrom().getSettingValue());
}

private boolean verifyUserName() {
if (Objects.isNull(getUsername()) || Objects.isNull(getUsername().getSettingValue())) {
return false;
}
return Pattern.matches(USER_NAME_REGEXP, getUsername().getSettingValue());
}

private boolean verifyPassWord() {
if (Objects.isNull(getPassword()) || Objects.isNull(getPassword().getSettingValue())) {
return false;
}
return Pattern.matches(PASS_WORD_REGEXP, getPassword().getSettingValue());
}

private boolean verifySSL() {
if (Objects.isNull(getSsl()) || Objects.isNull(getSsl().getSettingValue())) {
return false;
}
return Pattern.matches(SSL_REGEXP, getSsl().getSettingValue());
}
private Setting host;
private Setting port;
private Setting from;
private Setting username;
private Setting password;
private Setting ssl;
/* Only letters, digits, underscores, periods, and hyphens are allowed */
private static final String EMAIL_ADDRESS_REGEXP =
"^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
/* The port value must be between 0-65535 */
private static final String PORT_REGEXP =
"^([1-9]\\d{0,3}|[1-5]\\d{4}|6[0-4]\\d{3}|65[0-4]\\d{2}|655[0-2]\\d|6553[0-5])$";
private static final String FROM_REGEXP = "";
/* Letters start with 5-16 bytes, alphanumeric underscores are allowed */
private static final String USER_NAME_REGEXP = "^[a-zA-Z][a-zA-Z0-9_]{4,15}$";
/* Letters start with 5-16 bytes, alphanumeric underscores are allowed */
private static final String PASS_WORD_REGEXP = "^[a-zA-Z][a-zA-Z0-9_]{4,15}$";
/* Whether SSL is enabled or not can only be true false */
private static final String SSL_REGEXP = "^(true|false)$";

public static boolean verifyParams(SettingAlertEmailConfigParams params) {
return params.verifyHost()
&& params.verifyPort()
&& params.verifyFrom()
&& params.verifyUserName()
&& params.verifyPassWord()
&& params.verifySSL();
}

private boolean verifyHost() {
if (Objects.isNull(getHost()) || Objects.isNull(getHost().getSettingValue())) {
return false;
}
return Pattern.matches(EMAIL_ADDRESS_REGEXP, getHost().getSettingValue());
}

private boolean verifyPort() {
if (Objects.isNull(getPort()) || Objects.isNull(getPort().getSettingValue())) {
return false;
}
return Pattern.matches(PORT_REGEXP, getPort().getSettingValue());
}

private boolean verifyFrom() {
if (Objects.isNull(getFrom()) || Objects.isNull(getFrom().getSettingValue())) {
return false;
}
return Pattern.matches(FROM_REGEXP, getFrom().getSettingValue());
}

private boolean verifyUserName() {
if (Objects.isNull(getUsername()) || Objects.isNull(getUsername().getSettingValue())) {
return false;
}
return Pattern.matches(USER_NAME_REGEXP, getUsername().getSettingValue());
}

private boolean verifyPassWord() {
if (Objects.isNull(getPassword()) || Objects.isNull(getPassword().getSettingValue())) {
return false;
}
return Pattern.matches(PASS_WORD_REGEXP, getPassword().getSettingValue());
}

private boolean verifySSL() {
if (Objects.isNull(getSsl()) || Objects.isNull(getSsl().getSettingValue())) {
return false;
}
return Pattern.matches(SSL_REGEXP, getSsl().getSettingValue());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,61 +26,61 @@

@Data
public class SettingDockerConfigParams {
private Setting username;
private Setting password;
private Setting address;
private Setting namespace;
/* Letters start with 5-16 bytes, alphanumeric underscores are allowed */
private static final String USER_NAME_REGEXP = "^[a-zA-Z][a-zA-Z0-9_]{4,15}$";
/* Letters start with 5-16 bytes, alphanumeric underscores are allowed */
private static final String PASSWORD_REGEXP = "^[a-zA-Z][a-zA-Z0-9_]{4,15}$";
/*ipv4 match rule */
private static final String IPV4_ADDRESS_REGEX =
"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$";
/*ipv6 match rule */
private static final String IPV6_ADDRESS_REGEX = "^([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4}|:)$";
/* domain match rule */
private static final String DOMAIN_NAME_REGEX =
"^((http:\\/\\/)|(https:\\/\\/))?([a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,6}(\\/)";
/* Docker namespace rules based on the format of the domain name */
private static final String NAMESPACE_REGEX = "^(?!-)[a-zA-Z0-9-]{1,253}(?<!-)$";
public static boolean verifyParams(SettingDockerConfigParams params) {
return params.verifyUserName()
&& params.verifyPassWord()
&& params.verifyAddress()
&& params.verifyNameSpace();
}
private boolean verifyUserName() {
if (Objects.isNull(getUsername()) || Objects.isNull(getUsername().getSettingValue())) {
return false;
}
return Pattern.matches(USER_NAME_REGEXP, getUsername().getSettingValue());
}
private boolean verifyPassWord() {
if (Objects.isNull(getPassword()) || Objects.isNull(getPassword().getSettingValue())) {
return false;
}
return Pattern.matches(PASSWORD_REGEXP, getPassword().getSettingValue());
}
private boolean verifyAddress() {
if (Objects.isNull(getAddress()) || Objects.isNull(getAddress().getSettingValue())) {
return false;
}
return Pattern.matches(IPV4_ADDRESS_REGEX, getAddress().getSettingValue())
|| Pattern.matches(IPV6_ADDRESS_REGEX, getAddress().getSettingValue())
|| Pattern.matches(DOMAIN_NAME_REGEX, getAddress().getSettingValue());
}
private boolean verifyNameSpace() {
if (Objects.isNull(getNamespace()) || Objects.isNull(getNamespace().getSettingValue())) {
return false;
}
return Pattern.matches(NAMESPACE_REGEX, getNamespace().getSettingValue());
}
private Setting username;
private Setting password;
private Setting address;
private Setting namespace;

/* Letters start with 5-16 bytes, alphanumeric underscores are allowed */
private static final String USER_NAME_REGEXP = "^[a-zA-Z][a-zA-Z0-9_]{4,15}$";
/* Letters start with 5-16 bytes, alphanumeric underscores are allowed */
private static final String PASSWORD_REGEXP = "^[a-zA-Z][a-zA-Z0-9_]{4,15}$";
/*ipv4 match rule */
private static final String IPV4_ADDRESS_REGEX =
"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$";
/*ipv6 match rule */
private static final String IPV6_ADDRESS_REGEX = "^([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4}|:)$";
/* domain match rule */
private static final String DOMAIN_NAME_REGEX =
"^((http:\\/\\/)|(https:\\/\\/))?([a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,6}(\\/)";
/* Docker namespace rules based on the format of the domain name */
private static final String NAMESPACE_REGEX = "^(?!-)[a-zA-Z0-9-]{1,253}(?<!-)$";

public static boolean verifyParams(SettingDockerConfigParams params) {
return params.verifyUserName()
&& params.verifyPassWord()
&& params.verifyAddress()
&& params.verifyNameSpace();
}

private boolean verifyUserName() {
if (Objects.isNull(getUsername()) || Objects.isNull(getUsername().getSettingValue())) {
return false;
}
return Pattern.matches(USER_NAME_REGEXP, getUsername().getSettingValue());
}

private boolean verifyPassWord() {
if (Objects.isNull(getPassword()) || Objects.isNull(getPassword().getSettingValue())) {
return false;
}
return Pattern.matches(PASSWORD_REGEXP, getPassword().getSettingValue());
}

private boolean verifyAddress() {
if (Objects.isNull(getAddress()) || Objects.isNull(getAddress().getSettingValue())) {
return false;
}

return Pattern.matches(IPV4_ADDRESS_REGEX, getAddress().getSettingValue())
|| Pattern.matches(IPV6_ADDRESS_REGEX, getAddress().getSettingValue())
|| Pattern.matches(DOMAIN_NAME_REGEX, getAddress().getSettingValue());
}

private boolean verifyNameSpace() {
if (Objects.isNull(getNamespace()) || Objects.isNull(getNamespace().getSettingValue())) {
return false;
}
return Pattern.matches(NAMESPACE_REGEX, getNamespace().getSettingValue());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -81,31 +81,31 @@ public RestResponse update(Setting setting) {
boolean updated = settingService.update(setting);
return RestResponse.success(updated);
}

@Operation(summary = "Update docker setting")
@PostMapping("update/docker")
@RequiresPermissions("setting:update")
public RestResponse updateDocker(@RequestBody SettingDockerConfigParams params) {
if (!SettingDockerConfigParams.verifyParams(params)) {
return RestResponse.fail("The parameter is incorrect, please check!", ResponseCode.CODE_FAIL);
}

List<Setting> settings =
Arrays.asList(
params.getAddress(), params.getNamespace(),
params.getUsername(), params.getPassword());
boolean updated = settingService.updateSettings(settings);
return RestResponse.success(updated);
}

@Operation(summary = "Update alert email")
@PostMapping("update/alert/email")
@RequiresPermissions("setting:update")
public RestResponse updateAlertEmail(@RequestBody SettingAlertEmailConfigParams params) {
if (!SettingAlertEmailConfigParams.verifyParams(params)) {
return RestResponse.fail("The parameter is incorrect, please check!", ResponseCode.CODE_FAIL);
}

List<Setting> settings =
Arrays.asList(
params.getHost(),
Expand All @@ -117,7 +117,7 @@ public RestResponse updateAlertEmail(@RequestBody SettingAlertEmailConfigParams
boolean updated = settingService.updateSettings(settings);
return RestResponse.success(updated);
}

@Operation(summary = "Check hadoop status")
@PostMapping("checkHadoop")
public RestResponse checkHadoop() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,16 +54,15 @@ public interface SettingService extends IService<Setting> {
Setting get(String key);

boolean update(Setting setting);

/**
* * Updates the specified Settings.
*
* @param settings list of setting object to update
* @return true if the update is successful, false otherwise
*/
boolean updateSettings(List<Setting> settings);



String getStreamParkAddress();

String getMavenSettings();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ public boolean update(Setting setting) {
return false;
}
}

public boolean updateSettings(List<Setting> settings) {
for (Setting each : settings) {
boolean result = update(each);
Expand All @@ -104,7 +104,7 @@ public boolean updateSettings(List<Setting> settings) {
}
return true;
}

@Override
public SenderEmail getSenderEmail() {
try {
Expand Down
Loading

0 comments on commit ea9c1c8

Please sign in to comment.