diff --git a/ruoyi-common/ruoyi-common-alibaba-bom/pom.xml b/ruoyi-common/ruoyi-common-alibaba-bom/pom.xml index d44aa4a1..797d3838 100644 --- a/ruoyi-common/ruoyi-common-alibaba-bom/pom.xml +++ b/ruoyi-common/ruoyi-common-alibaba-bom/pom.xml @@ -16,7 +16,7 @@ 2021.0.1.0 3.1.1 - 1.8.3 + 1.8.4 1.6 0.8.0 2.2.1 diff --git a/ruoyi-visual/ruoyi-sentinel-dashboard/pom.xml b/ruoyi-visual/ruoyi-sentinel-dashboard/pom.xml index bbbb7ae7..89859056 100644 --- a/ruoyi-visual/ruoyi-sentinel-dashboard/pom.xml +++ b/ruoyi-visual/ruoyi-sentinel-dashboard/pom.xml @@ -13,7 +13,7 @@ jar - 1.8.3 + 1.8.4 @ 4.0.1 @@ -93,7 +93,7 @@ com.alibaba fastjson - 1.2.75 + 1.2.80 diff --git a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/ParamFlowRuleController.java b/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/ParamFlowRuleController.java index 4039ca67..f03925ee 100644 --- a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/ParamFlowRuleController.java +++ b/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/ParamFlowRuleController.java @@ -15,39 +15,29 @@ */ package com.alibaba.csp.sentinel.dashboard.controller; -import java.util.Date; -import java.util.List; -import java.util.Optional; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; - import com.alibaba.csp.sentinel.dashboard.auth.AuthAction; +import com.alibaba.csp.sentinel.dashboard.auth.AuthService.PrivilegeType; import com.alibaba.csp.sentinel.dashboard.client.CommandNotFoundException; import com.alibaba.csp.sentinel.dashboard.client.SentinelApiClient; -import com.alibaba.csp.sentinel.dashboard.discovery.AppManagement; -import com.alibaba.csp.sentinel.dashboard.discovery.MachineInfo; -import com.alibaba.csp.sentinel.dashboard.auth.AuthService; -import com.alibaba.csp.sentinel.dashboard.auth.AuthService.PrivilegeType; -import com.alibaba.csp.sentinel.slots.block.RuleConstant; -import com.alibaba.csp.sentinel.util.StringUtil; import com.alibaba.csp.sentinel.dashboard.datasource.entity.SentinelVersion; import com.alibaba.csp.sentinel.dashboard.datasource.entity.rule.ParamFlowRuleEntity; +import com.alibaba.csp.sentinel.dashboard.discovery.AppManagement; +import com.alibaba.csp.sentinel.dashboard.discovery.MachineInfo; import com.alibaba.csp.sentinel.dashboard.domain.Result; import com.alibaba.csp.sentinel.dashboard.repository.rule.RuleRepository; import com.alibaba.csp.sentinel.dashboard.util.VersionUtils; - +import com.alibaba.csp.sentinel.slots.block.RuleConstant; +import com.alibaba.csp.sentinel.util.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; +import java.util.Optional; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; /** * @author Eric Zhao @@ -119,7 +109,7 @@ public class ParamFlowRuleController { } @PostMapping("/rule") - @AuthAction(AuthService.PrivilegeType.WRITE_RULE) + @AuthAction(PrivilegeType.WRITE_RULE) public Result apiAddParamFlowRule(@RequestBody ParamFlowRuleEntity entity) { Result checkResult = checkEntityInternal(entity); if (checkResult != null) { @@ -188,7 +178,7 @@ public class ParamFlowRuleController { } @PutMapping("/rule/{id}") - @AuthAction(AuthService.PrivilegeType.WRITE_RULE) + @AuthAction(PrivilegeType.WRITE_RULE) public Result apiUpdateParamFlowRule(@PathVariable("id") Long id, @RequestBody ParamFlowRuleEntity entity) { if (id == null || id <= 0) { diff --git a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/v2/FlowControllerV2.java b/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/v2/FlowControllerV2.java index 96bea1d7..2ab097a8 100644 --- a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/v2/FlowControllerV2.java +++ b/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/v2/FlowControllerV2.java @@ -15,33 +15,22 @@ */ package com.alibaba.csp.sentinel.dashboard.controller.v2; -import java.util.Date; -import java.util.List; - import com.alibaba.csp.sentinel.dashboard.auth.AuthAction; -import com.alibaba.csp.sentinel.dashboard.auth.AuthService; import com.alibaba.csp.sentinel.dashboard.auth.AuthService.PrivilegeType; -import com.alibaba.csp.sentinel.util.StringUtil; - import com.alibaba.csp.sentinel.dashboard.datasource.entity.rule.FlowRuleEntity; +import com.alibaba.csp.sentinel.dashboard.domain.Result; import com.alibaba.csp.sentinel.dashboard.repository.rule.InMemoryRuleRepositoryAdapter; import com.alibaba.csp.sentinel.dashboard.rule.DynamicRuleProvider; import com.alibaba.csp.sentinel.dashboard.rule.DynamicRulePublisher; -import com.alibaba.csp.sentinel.dashboard.domain.Result; - +import com.alibaba.csp.sentinel.util.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; /** * Flow rule controller (v2). @@ -135,7 +124,7 @@ public class FlowControllerV2 { } @PostMapping("/rule") - @AuthAction(value = AuthService.PrivilegeType.WRITE_RULE) + @AuthAction(value = PrivilegeType.WRITE_RULE) public Result apiAddFlowRule(@RequestBody FlowRuleEntity entity) { Result checkResult = checkEntityInternal(entity); @@ -159,7 +148,7 @@ public class FlowControllerV2 { } @PutMapping("/rule/{id}") - @AuthAction(AuthService.PrivilegeType.WRITE_RULE) + @AuthAction(PrivilegeType.WRITE_RULE) public Result apiUpdateFlowRule(@PathVariable("id") Long id, @RequestBody FlowRuleEntity entity) { diff --git a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/vo/gateway/api/ApiPredicateItemVo.java b/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/vo/gateway/api/ApiPredicateItemVo.java index d621ddf5..3fd87883 100644 --- a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/vo/gateway/api/ApiPredicateItemVo.java +++ b/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/vo/gateway/api/ApiPredicateItemVo.java @@ -23,8 +23,20 @@ package com.alibaba.csp.sentinel.dashboard.domain.vo.gateway.api; */ public class ApiPredicateItemVo { + /** + * The pattern for matching url. + */ private String pattern; + /** + * The matching Strategy in url. Constants are defined in class SentinelGatewayConstants.\ + * + *
    + *
  • 0(URL_MATCH_STRATEGY_EXACT): exact match mode
  • + *
  • 1(URL_MATCH_STRATEGY_PREFIX): prefix match mode
  • + *
  • 2(URL_MATCH_STRATEGY_REGEX): regex match mode
  • + *
+ */ private Integer matchStrategy; public String getPattern() { diff --git a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/util/ClusterEntityUtils.java b/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/util/ClusterEntityUtils.java index ced801fa..646cf94d 100644 --- a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/util/ClusterEntityUtils.java +++ b/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/util/ClusterEntityUtils.java @@ -15,23 +15,13 @@ */ package com.alibaba.csp.sentinel.dashboard.util; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - import com.alibaba.csp.sentinel.cluster.ClusterStateManager; -import com.alibaba.csp.sentinel.util.StringUtil; - import com.alibaba.csp.sentinel.dashboard.domain.cluster.ClusterGroupEntity; import com.alibaba.csp.sentinel.dashboard.domain.cluster.ConnectionGroupVO; -import com.alibaba.csp.sentinel.dashboard.domain.cluster.state.AppClusterClientStateWrapVO; -import com.alibaba.csp.sentinel.dashboard.domain.cluster.state.AppClusterServerStateWrapVO; -import com.alibaba.csp.sentinel.dashboard.domain.cluster.state.ClusterClientStateVO; -import com.alibaba.csp.sentinel.dashboard.domain.cluster.state.ClusterServerStateVO; -import com.alibaba.csp.sentinel.dashboard.domain.cluster.state.ClusterUniversalStatePairVO; +import com.alibaba.csp.sentinel.dashboard.domain.cluster.state.*; +import com.alibaba.csp.sentinel.util.StringUtil; + +import java.util.*; /** * @author Eric Zhao @@ -130,7 +120,8 @@ public final class ClusterEntityUtils { if (mode == ClusterStateManager.CLUSTER_SERVER) { String serverAddress = getIp(ip); int port = stateVO.getState().getServer().getPort(); - map.computeIfAbsent(serverAddress, v -> new ClusterGroupEntity() + String targetAddress = serverAddress + ":" + port; + map.computeIfAbsent(targetAddress, v -> new ClusterGroupEntity() .setBelongToApp(true).setMachineId(ip + '@' + stateVO.getCommandPort()) .setIp(ip).setPort(port) ); @@ -145,8 +136,8 @@ public final class ClusterEntityUtils { if (StringUtil.isBlank(targetServer) || targetPort == null || targetPort <= 0) { continue; } - - ClusterGroupEntity group = map.computeIfAbsent(targetServer, + String targetAddress = targetServer + ":" + targetPort; + ClusterGroupEntity group = map.computeIfAbsent(targetAddress, v -> new ClusterGroupEntity() .setBelongToApp(true).setMachineId(targetServer) .setIp(targetServer).setPort(targetPort) diff --git a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/degrade_service.js b/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/degrade_service.js index a242b22a..8b6e7e04 100644 --- a/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/degrade_service.js +++ b/ruoyi-visual/ruoyi-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/degrade_service.js @@ -74,7 +74,7 @@ app.service('DegradeService', ['$http', function ($http) { return false; } if (rule.statIntervalMs !== undefined && rule.statIntervalMs > 60 * 1000 * 2) { - alert('统计窗口时长不能超过 120 分钟'); + alert('统计窗口时长最大 120s'); return false; } // 异常比率类型.