From 7a963542cd2bb3e1fefb9289f80c5a0519691e84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E7=BB=AA=E5=A3=AE?= <2235602974@qq.com> Date: Fri, 15 Apr 2022 14:30:23 +0800 Subject: [PATCH] :arrow_up: up sentinel 1.8.4 --- pigx-common/pigx-common-bom/pom.xml | 36 +++++ .../pigx/common/oss/http/OssEndpoint.java | 10 +- .../dashboard/PigxSentinelApplication.java | 0 .../sentinel/dashboard/auth/AuthService.java | 2 +- .../auth/AuthorizationInterceptor.java | 50 +------ .../auth/DefaultAuthorizationInterceptor.java | 75 ++++++++++ .../DefaultLoginAuthenticationFilter.java | 131 ++++++++++++++++++ .../dashboard/auth/FakeAuthServiceImpl.java | 10 +- .../auth/LoginAuthenticationFilter.java | 99 +------------ .../auth/SimpleWebAuthServiceImpl.java | 9 +- .../dashboard/client/SentinelApiClient.java | 6 +- .../dashboard/config/AuthConfiguration.java | 59 ++++++++ .../dashboard/config/AuthProperties.java | 33 +++++ .../sentinel/dashboard/config/WebConfig.java | 0 .../dashboard/controller/AppController.java | 0 .../controller/DegradeController.java | 0 .../dashboard/controller/DemoController.java | 0 .../controller/FlowControllerV1.java | 0 .../controller/MachineRegistryController.java | 25 ++-- .../controller/MetricController.java | 0 .../controller/ParamFlowRuleController.java | 5 +- .../controller/ResourceController.java | 0 .../controller/SystemController.java | 0 .../controller/v2/FlowControllerV2.java | 5 +- .../datasource/entity/ApplicationEntity.java | 0 .../datasource/entity/MachineEntity.java | 0 .../datasource/entity/MetricEntity.java | 0 .../entity/MetricPositionEntity.java | 0 .../entity/rule/DegradeRuleEntity.java | 0 .../entity/rule/FlowRuleEntity.java | 0 .../entity/rule/ParamFlowRuleEntity.java | 2 +- .../datasource/entity/rule/RuleEntity.java | 0 .../entity/rule/SystemRuleEntity.java | 0 .../sentinel/dashboard/discovery/AppInfo.java | 0 .../dashboard/discovery/AppManagement.java | 0 .../dashboard/discovery/MachineDiscovery.java | 0 .../dashboard/discovery/MachineInfo.java | 0 .../discovery/SimpleMachineDiscovery.java | 0 .../dashboard/domain/ResourceTreeNode.java | 0 .../csp/sentinel/dashboard/domain/Result.java | 0 .../dashboard/domain/vo/MachineInfoVo.java | 0 .../dashboard/domain/vo/MetricVo.java | 0 .../dashboard/domain/vo/ResourceVo.java | 0 .../vo/gateway/api/ApiPredicateItemVo.java | 13 ++ .../dashboard/metric/MetricFetcher.java | 52 ++++--- .../rule/InMemDegradeRuleStore.java | 0 .../repository/rule/InMemFlowRuleStore.java | 0 .../repository/rule/InMemSystemRuleStore.java | 0 .../rule/InMemoryRuleRepositoryAdapter.java | 0 .../repository/rule/RuleRepository.java | 0 .../dashboard/util/ClusterEntityUtils.java | 7 +- .../src/main/webapp/resources/.gitignore | 0 .../src/main/webapp/resources/.jshintrc | 0 .../src/main/webapp/resources/README.md | 0 .../main/webapp/resources/app/scripts/app.js | 0 .../app/scripts/controllers/degrade.js | 0 .../app/scripts/controllers/flow_v1.js | 0 .../app/scripts/controllers/flow_v2.js | 0 .../resources/app/scripts/controllers/home.js | 0 .../app/scripts/controllers/identity.js | 0 .../app/scripts/controllers/machine.js | 0 .../resources/app/scripts/controllers/main.js | 0 .../app/scripts/controllers/metric.js | 0 .../app/scripts/controllers/system.js | 0 .../app/scripts/directives/header/header.html | 0 .../app/scripts/directives/header/header.js | 0 .../sidebar-search/sidebar-search.html | 0 .../sidebar/sidebar-search/sidebar-search.js | 0 .../scripts/directives/sidebar/sidebar.html | 0 .../app/scripts/directives/sidebar/sidebar.js | 0 .../resources/app/scripts/filters/filters.js | 0 .../resources/app/scripts/libs/treeTable.js | 0 .../app/scripts/services/appservice.js | 0 .../app/scripts/services/degrade_service.js | 0 .../app/scripts/services/flow_service_v1.js | 0 .../app/scripts/services/flow_service_v2.js | 0 .../app/scripts/services/identityservice.js | 0 .../app/scripts/services/machineservice.js | 0 .../app/scripts/services/metricservice.js | 0 .../app/scripts/services/systemservice.js | 0 .../main/webapp/resources/app/styles/main.css | 0 .../main/webapp/resources/app/styles/page.css | 0 .../webapp/resources/app/styles/timeline.css | 0 .../app/views/cluster_single_config.html | 0 .../resources/app/views/dashboard/home.html | 0 .../resources/app/views/dashboard/main.html | 0 .../webapp/resources/app/views/degrade.html | 0 .../cluster/cluster-client-config-dialog.html | 0 .../app/views/dialog/confirm-dialog.html | 0 .../app/views/dialog/degrade-rule-dialog.html | 0 .../app/views/dialog/flow-rule-dialog.html | 0 .../app/views/dialog/system-rule-dialog.html | 0 .../webapp/resources/app/views/flow_v1.html | 0 .../webapp/resources/app/views/flow_v2.html | 0 .../webapp/resources/app/views/identity.html | 0 .../webapp/resources/app/views/machine.html | 0 .../webapp/resources/app/views/metric.html | 0 .../resources/app/views/pagination.tpl.html | 0 .../webapp/resources/app/views/system.html | 0 .../main/webapp/resources/dist/css/app.css | 0 .../src/main/webapp/resources/dist/js/app.js | 0 .../webapp/resources/dist/js/app.vendor.js | 0 .../src/main/webapp/resources/gulpfile.js | 0 .../src/main/webapp/resources/index.htm | 2 + .../src/main/webapp/resources/index_dev.htm | 2 + .../main/webapp/resources/license-stat.csv | 0 .../src/main/webapp/resources/package.json | 0 107 files changed, 430 insertions(+), 203 deletions(-) mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/PigxSentinelApplication.java create mode 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/DefaultAuthorizationInterceptor.java create mode 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/DefaultLoginAuthenticationFilter.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/client/SentinelApiClient.java create mode 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/config/AuthConfiguration.java create mode 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/config/AuthProperties.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/config/WebConfig.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/AppController.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/DegradeController.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/DemoController.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/FlowControllerV1.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/MachineRegistryController.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/MetricController.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/ResourceController.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/SystemController.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/v2/FlowControllerV2.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/ApplicationEntity.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/MachineEntity.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/MetricEntity.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/MetricPositionEntity.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/DegradeRuleEntity.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/FlowRuleEntity.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/RuleEntity.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/SystemRuleEntity.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/AppInfo.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/AppManagement.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/MachineDiscovery.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/MachineInfo.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/SimpleMachineDiscovery.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/ResourceTreeNode.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/Result.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/vo/MachineInfoVo.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/vo/MetricVo.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/vo/ResourceVo.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/metric/MetricFetcher.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/rule/InMemDegradeRuleStore.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/rule/InMemFlowRuleStore.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/rule/InMemSystemRuleStore.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/rule/InMemoryRuleRepositoryAdapter.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/rule/RuleRepository.java mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/.gitignore mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/.jshintrc mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/README.md mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/app.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/degrade.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/flow_v1.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/flow_v2.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/home.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/identity.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/machine.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/main.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/metric.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/system.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/header/header.html mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/header/header.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/sidebar/sidebar-search/sidebar-search.html mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/sidebar/sidebar-search/sidebar-search.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/sidebar/sidebar.html mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/sidebar/sidebar.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/filters/filters.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/libs/treeTable.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/appservice.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/degrade_service.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/flow_service_v1.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/flow_service_v2.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/identityservice.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/machineservice.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/metricservice.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/systemservice.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/styles/main.css mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/styles/page.css mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/styles/timeline.css mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/cluster_single_config.html mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/dashboard/home.html mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/dashboard/main.html mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/degrade.html mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/dialog/cluster/cluster-client-config-dialog.html mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/dialog/confirm-dialog.html mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/dialog/degrade-rule-dialog.html mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/dialog/flow-rule-dialog.html mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/dialog/system-rule-dialog.html mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/flow_v1.html mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/flow_v2.html mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/identity.html mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/machine.html mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/metric.html mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/pagination.tpl.html mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/system.html mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/dist/css/app.css mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/dist/js/app.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/dist/js/app.vendor.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/gulpfile.js mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/index.htm mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/index_dev.htm mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/license-stat.csv mode change 100755 => 100644 pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/package.json diff --git a/pigx-common/pigx-common-bom/pom.xml b/pigx-common/pigx-common-bom/pom.xml index 11eafcb80..642dee022 100644 --- a/pigx-common/pigx-common-bom/pom.xml +++ b/pigx-common/pigx-common-bom/pom.xml @@ -42,6 +42,7 @@ 0.0.23 0.33.0 1.0.0 + 1.8.4 @@ -287,6 +288,41 @@ pom import + + com.alibaba.csp + sentinel-core + ${sentinel.version} + pom + import + + + com.alibaba.csp + sentinel-web-servlet + ${sentinel.version} + pom + import + + + com.alibaba.csp + sentinel-transport-simple-http + ${sentinel.version} + pom + import + + + com.alibaba.csp + sentinel-parameter-flow-control + ${sentinel.version} + pom + import + + + com.alibaba.csp + sentinel-api-gateway-adapter-common + ${sentinel.version} + pom + import + diff --git a/pigx-common/pigx-common-oss/src/main/java/com/pig4cloud/pigx/common/oss/http/OssEndpoint.java b/pigx-common/pigx-common-oss/src/main/java/com/pig4cloud/pigx/common/oss/http/OssEndpoint.java index f1e6d0b3c..8d85459e7 100755 --- a/pigx-common/pigx-common-oss/src/main/java/com/pig4cloud/pigx/common/oss/http/OssEndpoint.java +++ b/pigx-common/pigx-common-oss/src/main/java/com/pig4cloud/pigx/common/oss/http/OssEndpoint.java @@ -22,11 +22,13 @@ import com.amazonaws.services.s3.model.S3Object; import com.amazonaws.services.s3.model.S3ObjectSummary; import com.pig4cloud.pigx.common.oss.service.OssTemplate; import lombok.AllArgsConstructor; +import lombok.Cleanup; import lombok.SneakyThrows; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import java.io.InputStream; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -84,7 +86,9 @@ public class OssEndpoint { @PostMapping("/object/{bucketName}") public S3Object createObject(@RequestBody MultipartFile object, @PathVariable String bucketName) { String name = object.getOriginalFilename(); - template.putObject(bucketName, name, object.getInputStream(), object.getSize(), object.getContentType()); + @Cleanup + InputStream inputStream = object.getInputStream(); + template.putObject(bucketName, name, inputStream, object.getSize(), object.getContentType()); return template.getObjectInfo(bucketName, name); } @@ -93,7 +97,9 @@ public class OssEndpoint { @PostMapping("/object/{bucketName}/{objectName}") public S3Object createObject(@RequestBody MultipartFile object, @PathVariable String bucketName, @PathVariable String objectName) { - template.putObject(bucketName, objectName, object.getInputStream(), object.getSize(), object.getContentType()); + @Cleanup + InputStream inputStream = object.getInputStream(); + template.putObject(bucketName, objectName, inputStream, object.getSize(), object.getContentType()); return template.getObjectInfo(bucketName, objectName); } diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/PigxSentinelApplication.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/PigxSentinelApplication.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/AuthService.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/AuthService.java index 2c60d8ffa..fe7ee7f8b 100644 --- a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/AuthService.java +++ b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/AuthService.java @@ -16,7 +16,7 @@ package com.alibaba.csp.sentinel.dashboard.auth; /** - * Interface for authentication and authorization. + * Interface for authentication and authorization. 不需要改 * * @author Carpenter Lee * @since 1.5.0 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/AuthorizationInterceptor.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/AuthorizationInterceptor.java index 816f9d858..b527ce7c6 100644 --- a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/AuthorizationInterceptor.java +++ b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/AuthorizationInterceptor.java @@ -15,59 +15,15 @@ */ package com.alibaba.csp.sentinel.dashboard.auth; -import com.alibaba.csp.sentinel.dashboard.domain.Result; -import com.alibaba.fastjson.JSON; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.lang.reflect.Method; - /** - * The web interceptor for privilege-based authorization. + * The web interceptor for privilege-based authorization. 不需要改 * * @author lkxiaolou + * @author wxq * @since 1.7.1 */ -@Component -public class AuthorizationInterceptor implements HandlerInterceptor { - - @Autowired - private AuthService authService; - - @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) - throws Exception { - if (handler.getClass().isAssignableFrom(HandlerMethod.class)) { - Method method = ((HandlerMethod) handler).getMethod(); - - AuthAction authAction = method.getAnnotation(AuthAction.class); - if (authAction != null) { - AuthService.AuthUser authUser = authService.getAuthUser(request); - if (authUser == null) { - responseNoPrivilegeMsg(response, authAction.message()); - return false; - } - String target = request.getParameter(authAction.targetName()); - - if (!authUser.authTarget(target, authAction.value())) { - responseNoPrivilegeMsg(response, authAction.message()); - return false; - } - } - } - - return true; - } - - private void responseNoPrivilegeMsg(HttpServletResponse response, String message) throws IOException { - Result result = Result.ofFail(-1, message); - response.addHeader("Content-Type", "application/json;charset=UTF-8"); - response.getOutputStream().write(JSON.toJSONBytes(result)); - } +public interface AuthorizationInterceptor extends HandlerInterceptor { } diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/DefaultAuthorizationInterceptor.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/DefaultAuthorizationInterceptor.java new file mode 100644 index 000000000..56c537c03 --- /dev/null +++ b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/DefaultAuthorizationInterceptor.java @@ -0,0 +1,75 @@ +/* + * Copyright 1999-2018 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.csp.sentinel.dashboard.auth; + +import com.alibaba.csp.sentinel.dashboard.domain.Result; +import com.alibaba.fastjson.JSON; +import org.springframework.web.method.HandlerMethod; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.reflect.Method; + +/** + * The web interceptor for privilege-based authorization. 不需要 + *

+ * move from old {@link AuthorizationInterceptor}. + * + * @author lkxiaolou + * @author wxq + * @since 1.7.1 + */ +public class DefaultAuthorizationInterceptor implements AuthorizationInterceptor { + + private final AuthService authService; + + public DefaultAuthorizationInterceptor(AuthService authService) { + this.authService = authService; + } + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) + throws Exception { + if (handler.getClass().isAssignableFrom(HandlerMethod.class)) { + Method method = ((HandlerMethod) handler).getMethod(); + + AuthAction authAction = method.getAnnotation(AuthAction.class); + if (authAction != null) { + AuthService.AuthUser authUser = authService.getAuthUser(request); + if (authUser == null) { + responseNoPrivilegeMsg(response, authAction.message()); + return false; + } + String target = request.getParameter(authAction.targetName()); + + if (!authUser.authTarget(target, authAction.value())) { + responseNoPrivilegeMsg(response, authAction.message()); + return false; + } + } + } + + return true; + } + + private void responseNoPrivilegeMsg(HttpServletResponse response, String message) throws IOException { + Result result = Result.ofFail(-1, message); + response.addHeader("Content-Type", "application/json;charset=UTF-8"); + response.getOutputStream().write(JSON.toJSONBytes(result)); + } + +} diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/DefaultLoginAuthenticationFilter.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/DefaultLoginAuthenticationFilter.java new file mode 100644 index 000000000..b8a864deb --- /dev/null +++ b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/DefaultLoginAuthenticationFilter.java @@ -0,0 +1,131 @@ +/* + * Copyright 1999-2018 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.csp.sentinel.dashboard.auth; + +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; +import org.springframework.util.AntPathMatcher; + +import javax.servlet.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; + +/** + *

+ * The Servlet filter for authentication. + *

+ * + *

+ * Note: some urls are excluded as they needn't auth, such as: + *

+ * + *

+ * The excluded urls and urlSuffixes could be configured in {@code application.properties} + * file. + * + * @author cdfive 不需要 + * @since 1.6.0 + */ +public class DefaultLoginAuthenticationFilter implements LoginAuthenticationFilter { + + private static final AntPathMatcher PATH_MATCHER = new AntPathMatcher(); + + private static final String URL_SUFFIX_DOT = "."; + + /** + * 忽略鉴权的url + */ + @Value("#{'${auth.filter.exclude-urls}'.split(',')}") + private List authFilterExcludeUrls; + + /** + * 根据后缀不需要鉴权的url + */ + @Value("#{'${auth.filter.exclude-url-suffixes}'.split(',')}") + private List authFilterExcludeUrlSuffixes; + + /** + * Authentication using AuthService interface. + */ + private final AuthService authService; + + public DefaultLoginAuthenticationFilter(AuthService authService) { + this.authService = authService; + } + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) + throws IOException, ServletException { + HttpServletRequest httpRequest = (HttpServletRequest) request; + + String servletPath = httpRequest.getServletPath(); + + // Exclude the urls which needn't auth + boolean authFilterExcludeMatch = authFilterExcludeUrls.stream() + .anyMatch(authFilterExcludeUrl -> PATH_MATCHER.match(authFilterExcludeUrl, servletPath)); + if (authFilterExcludeMatch) { + chain.doFilter(request, response); + return; + } + + // Exclude the urls with suffixes which needn't auth + for (String authFilterExcludeUrlSuffix : authFilterExcludeUrlSuffixes) { + if (StringUtils.isBlank(authFilterExcludeUrlSuffix)) { + continue; + } + + // Add . for url suffix so that we needn't add . in property file + if (!authFilterExcludeUrlSuffix.startsWith(URL_SUFFIX_DOT)) { + authFilterExcludeUrlSuffix = URL_SUFFIX_DOT + authFilterExcludeUrlSuffix; + } + + if (servletPath.endsWith(authFilterExcludeUrlSuffix)) { + chain.doFilter(request, response); + return; + } + } + + AuthService.AuthUser authUser = authService.getAuthUser(httpRequest); + + HttpServletResponse httpResponse = (HttpServletResponse) response; + if (authUser == null) { + // If auth fail, set response status code to 401 + httpResponse.setStatus(HttpStatus.UNAUTHORIZED.value()); + } + else { + chain.doFilter(request, response); + } + } + + @Override + public void destroy() { + + } + +} diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/FakeAuthServiceImpl.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/FakeAuthServiceImpl.java index 979ee5659..73c568e12 100644 --- a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/FakeAuthServiceImpl.java +++ b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/FakeAuthServiceImpl.java @@ -15,7 +15,8 @@ */ package com.alibaba.csp.sentinel.dashboard.auth; -import org.springframework.stereotype.Component; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.servlet.http.HttpServletRequest; @@ -25,9 +26,14 @@ import javax.servlet.http.HttpServletRequest; * @author Carpenter Lee * @since 1.5.0 */ -@Component public class FakeAuthServiceImpl implements AuthService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + public FakeAuthServiceImpl() { + this.logger.warn("there is no auth, use {} by implementation {}", AuthService.class, this.getClass()); + } + @Override public AuthUser getAuthUser(HttpServletRequest request) { return new AuthUserImpl(); diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/LoginAuthenticationFilter.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/LoginAuthenticationFilter.java index 1b63873d5..b44f11197 100644 --- a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/LoginAuthenticationFilter.java +++ b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/LoginAuthenticationFilter.java @@ -15,18 +15,7 @@ */ package com.alibaba.csp.sentinel.dashboard.auth; -import org.apache.commons.lang.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpStatus; -import org.springframework.stereotype.Component; -import org.springframework.util.AntPathMatcher; - -import javax.servlet.*; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.List; +import javax.servlet.Filter; /** *

@@ -42,92 +31,14 @@ import java.util.List; *

  • machine registry: {@code /registry/machine}
  • *
  • static resources
  • * - * + *

    * The excluded urls and urlSuffixes could be configured in {@code application.properties} * file. * - * @author cdfive + * @author cdfive 不需要 + * @author wxq * @since 1.6.0 */ -@Component -public class LoginAuthenticationFilter implements Filter { - - private static final String URL_SUFFIX_DOT = "."; - - private static final AntPathMatcher PATH_MATCHER = new AntPathMatcher(); - - /** - * Some urls which needn't auth, such as /auth/login, /registry/machine and so on. - */ - @Value("#{'${auth.filter.exclude-urls}'.split(',')}") - private List authFilterExcludeUrls; - - /** - * Some urls with suffixes which needn't auth, such as htm, html, js and so on. - */ - @Value("#{'${auth.filter.exclude-url-suffixes}'.split(',')}") - private List authFilterExcludeUrlSuffixes; - - /** - * Authentication using AuthService interface. - */ - @Autowired - private AuthService authService; - - @Override - public void init(FilterConfig filterConfig) throws ServletException { - - } - - @Override - public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) - throws IOException, ServletException { - HttpServletRequest httpRequest = (HttpServletRequest) request; - - String servletPath = httpRequest.getServletPath(); - - // Exclude the urls which needn't auth - if (authFilterExcludeUrls.stream().anyMatch(s -> PATH_MATCHER.match(s, servletPath))) { - chain.doFilter(request, response); - return; - } - if (authFilterExcludeUrls.contains(servletPath)) { - chain.doFilter(request, response); - return; - } - - // Exclude the urls with suffixes which needn't auth - for (String authFilterExcludeUrlSuffix : authFilterExcludeUrlSuffixes) { - if (StringUtils.isBlank(authFilterExcludeUrlSuffix)) { - continue; - } - - // Add . for url suffix so that we needn't add . in property file - if (!authFilterExcludeUrlSuffix.startsWith(URL_SUFFIX_DOT)) { - authFilterExcludeUrlSuffix = URL_SUFFIX_DOT + authFilterExcludeUrlSuffix; - } - - if (servletPath.endsWith(authFilterExcludeUrlSuffix)) { - chain.doFilter(request, response); - return; - } - } - - AuthService.AuthUser authUser = authService.getAuthUser(httpRequest); - - HttpServletResponse httpResponse = (HttpServletResponse) response; - if (authUser == null) { - // If auth fail, set response status code to 401 - httpResponse.setStatus(HttpStatus.UNAUTHORIZED.value()); - } - else { - chain.doFilter(request, response); - } - } - - @Override - public void destroy() { - - } +public interface LoginAuthenticationFilter extends Filter { } diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/SimpleWebAuthServiceImpl.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/SimpleWebAuthServiceImpl.java index bf85b49e8..6bcfb3547 100644 --- a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/SimpleWebAuthServiceImpl.java +++ b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth/SimpleWebAuthServiceImpl.java @@ -15,20 +15,13 @@ */ package com.alibaba.csp.sentinel.dashboard.auth; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.context.annotation.Primary; -import org.springframework.stereotype.Component; - import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; /** - * @author cdfive + * @author cdfive 不需要 * @since 1.6.0 */ -@Component -@Primary -@ConditionalOnProperty(name = "auth.enabled", matchIfMissing = true) public class SimpleWebAuthServiceImpl implements AuthService { public static final String WEB_SESSION_KEY = "session_sentinel_admin"; diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/client/SentinelApiClient.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/client/SentinelApiClient.java old mode 100755 new mode 100644 index ac6885ae4..afeb58bb4 --- a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/client/SentinelApiClient.java +++ b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/client/SentinelApiClient.java @@ -171,8 +171,8 @@ public class SentinelApiClient { } /** - * Check wheter target instance (identified by tuple of app-ip:port) supports the form - * of "xxxxx; xx=xx" in "Content-Type" header. + * Check whether target instance (identified by tuple of app-ip:port) supports the + * form of "xxxxx; xx=xx" in "Content-Type" header. * @param app target app name * @param ip target node's address * @param port target node's port @@ -520,7 +520,7 @@ public class SentinelApiClient { AssertUtil.notEmpty(ip, "Bad machine IP"); AssertUtil.isTrue(port > 0, "Bad machine port"); return fetchItemsAsync(ip, port, GET_PARAM_RULE_PATH, null, ParamFlowRule.class) - .thenApply(rules -> rules.stream().map(e -> ParamFlowRuleEntity.fromAuthorityRule(app, ip, port, e)) + .thenApply(rules -> rules.stream().map(e -> ParamFlowRuleEntity.fromParamFlowRule(app, ip, port, e)) .collect(Collectors.toList())); } catch (Exception e) { diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/config/AuthConfiguration.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/config/AuthConfiguration.java new file mode 100644 index 000000000..63ad89a27 --- /dev/null +++ b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/config/AuthConfiguration.java @@ -0,0 +1,59 @@ +/* + * Copyright 1999-2018 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.csp.sentinel.dashboard.config; + +import com.alibaba.csp.sentinel.dashboard.auth.*; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.servlet.http.HttpServletRequest; + +@Configuration +@EnableConfigurationProperties(AuthProperties.class) +public class AuthConfiguration { + + private final AuthProperties authProperties; + + public AuthConfiguration(AuthProperties authProperties) { + this.authProperties = authProperties; + } + + @Bean + @ConditionalOnMissingBean + public AuthService httpServletRequestAuthService() { + if (this.authProperties.isEnabled()) { + return new SimpleWebAuthServiceImpl(); + } + return new FakeAuthServiceImpl(); + } + + @Bean + @ConditionalOnMissingBean + public LoginAuthenticationFilter loginAuthenticationFilter( + AuthService httpServletRequestAuthService) { + return new DefaultLoginAuthenticationFilter(httpServletRequestAuthService); + } + + @Bean + @ConditionalOnMissingBean + public AuthorizationInterceptor authorizationInterceptor( + AuthService httpServletRequestAuthService) { + return new DefaultAuthorizationInterceptor(httpServletRequestAuthService); + } + +} diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/config/AuthProperties.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/config/AuthProperties.java new file mode 100644 index 000000000..961a857cd --- /dev/null +++ b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/config/AuthProperties.java @@ -0,0 +1,33 @@ +/* + * Copyright 1999-2018 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.csp.sentinel.dashboard.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +@ConfigurationProperties(prefix = "auth") +public class AuthProperties { + + private boolean enabled = true; + + public boolean isEnabled() { + return enabled; + } + + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + +} diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/config/WebConfig.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/config/WebConfig.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/AppController.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/AppController.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/DegradeController.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/DegradeController.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/DemoController.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/DemoController.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/FlowControllerV1.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/FlowControllerV1.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/MachineRegistryController.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/MachineRegistryController.java old mode 100755 new mode 100644 index 887659bb9..c23ecf709 --- a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/MachineRegistryController.java +++ b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/MachineRegistryController.java @@ -16,7 +16,6 @@ package com.alibaba.csp.sentinel.dashboard.controller; import com.alibaba.csp.sentinel.dashboard.discovery.AppManagement; -import com.alibaba.csp.sentinel.dashboard.discovery.MachineDiscovery; import com.alibaba.csp.sentinel.dashboard.discovery.MachineInfo; import com.alibaba.csp.sentinel.dashboard.domain.Result; import com.alibaba.csp.sentinel.util.StringUtil; @@ -28,6 +27,7 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import sun.net.util.IPAddressUtil; @Controller @RequestMapping(value = "/registry", produces = MediaType.APPLICATION_JSON_VALUE) @@ -43,20 +43,27 @@ public class MachineRegistryController { public Result receiveHeartBeat(String app, @RequestParam(value = "app_type", required = false, defaultValue = "0") Integer appType, Long version, String v, String hostname, String ip, Integer port) { - if (app == null) { - app = MachineDiscovery.UNKNOWN_APP_NAME; + if (StringUtil.isBlank(app) || app.length() > 256) { + return Result.ofFail(-1, "invalid appName"); } - if (ip == null) { - return Result.ofFail(-1, "ip can't be null"); + if (StringUtil.isBlank(ip) || ip.length() > 128) { + return Result.ofFail(-1, "invalid ip: " + ip); } - if (port == null) { - return Result.ofFail(-1, "port can't be null"); + if (!IPAddressUtil.isIPv4LiteralAddress(ip) && !IPAddressUtil.isIPv6LiteralAddress(ip)) { + return Result.ofFail(-1, "invalid ip: " + ip); + } + if (port == null || port < -1) { + return Result.ofFail(-1, "invalid port"); + } + if (hostname != null && hostname.length() > 256) { + return Result.ofFail(-1, "hostname too long"); } if (port == -1) { - logger.info("Receive heartbeat from " + ip + " but port not set yet"); + logger.warn("Receive heartbeat from " + ip + " but port not set yet"); return Result.ofFail(-1, "your port not set yet"); } - String sentinelVersion = StringUtil.isEmpty(v) ? "unknown" : v; + String sentinelVersion = StringUtil.isBlank(v) ? "unknown" : v; + version = version == null ? System.currentTimeMillis() : version; try { MachineInfo machineInfo = new MachineInfo(); diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/MetricController.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/MetricController.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/ParamFlowRuleController.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/ParamFlowRuleController.java index 4134d424b..f81d64cd9 100644 --- a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/ParamFlowRuleController.java +++ b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/ParamFlowRuleController.java @@ -16,7 +16,6 @@ package com.alibaba.csp.sentinel.dashboard.controller; 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.dashboard.client.CommandNotFoundException; import com.alibaba.csp.sentinel.dashboard.client.SentinelApiClient; @@ -111,7 +110,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) { @@ -183,7 +182,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/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/ResourceController.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/ResourceController.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/SystemController.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/SystemController.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/v2/FlowControllerV2.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/v2/FlowControllerV2.java old mode 100755 new mode 100644 index c655071de..99b595bbf --- a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/v2/FlowControllerV2.java +++ b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/v2/FlowControllerV2.java @@ -16,7 +16,6 @@ package com.alibaba.csp.sentinel.dashboard.controller.v2; 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.dashboard.datasource.entity.rule.FlowRuleEntity; import com.alibaba.csp.sentinel.dashboard.domain.Result; @@ -127,7 +126,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); @@ -152,7 +151,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) { if (id == null || id <= 0) { diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/ApplicationEntity.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/ApplicationEntity.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/MachineEntity.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/MachineEntity.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/MetricEntity.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/MetricEntity.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/MetricPositionEntity.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/MetricPositionEntity.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/DegradeRuleEntity.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/DegradeRuleEntity.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/FlowRuleEntity.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/FlowRuleEntity.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/ParamFlowRuleEntity.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/ParamFlowRuleEntity.java index b5a2977d9..c90ef913c 100644 --- a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/ParamFlowRuleEntity.java +++ b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/ParamFlowRuleEntity.java @@ -38,7 +38,7 @@ public class ParamFlowRuleEntity extends AbstractRuleEntity { this.rule = rule; } - public static ParamFlowRuleEntity fromAuthorityRule(String app, String ip, Integer port, ParamFlowRule rule) { + public static ParamFlowRuleEntity fromParamFlowRule(String app, String ip, Integer port, ParamFlowRule rule) { ParamFlowRuleEntity entity = new ParamFlowRuleEntity(rule); entity.setApp(app); entity.setIp(ip); diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/RuleEntity.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/RuleEntity.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/SystemRuleEntity.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule/SystemRuleEntity.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/AppInfo.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/AppInfo.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/AppManagement.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/AppManagement.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/MachineDiscovery.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/MachineDiscovery.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/MachineInfo.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/MachineInfo.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/SimpleMachineDiscovery.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/discovery/SimpleMachineDiscovery.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/ResourceTreeNode.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/ResourceTreeNode.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/Result.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/Result.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/vo/MachineInfoVo.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/vo/MachineInfoVo.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/vo/MetricVo.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/vo/MetricVo.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/vo/ResourceVo.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/vo/ResourceVo.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/vo/gateway/api/ApiPredicateItemVo.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/vo/gateway/api/ApiPredicateItemVo.java index a11cd7c16..52300d95f 100644 --- a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/vo/gateway/api/ApiPredicateItemVo.java +++ b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain/vo/gateway/api/ApiPredicateItemVo.java @@ -23,8 +23,21 @@ 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.\ + * + *

    + */ private Integer matchStrategy; public String getPattern() { diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/metric/MetricFetcher.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/metric/MetricFetcher.java old mode 100755 new mode 100644 index 8adb23099..ec42af53b --- a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/metric/MetricFetcher.java +++ b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/metric/MetricFetcher.java @@ -84,7 +84,7 @@ public class MetricFetcher { @SuppressWarnings("PMD.ThreadPoolCreationRule") private ScheduledExecutorService fetchScheduleService = Executors.newScheduledThreadPool(1, - new NamedThreadFactory("sentinel-dashboard-metrics-fetch-task")); + new NamedThreadFactory("sentinel-dashboard-metrics-fetch-task", true)); private ExecutorService fetchService; @@ -96,11 +96,11 @@ public class MetricFetcher { int queueSize = 2048; RejectedExecutionHandler handler = new DiscardPolicy(); fetchService = new ThreadPoolExecutor(cores, cores, keepAliveTime, TimeUnit.MILLISECONDS, - new ArrayBlockingQueue<>(queueSize), new NamedThreadFactory("sentinel-dashboard-metrics-fetchService"), - handler); + new ArrayBlockingQueue<>(queueSize), + new NamedThreadFactory("sentinel-dashboard-metrics-fetchService", true), handler); fetchWorker = new ThreadPoolExecutor(cores, cores, keepAliveTime, TimeUnit.MILLISECONDS, - new ArrayBlockingQueue<>(queueSize), new NamedThreadFactory("sentinel-dashboard-metrics-fetchWorker"), - handler); + new ArrayBlockingQueue<>(queueSize), + new NamedThreadFactory("sentinel-dashboard-metrics-fetchWorker", true), handler); IOReactorConfig ioConfig = IOReactorConfig.custom().setConnectTimeout(3000).setSoTimeout(3000) .setIoThreadCount(Runtime.getRuntime().availableProcessors() * 2).build(); @@ -249,7 +249,7 @@ public class MetricFetcher { catch (Exception e) { logger.info(msg + " metric, wait http client error:", e); } - long cost = System.currentTimeMillis() - start; + // long cost = System.currentTimeMillis() - start; // logger.info("finished " + msg + " metric for " + app + ", time intervalMs [" + // startTime + ", " + endTime // + "], total machines=" + machines.size() + ", dead=" + dead + ", fetch @@ -268,7 +268,7 @@ public class MetricFetcher { lastFetchMs = lastFetchMs / 1000 * 1000; long endTime = lastFetchMs + FETCH_INTERVAL_SECOND * 1000; if (endTime > now - 1000 * 2) { - // to near + // too near return; } // update last_fetch in advance. @@ -336,26 +336,24 @@ public class MetricFetcher { * aggregation metrics by app_resource_timeSecond, ignore ip and port. */ String key = buildMetricKey(machine.getApp(), node.getResource(), node.getTimestamp()); - MetricEntity entity = map.get(key); - if (entity != null) { - entity.addPassQps(node.getPassQps()); - entity.addBlockQps(node.getBlockQps()); - entity.addRtAndSuccessQps(node.getRt(), node.getSuccessQps()); - entity.addExceptionQps(node.getExceptionQps()); - entity.addCount(1); - } - else { - entity = new MetricEntity(); - entity.setApp(machine.getApp()); - entity.setTimestamp(new Date(node.getTimestamp())); - entity.setPassQps(node.getPassQps()); - entity.setBlockQps(node.getBlockQps()); - entity.setRtAndSuccessQps(node.getRt(), node.getSuccessQps()); - entity.setExceptionQps(node.getExceptionQps()); - entity.setCount(1); - entity.setResource(node.getResource()); - map.put(key, entity); - } + + MetricEntity metricEntity = map.computeIfAbsent(key, s -> { + MetricEntity initMetricEntity = new MetricEntity(); + initMetricEntity.setApp(machine.getApp()); + initMetricEntity.setTimestamp(new Date(node.getTimestamp())); + initMetricEntity.setPassQps(0L); + initMetricEntity.setBlockQps(0L); + initMetricEntity.setRtAndSuccessQps(0, 0L); + initMetricEntity.setExceptionQps(0L); + initMetricEntity.setCount(0); + initMetricEntity.setResource(node.getResource()); + return initMetricEntity; + }); + metricEntity.addPassQps(node.getPassQps()); + metricEntity.addBlockQps(node.getBlockQps()); + metricEntity.addRtAndSuccessQps(node.getRt(), node.getSuccessQps()); + metricEntity.addExceptionQps(node.getExceptionQps()); + metricEntity.addCount(1); } catch (Exception e) { logger.warn("handleBody line exception, machine: {}, line: {}", machine.toLogString(), line); diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/rule/InMemDegradeRuleStore.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/rule/InMemDegradeRuleStore.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/rule/InMemFlowRuleStore.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/rule/InMemFlowRuleStore.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/rule/InMemSystemRuleStore.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/rule/InMemSystemRuleStore.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/rule/InMemoryRuleRepositoryAdapter.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/rule/InMemoryRuleRepositoryAdapter.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/rule/RuleRepository.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/repository/rule/RuleRepository.java old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/util/ClusterEntityUtils.java b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/util/ClusterEntityUtils.java index c43e92d63..a4cb6de12 100644 --- a/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/util/ClusterEntityUtils.java +++ b/pigx-visual/pigx-sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/util/ClusterEntityUtils.java @@ -107,7 +107,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().setBelongToApp(true) + String targetAddress = serverAddress + ":" + port; + map.computeIfAbsent(targetAddress, v -> new ClusterGroupEntity().setBelongToApp(true) .setMachineId(ip + '@' + stateVO.getCommandPort()).setIp(ip).setPort(port)); } } @@ -120,8 +121,8 @@ public final class ClusterEntityUtils { if (StringUtil.isBlank(targetServer) || targetPort == null || targetPort <= 0) { continue; } - - ClusterGroupEntity group = map.computeIfAbsent(targetServer, v -> new ClusterGroupEntity() + String targetAddress = targetServer + ":" + targetPort; + ClusterGroupEntity group = map.computeIfAbsent(targetAddress, v -> new ClusterGroupEntity() .setBelongToApp(true).setMachineId(targetServer).setIp(targetServer).setPort(targetPort)); group.getClientSet().add(ip + '@' + stateVO.getCommandPort()); } diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/.gitignore b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/.gitignore old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/.jshintrc b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/.jshintrc old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/README.md b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/README.md old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/app.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/app.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/degrade.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/degrade.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/flow_v1.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/flow_v1.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/flow_v2.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/flow_v2.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/home.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/home.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/identity.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/identity.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/machine.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/machine.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/main.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/main.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/metric.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/metric.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/system.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/system.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/header/header.html b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/header/header.html old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/header/header.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/header/header.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/sidebar/sidebar-search/sidebar-search.html b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/sidebar/sidebar-search/sidebar-search.html old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/sidebar/sidebar-search/sidebar-search.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/sidebar/sidebar-search/sidebar-search.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/sidebar/sidebar.html b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/sidebar/sidebar.html old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/sidebar/sidebar.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/sidebar/sidebar.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/filters/filters.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/filters/filters.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/libs/treeTable.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/libs/treeTable.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/appservice.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/appservice.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/degrade_service.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/degrade_service.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/flow_service_v1.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/flow_service_v1.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/flow_service_v2.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/flow_service_v2.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/identityservice.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/identityservice.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/machineservice.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/machineservice.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/metricservice.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/metricservice.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/systemservice.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/scripts/services/systemservice.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/styles/main.css b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/styles/main.css old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/styles/page.css b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/styles/page.css old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/styles/timeline.css b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/styles/timeline.css old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/cluster_single_config.html b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/cluster_single_config.html old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/dashboard/home.html b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/dashboard/home.html old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/dashboard/main.html b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/dashboard/main.html old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/degrade.html b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/degrade.html old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/dialog/cluster/cluster-client-config-dialog.html b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/dialog/cluster/cluster-client-config-dialog.html old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/dialog/confirm-dialog.html b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/dialog/confirm-dialog.html old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/dialog/degrade-rule-dialog.html b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/dialog/degrade-rule-dialog.html old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/dialog/flow-rule-dialog.html b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/dialog/flow-rule-dialog.html old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/dialog/system-rule-dialog.html b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/dialog/system-rule-dialog.html old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/flow_v1.html b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/flow_v1.html old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/flow_v2.html b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/flow_v2.html old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/identity.html b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/identity.html old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/machine.html b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/machine.html old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/metric.html b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/metric.html old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/pagination.tpl.html b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/pagination.tpl.html old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/system.html b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/app/views/system.html old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/dist/css/app.css b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/dist/css/app.css old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/dist/js/app.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/dist/js/app.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/dist/js/app.vendor.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/dist/js/app.vendor.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/gulpfile.js b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/gulpfile.js old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/index.htm b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/index.htm old mode 100755 new mode 100644 index 3c8334120..244828982 --- a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/index.htm +++ b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/index.htm @@ -10,6 +10,8 @@ + + diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/index_dev.htm b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/index_dev.htm old mode 100755 new mode 100644 index a2a85efc4..51131681a --- a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/index_dev.htm +++ b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/index_dev.htm @@ -10,6 +10,8 @@ + + diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/license-stat.csv b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/license-stat.csv old mode 100755 new mode 100644 diff --git a/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/package.json b/pigx-visual/pigx-sentinel-dashboard/src/main/webapp/resources/package.json old mode 100755 new mode 100644