From a91a3805bc9e70843807517240a5fff5ce807d70 Mon Sep 17 00:00:00 2001 From: DerekYRC <44155264+DerekYRC@users.noreply.github.com> Date: Wed, 3 Aug 2022 10:07:44 +0800 Subject: [PATCH 1/5] Support ribbon service-level rule customization (#478) Co-authored-by: lepdou --- CHANGELOG.md | 1 + .../PolarisLoadBalancerCompositeRule.java | 19 ++- ...alancerCompositeRuleBeanPostProcessor.java | 65 ++++++++ .../router/config/RibbonConfiguration.java | 18 +-- .../PolarisLoadBalancerCompositeRuleTest.java | 27 ++-- ...cerCompositeRuleBeanPostProcessorTest.java | 148 ++++++++++++++++++ 6 files changed, 245 insertions(+), 33 deletions(-) create mode 100644 spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/beanprocessor/PolarisLoadBalancerCompositeRuleBeanPostProcessor.java create mode 100644 spring-cloud-starter-tencent-polaris-router/src/test/java/com/tencent/cloud/polaris/router/beanprocessor/PolarisLoadBalancerCompositeRuleBeanPostProcessorTest.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c78a5f6a..932585e9d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ # Change Log --- +- [Feature: support ribbon service-level rule customization](https://github.com/Tencent/spring-cloud-tencent/pull/478) - [Feature: delete implement ServiceInstance](https://github.com/Tencent/spring-cloud-tencent/pull/481) \ No newline at end of file diff --git a/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/PolarisLoadBalancerCompositeRule.java b/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/PolarisLoadBalancerCompositeRule.java index 752ccce00..eeb84afd3 100644 --- a/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/PolarisLoadBalancerCompositeRule.java +++ b/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/PolarisLoadBalancerCompositeRule.java @@ -85,14 +85,21 @@ public class PolarisLoadBalancerCompositeRule extends AbstractLoadBalancerRule { PolarisLoadBalancerProperties polarisLoadBalancerProperties, IClientConfig iClientConfig, List requestInterceptors, - List responseInterceptors) { + List responseInterceptors, + AbstractLoadBalancerRule delegate) { this.routerAPI = routerAPI; this.loadBalancerProperties = polarisLoadBalancerProperties; this.requestInterceptors = requestInterceptors; this.responseInterceptors = responseInterceptors; - delegateRule = getRule(); - delegateRule.initWithNiwsConfig(iClientConfig); + AbstractLoadBalancerRule loadBalancerRule = getRule(); + if (loadBalancerRule != null) { + delegateRule = loadBalancerRule; + delegateRule.initWithNiwsConfig(iClientConfig); + } + else { + delegateRule = delegate; + } } @Override @@ -176,7 +183,7 @@ public class PolarisLoadBalancerCompositeRule extends AbstractLoadBalancerRule { public AbstractLoadBalancerRule getRule() { String loadBalanceStrategy = loadBalancerProperties.getStrategy(); if (StringUtils.isEmpty(loadBalanceStrategy)) { - return new ZoneAvoidanceRule(); + return null; } switch (loadBalanceStrategy) { case STRATEGY_RANDOM: @@ -198,4 +205,8 @@ public class PolarisLoadBalancerCompositeRule extends AbstractLoadBalancerRule { return new ZoneAvoidanceRule(); } } + + public AbstractLoadBalancerRule getDelegateRule() { + return delegateRule; + } } diff --git a/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/beanprocessor/PolarisLoadBalancerCompositeRuleBeanPostProcessor.java b/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/beanprocessor/PolarisLoadBalancerCompositeRuleBeanPostProcessor.java new file mode 100644 index 000000000..b6092be3c --- /dev/null +++ b/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/beanprocessor/PolarisLoadBalancerCompositeRuleBeanPostProcessor.java @@ -0,0 +1,65 @@ +/* + * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * + * Licensed under the BSD 3-Clause License (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://opensource.org/licenses/BSD-3-Clause + * + * 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.tencent.cloud.polaris.router.beanprocessor; + +import java.util.List; + +import com.netflix.client.config.IClientConfig; +import com.netflix.loadbalancer.AbstractLoadBalancerRule; +import com.tencent.cloud.common.util.BeanFactoryUtils; +import com.tencent.cloud.polaris.loadbalancer.config.PolarisLoadBalancerProperties; +import com.tencent.cloud.polaris.router.PolarisLoadBalancerCompositeRule; +import com.tencent.cloud.polaris.router.spi.RouterRequestInterceptor; +import com.tencent.cloud.polaris.router.spi.RouterResponseInterceptor; +import com.tencent.polaris.router.api.core.RouterAPI; + +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.BeanFactoryAware; +import org.springframework.beans.factory.config.BeanPostProcessor; + +/** + * Decorate IRule with PolarisLoadBalancerCompositeRule. + * + * @author derekyi 2022-08-01 + */ +public class PolarisLoadBalancerCompositeRuleBeanPostProcessor implements BeanPostProcessor, BeanFactoryAware { + + private BeanFactory beanFactory; + + @Override + public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { + if (bean instanceof AbstractLoadBalancerRule) { + RouterAPI routerAPI = beanFactory.getBean(RouterAPI.class); + PolarisLoadBalancerProperties polarisLoadBalancerProperties = beanFactory.getBean(PolarisLoadBalancerProperties.class); + IClientConfig iClientConfig = beanFactory.getBean(IClientConfig.class); + List requestInterceptors = BeanFactoryUtils.getBeans(beanFactory, RouterRequestInterceptor.class); + List responseInterceptors = BeanFactoryUtils.getBeans(beanFactory, RouterResponseInterceptor.class); + return new PolarisLoadBalancerCompositeRule(routerAPI, polarisLoadBalancerProperties, iClientConfig, + requestInterceptors, responseInterceptors, ((AbstractLoadBalancerRule) bean)); + } + + return bean; + } + + @Override + public void setBeanFactory(BeanFactory beanFactory) throws BeansException { + this.beanFactory = beanFactory; + } +} diff --git a/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/config/RibbonConfiguration.java b/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/config/RibbonConfiguration.java index 79cc513ee..a22aea047 100644 --- a/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/config/RibbonConfiguration.java +++ b/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/config/RibbonConfiguration.java @@ -18,15 +18,7 @@ package com.tencent.cloud.polaris.router.config; -import java.util.List; - -import com.netflix.client.config.IClientConfig; -import com.netflix.loadbalancer.IRule; -import com.tencent.cloud.polaris.loadbalancer.config.PolarisLoadBalancerProperties; -import com.tencent.cloud.polaris.router.PolarisLoadBalancerCompositeRule; -import com.tencent.cloud.polaris.router.spi.RouterRequestInterceptor; -import com.tencent.cloud.polaris.router.spi.RouterResponseInterceptor; -import com.tencent.polaris.router.api.core.RouterAPI; +import com.tencent.cloud.polaris.router.beanprocessor.PolarisLoadBalancerCompositeRuleBeanPostProcessor; import org.springframework.context.annotation.Bean; @@ -38,11 +30,7 @@ import org.springframework.context.annotation.Bean; public class RibbonConfiguration { @Bean - public IRule polarisLoadBalancerCompositeRule(RouterAPI routerAPI, - PolarisLoadBalancerProperties polarisLoadBalancerProperties, - IClientConfig iClientConfig, List requestInterceptors, - List responseInterceptors) { - return new PolarisLoadBalancerCompositeRule(routerAPI, polarisLoadBalancerProperties, iClientConfig, - requestInterceptors, responseInterceptors); + public PolarisLoadBalancerCompositeRuleBeanPostProcessor polarisLoadBalancerCompositeRuleBeanPostProcessor() { + return new PolarisLoadBalancerCompositeRuleBeanPostProcessor(); } } diff --git a/spring-cloud-starter-tencent-polaris-router/src/test/java/com/tencent/cloud/polaris/router/PolarisLoadBalancerCompositeRuleTest.java b/spring-cloud-starter-tencent-polaris-router/src/test/java/com/tencent/cloud/polaris/router/PolarisLoadBalancerCompositeRuleTest.java index 19cde939e..bfe70fdff 100644 --- a/spring-cloud-starter-tencent-polaris-router/src/test/java/com/tencent/cloud/polaris/router/PolarisLoadBalancerCompositeRuleTest.java +++ b/spring-cloud-starter-tencent-polaris-router/src/test/java/com/tencent/cloud/polaris/router/PolarisLoadBalancerCompositeRuleTest.java @@ -35,7 +35,6 @@ import com.netflix.loadbalancer.RetryRule; import com.netflix.loadbalancer.RoundRobinRule; import com.netflix.loadbalancer.Server; import com.netflix.loadbalancer.WeightedResponseTimeRule; -import com.netflix.loadbalancer.ZoneAvoidanceRule; import com.tencent.cloud.common.metadata.MetadataContext; import com.tencent.cloud.common.metadata.MetadataContextHolder; import com.tencent.cloud.common.pojo.PolarisServer; @@ -113,18 +112,18 @@ public class PolarisLoadBalancerCompositeRuleTest { public void testGetDefaultLB() { when(polarisLoadBalancerProperties.getStrategy()).thenReturn(""); PolarisLoadBalancerCompositeRule compositeRule = new PolarisLoadBalancerCompositeRule(routerAPI, - polarisLoadBalancerProperties, config, requestInterceptors, null); + polarisLoadBalancerProperties, config, requestInterceptors, null, null); AbstractLoadBalancerRule defaultRule = compositeRule.getRule(); - Assert.assertTrue(defaultRule instanceof ZoneAvoidanceRule); + Assert.assertNull(defaultRule); } @Test public void testRandomLB() { when(polarisLoadBalancerProperties.getStrategy()).thenReturn(PolarisLoadBalancerCompositeRule.STRATEGY_RANDOM); PolarisLoadBalancerCompositeRule compositeRule = new PolarisLoadBalancerCompositeRule(routerAPI, - polarisLoadBalancerProperties, config, requestInterceptors, null); + polarisLoadBalancerProperties, config, requestInterceptors, null, null); AbstractLoadBalancerRule lbRule = compositeRule.getRule(); @@ -135,7 +134,7 @@ public class PolarisLoadBalancerCompositeRuleTest { public void testWeightLB() { when(polarisLoadBalancerProperties.getStrategy()).thenReturn(PolarisLoadBalancerCompositeRule.STRATEGY_WEIGHT); PolarisLoadBalancerCompositeRule compositeRule = new PolarisLoadBalancerCompositeRule(routerAPI, - polarisLoadBalancerProperties, config, requestInterceptors, null); + polarisLoadBalancerProperties, config, requestInterceptors, null, null); AbstractLoadBalancerRule lbRule = compositeRule.getRule(); @@ -146,7 +145,7 @@ public class PolarisLoadBalancerCompositeRuleTest { public void testRetryLB() { when(polarisLoadBalancerProperties.getStrategy()).thenReturn(PolarisLoadBalancerCompositeRule.STRATEGY_RETRY); PolarisLoadBalancerCompositeRule compositeRule = new PolarisLoadBalancerCompositeRule(routerAPI, - polarisLoadBalancerProperties, config, requestInterceptors, null); + polarisLoadBalancerProperties, config, requestInterceptors, null, null); AbstractLoadBalancerRule lbRule = compositeRule.getRule(); @@ -157,7 +156,7 @@ public class PolarisLoadBalancerCompositeRuleTest { public void testWeightedResponseTimeLB() { when(polarisLoadBalancerProperties.getStrategy()).thenReturn(PolarisLoadBalancerCompositeRule.STRATEGY_RESPONSE_TIME_WEIGHTED); PolarisLoadBalancerCompositeRule compositeRule = new PolarisLoadBalancerCompositeRule(routerAPI, - polarisLoadBalancerProperties, config, requestInterceptors, null); + polarisLoadBalancerProperties, config, requestInterceptors, null, null); AbstractLoadBalancerRule lbRule = compositeRule.getRule(); @@ -168,7 +167,7 @@ public class PolarisLoadBalancerCompositeRuleTest { public void tesBestAvailableLB() { when(polarisLoadBalancerProperties.getStrategy()).thenReturn(PolarisLoadBalancerCompositeRule.STRATEGY_BEST_AVAILABLE); PolarisLoadBalancerCompositeRule compositeRule = new PolarisLoadBalancerCompositeRule(routerAPI, - polarisLoadBalancerProperties, config, requestInterceptors, null); + polarisLoadBalancerProperties, config, requestInterceptors, null, null); AbstractLoadBalancerRule lbRule = compositeRule.getRule(); @@ -179,7 +178,7 @@ public class PolarisLoadBalancerCompositeRuleTest { public void tesRoundRobinLB() { when(polarisLoadBalancerProperties.getStrategy()).thenReturn(PolarisLoadBalancerCompositeRule.STRATEGY_ROUND_ROBIN); PolarisLoadBalancerCompositeRule compositeRule = new PolarisLoadBalancerCompositeRule(routerAPI, - polarisLoadBalancerProperties, config, requestInterceptors, null); + polarisLoadBalancerProperties, config, requestInterceptors, null, null); AbstractLoadBalancerRule lbRule = compositeRule.getRule(); @@ -190,7 +189,7 @@ public class PolarisLoadBalancerCompositeRuleTest { public void testAvailabilityFilteringLB() { when(polarisLoadBalancerProperties.getStrategy()).thenReturn(PolarisLoadBalancerCompositeRule.STRATEGY_AVAILABILITY_FILTERING); PolarisLoadBalancerCompositeRule compositeRule = new PolarisLoadBalancerCompositeRule(routerAPI, - polarisLoadBalancerProperties, config, requestInterceptors, null); + polarisLoadBalancerProperties, config, requestInterceptors, null, null); AbstractLoadBalancerRule lbRule = compositeRule.getRule(); @@ -209,7 +208,7 @@ public class PolarisLoadBalancerCompositeRuleTest { setTransitiveMetadata(); PolarisLoadBalancerCompositeRule compositeRule = new PolarisLoadBalancerCompositeRule(routerAPI, - polarisLoadBalancerProperties, config, requestInterceptors, null); + polarisLoadBalancerProperties, config, requestInterceptors, null, null); ServiceInstances serviceInstances = assembleServiceInstances(); PolarisRouterContext routerContext = assembleRouterContext(); @@ -244,7 +243,7 @@ public class PolarisLoadBalancerCompositeRuleTest { setTransitiveMetadata(); PolarisLoadBalancerCompositeRule compositeRule = new PolarisLoadBalancerCompositeRule(routerAPI, - polarisLoadBalancerProperties, config, requestInterceptors, null); + polarisLoadBalancerProperties, config, requestInterceptors, null, null); ServiceInstances serviceInstances = assembleServiceInstances(); PolarisRouterContext routerContext = assembleRouterContext(); @@ -275,7 +274,7 @@ public class PolarisLoadBalancerCompositeRuleTest { setTransitiveMetadata(); PolarisLoadBalancerCompositeRule compositeRule = new PolarisLoadBalancerCompositeRule(routerAPI, - polarisLoadBalancerProperties, config, requestInterceptors, null); + polarisLoadBalancerProperties, config, requestInterceptors, null, null); ServiceInstances serviceInstances = assembleServiceInstances(); PolarisRouterContext routerContext = assembleRouterContext(); @@ -306,7 +305,7 @@ public class PolarisLoadBalancerCompositeRuleTest { setTransitiveMetadata(); PolarisLoadBalancerCompositeRule compositeRule = new PolarisLoadBalancerCompositeRule(routerAPI, - polarisLoadBalancerProperties, config, requestInterceptors, null); + polarisLoadBalancerProperties, config, requestInterceptors, null, null); ProcessRoutersResponse assembleResponse = assembleProcessRoutersResponse(); when(routerAPI.processRouters(any())).thenReturn(assembleResponse); diff --git a/spring-cloud-starter-tencent-polaris-router/src/test/java/com/tencent/cloud/polaris/router/beanprocessor/PolarisLoadBalancerCompositeRuleBeanPostProcessorTest.java b/spring-cloud-starter-tencent-polaris-router/src/test/java/com/tencent/cloud/polaris/router/beanprocessor/PolarisLoadBalancerCompositeRuleBeanPostProcessorTest.java new file mode 100644 index 000000000..5765ad7ec --- /dev/null +++ b/spring-cloud-starter-tencent-polaris-router/src/test/java/com/tencent/cloud/polaris/router/beanprocessor/PolarisLoadBalancerCompositeRuleBeanPostProcessorTest.java @@ -0,0 +1,148 @@ +package com.tencent.cloud.polaris.router.beanprocessor; + +import com.netflix.loadbalancer.AbstractLoadBalancerRule; +import com.netflix.loadbalancer.BestAvailableRule; +import com.netflix.loadbalancer.IRule; +import com.netflix.loadbalancer.RandomRule; +import com.netflix.loadbalancer.RoundRobinRule; +import com.netflix.loadbalancer.ZoneAvoidanceRule; +import com.tencent.cloud.polaris.loadbalancer.config.PolarisLoadBalancerProperties; +import com.tencent.cloud.polaris.router.PolarisLoadBalancerCompositeRule; +import com.tencent.cloud.polaris.router.config.RibbonConfiguration; +import com.tencent.polaris.client.api.SDKContext; +import com.tencent.polaris.router.api.core.RouterAPI; +import com.tencent.polaris.router.client.api.DefaultRouterAPI; +import org.junit.Assert; +import org.junit.Test; + +import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.cloud.netflix.ribbon.RibbonAutoConfiguration; +import org.springframework.cloud.netflix.ribbon.RibbonClient; +import org.springframework.cloud.netflix.ribbon.RibbonClients; +import org.springframework.cloud.netflix.ribbon.SpringClientFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + + +/** + * Test for {@link PolarisLoadBalancerCompositeRuleBeanPostProcessor}. + * + * @author derekyi 2022-08-01 + */ +public class PolarisLoadBalancerCompositeRuleBeanPostProcessorTest { + + private static final String SERVICE_1 = "service1"; + + private static final String SERVICE_2 = "service2"; + + @Test + public void test1() { + ApplicationContextRunner contextRunner = new ApplicationContextRunner() + .withConfiguration(AutoConfigurations.of(RibbonDefaultConfig.class, PolarisRibbonTest.class, RibbonAutoConfiguration.class)); + contextRunner.run(context -> { + SpringClientFactory springClientFactory = context.getBean(SpringClientFactory.class); + + IRule rule = springClientFactory.getInstance(SERVICE_1, IRule.class); + Assert.assertTrue(rule instanceof PolarisLoadBalancerCompositeRule); + AbstractLoadBalancerRule delegateRule = ((PolarisLoadBalancerCompositeRule) rule).getDelegateRule(); + //ZoneAvoidanceRule default + Assert.assertTrue(delegateRule instanceof ZoneAvoidanceRule); + }); + } + + @Test + public void test2() { + ApplicationContextRunner contextRunner = new ApplicationContextRunner() + .withConfiguration(AutoConfigurations.of(RibbonDefaultConfig.class, PolarisRibbonTest.class, RibbonAutoConfiguration.class)) + .withPropertyValues("spring.cloud.polaris.loadbalancer.strategy = random"); + contextRunner.run(context -> { + SpringClientFactory springClientFactory = context.getBean(SpringClientFactory.class); + + IRule rule = springClientFactory.getInstance(SERVICE_1, IRule.class); + Assert.assertTrue(rule instanceof PolarisLoadBalancerCompositeRule); + AbstractLoadBalancerRule delegateRule = ((PolarisLoadBalancerCompositeRule) rule).getDelegateRule(); + //spring.cloud.polaris.loadbalancer.strategy = random + Assert.assertTrue(delegateRule instanceof RandomRule); + }); + } + + @Test + public void test3() { + ApplicationContextRunner contextRunner = new ApplicationContextRunner() + .withConfiguration(AutoConfigurations.of(RibbonDefaultConfig.class, PolarisRibbonTest.class, RibbonAutoConfiguration.class)) + .withPropertyValues("service1.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RoundRobinRule"); + contextRunner.run(context -> { + SpringClientFactory springClientFactory = context.getBean(SpringClientFactory.class); + + IRule rule1 = springClientFactory.getInstance(SERVICE_1, IRule.class); + Assert.assertTrue(rule1 instanceof PolarisLoadBalancerCompositeRule); + AbstractLoadBalancerRule delegateRule1 = ((PolarisLoadBalancerCompositeRule) rule1).getDelegateRule(); + //service1.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RoundRobinRule + Assert.assertTrue(delegateRule1 instanceof RoundRobinRule); + + IRule rule2 = springClientFactory.getInstance(SERVICE_2, IRule.class); + Assert.assertTrue(rule2 instanceof PolarisLoadBalancerCompositeRule); + + AbstractLoadBalancerRule delegateRule2 = ((PolarisLoadBalancerCompositeRule) rule2).getDelegateRule(); + //ZoneAvoidanceRule default + Assert.assertTrue(delegateRule2 instanceof ZoneAvoidanceRule); + }); + } + + @Test + public void test4() { + ApplicationContextRunner contextRunner = new ApplicationContextRunner() + .withConfiguration(AutoConfigurations.of(CustomRibbonConfig.class, PolarisRibbonTest.class, RibbonAutoConfiguration.class)); + contextRunner.run(context -> { + SpringClientFactory springClientFactory = context.getBean(SpringClientFactory.class); + + IRule rule1 = springClientFactory.getInstance(SERVICE_1, IRule.class); + Assert.assertTrue(rule1 instanceof PolarisLoadBalancerCompositeRule); + AbstractLoadBalancerRule delegateRule1 = ((PolarisLoadBalancerCompositeRule) rule1).getDelegateRule(); + //RibbonConfigForService1#loadBalancerRule returns BestAvailableRule + Assert.assertTrue(delegateRule1 instanceof BestAvailableRule); + + IRule rule2 = springClientFactory.getInstance(SERVICE_2, IRule.class); + Assert.assertTrue(rule2 instanceof PolarisLoadBalancerCompositeRule); + AbstractLoadBalancerRule delegateRule2 = ((PolarisLoadBalancerCompositeRule) rule2).getDelegateRule(); + //ZoneAvoidanceRule default + Assert.assertTrue(delegateRule2 instanceof ZoneAvoidanceRule); + }); + } + + @Configuration + @RibbonClients(defaultConfiguration = {RibbonConfiguration.class}) + static class RibbonDefaultConfig { + } + + @Configuration + @RibbonClients(value = {@RibbonClient(name = SERVICE_1, configuration = RibbonConfigForService1.class)}, defaultConfiguration = RibbonConfiguration.class) + static class CustomRibbonConfig { + } + + static class RibbonConfigForService1 { + + @Bean + public IRule loadBalancerRule() { + return new BestAvailableRule(); + } + } + + + @Configuration + @EnableConfigurationProperties(PolarisLoadBalancerProperties.class) + static class PolarisRibbonTest { + + @Bean + public SDKContext sdkContext() { + return SDKContext.initContext(); + } + + @Bean + public RouterAPI routerAPI(SDKContext sdkContext) { + return new DefaultRouterAPI(sdkContext); + } + } +} From 496cbfba3a6d749f5f56c089a466ed17a3f0fa18 Mon Sep 17 00:00:00 2001 From: pandaapo <35672972+pandaapo@users.noreply.github.com> Date: Thu, 4 Aug 2022 10:17:44 +0800 Subject: [PATCH 2/5] Fix the code analysis error. (#479) Co-authored-by: Haotian Zhang <928016560@qq.com> --- CHANGELOG.md | 3 ++- changes/changes-1.6.0.md | 2 +- .../adapter/PolarisPropertySourceAutoRefresher.java | 2 +- .../polaris-circuitbreaker-example-a/pom.xml | 5 +++++ .../circuitbreaker/example/ServiceAController.java | 10 +++++++++- .../src/main/resources/ESAPI.properties | 8 ++++++++ .../gateway-callee-service/pom.xml | 5 +++++ .../example/callee/GatewayCalleeController.java | 9 ++++++++- .../src/main/resources/ESAPI.properties | 8 ++++++++ .../gateway-callee-service2/pom.xml | 5 +++++ .../example/callee/GatewayCalleeController.java | 9 ++++++++- .../src/main/resources/ESAPI.properties | 8 ++++++++ .../router-callee-service1/pom.xml | 5 +++++ .../router/example/RouterCalleeController.java | 11 ++++++++++- .../src/main/resources/ESAPI.properties | 8 ++++++++ .../router-callee-service2/pom.xml | 5 +++++ .../router/example/RouterCalleeController.java | 11 ++++++++++- .../src/main/resources/ESAPI.properties | 8 ++++++++ spring-cloud-tencent-examples/pom.xml | 10 ++++++++++ 19 files changed, 124 insertions(+), 8 deletions(-) create mode 100644 spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/src/main/resources/ESAPI.properties create mode 100644 spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service/src/main/resources/ESAPI.properties create mode 100644 spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service2/src/main/resources/ESAPI.properties create mode 100644 spring-cloud-tencent-examples/polaris-router-example/router-callee-service1/src/main/resources/ESAPI.properties create mode 100644 spring-cloud-tencent-examples/polaris-router-example/router-callee-service2/src/main/resources/ESAPI.properties diff --git a/CHANGELOG.md b/CHANGELOG.md index 932585e9d..7fc4b8ca3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,4 +2,5 @@ --- - [Feature: support ribbon service-level rule customization](https://github.com/Tencent/spring-cloud-tencent/pull/478) -- [Feature: delete implement ServiceInstance](https://github.com/Tencent/spring-cloud-tencent/pull/481) \ No newline at end of file +- [Fix the code analysis error.](https://github.com/Tencent/spring-cloud-tencent/pull/479) +- [Feature: delete implement ServiceInstance](https://github.com/Tencent/spring-cloud-tencent/pull/481) diff --git a/changes/changes-1.6.0.md b/changes/changes-1.6.0.md index 819415784..24de5fce5 100644 --- a/changes/changes-1.6.0.md +++ b/changes/changes-1.6.0.md @@ -39,4 +39,4 @@ - [docs:optimize example](https://github.com/Tencent/spring-cloud-tencent/pull/385) - [Optimize starters auto-configuration. (main)](https://github.com/Tencent/spring-cloud-tencent/pull/391/files) - [Feature: format code](https://github.com/Tencent/spring-cloud-tencent/pull/394) -- [test: add PostInitPolarisSDKContextTest](https://github.com/Tencent/spring-cloud-tencent/pull/397) +- [test: add PostInitPolarisSDKContextTest](https://github.com/Tencent/spring-cloud-tencent/pull/397) \ No newline at end of file diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisPropertySourceAutoRefresher.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisPropertySourceAutoRefresher.java index 9aa001194..5e5e6a3f4 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisPropertySourceAutoRefresher.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisPropertySourceAutoRefresher.java @@ -120,7 +120,7 @@ public class PolarisPropertySourceAutoRefresher LOGGER.info( "[SCT Config] received polaris config change event and will refresh spring context." - + "namespace = {}, group = {}, fileName = {}", + + " namespace = {}, group = {}, fileName = {}", polarisPropertySource.getNamespace(), polarisPropertySource.getGroup(), polarisPropertySource.getFileName()); diff --git a/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/pom.xml b/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/pom.xml index 5975aabc5..282093f28 100644 --- a/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/pom.xml +++ b/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/pom.xml @@ -33,6 +33,11 @@ org.springframework.cloud spring-cloud-starter-netflix-ribbon + + + org.owasp.esapi + esapi + diff --git a/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/src/main/java/com/tencent/cloud/polaris/circuitbreaker/example/ServiceAController.java b/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/src/main/java/com/tencent/cloud/polaris/circuitbreaker/example/ServiceAController.java index 79ba2c0ef..04570498c 100644 --- a/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/src/main/java/com/tencent/cloud/polaris/circuitbreaker/example/ServiceAController.java +++ b/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/src/main/java/com/tencent/cloud/polaris/circuitbreaker/example/ServiceAController.java @@ -17,6 +17,8 @@ package com.tencent.cloud.polaris.circuitbreaker.example; +import org.owasp.esapi.ESAPI; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; @@ -62,6 +64,12 @@ public class ServiceAController { ResponseEntity entity = restTemplate.getForEntity( "http://polaris-circuitbreaker-example-b/example/service/b/info", String.class); - return entity.getBody(); + String response = entity.getBody(); + return cleanXSS(response); + } + + private String cleanXSS(String str) { + str = ESAPI.encoder().encodeForHTML(str); + return str; } } diff --git a/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/src/main/resources/ESAPI.properties b/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/src/main/resources/ESAPI.properties new file mode 100644 index 000000000..d83195ab8 --- /dev/null +++ b/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/src/main/resources/ESAPI.properties @@ -0,0 +1,8 @@ +ESAPI.printProperties=true + +ESAPI.Encoder=org.owasp.esapi.reference.DefaultEncoder + +# ESAPI Encoder +Encoder.AllowMultipleEncoding=false +Encoder.AllowMixedEncoding=false +Encoder.DefaultCodecList=HTMLEntityCodec,PercentCodec,JavaScriptCodec diff --git a/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service/pom.xml b/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service/pom.xml index cc37a455b..17c543546 100644 --- a/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service/pom.xml +++ b/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service/pom.xml @@ -28,5 +28,10 @@ org.springframework.boot spring-boot-starter-web + + + org.owasp.esapi + esapi + diff --git a/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service/src/main/java/com/tencent/cloud/polaris/gateway/example/callee/GatewayCalleeController.java b/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service/src/main/java/com/tencent/cloud/polaris/gateway/example/callee/GatewayCalleeController.java index 580af7ca9..79050dc4d 100644 --- a/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service/src/main/java/com/tencent/cloud/polaris/gateway/example/callee/GatewayCalleeController.java +++ b/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service/src/main/java/com/tencent/cloud/polaris/gateway/example/callee/GatewayCalleeController.java @@ -21,6 +21,7 @@ import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import com.tencent.cloud.common.constant.MetadataConstant; +import org.owasp.esapi.ESAPI; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -67,7 +68,13 @@ public class GatewayCalleeController { @RequestHeader(MetadataConstant.HeaderName.CUSTOM_METADATA) String metadataStr) throws UnsupportedEncodingException { LOG.info(URLDecoder.decode(metadataStr, UTF_8)); - return URLDecoder.decode(metadataStr, UTF_8); + metadataStr = URLDecoder.decode(metadataStr, UTF_8); + return cleanXSS(metadataStr); + } + + private String cleanXSS(String str) { + str = ESAPI.encoder().encodeForHTML(str); + return str; } } diff --git a/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service/src/main/resources/ESAPI.properties b/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service/src/main/resources/ESAPI.properties new file mode 100644 index 000000000..d83195ab8 --- /dev/null +++ b/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service/src/main/resources/ESAPI.properties @@ -0,0 +1,8 @@ +ESAPI.printProperties=true + +ESAPI.Encoder=org.owasp.esapi.reference.DefaultEncoder + +# ESAPI Encoder +Encoder.AllowMultipleEncoding=false +Encoder.AllowMixedEncoding=false +Encoder.DefaultCodecList=HTMLEntityCodec,PercentCodec,JavaScriptCodec diff --git a/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service2/pom.xml b/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service2/pom.xml index f96b25e15..41cc550a2 100644 --- a/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service2/pom.xml +++ b/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service2/pom.xml @@ -27,5 +27,10 @@ org.springframework.boot spring-boot-starter-web + + + org.owasp.esapi + esapi + diff --git a/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service2/src/main/java/com/tencent/cloud/polaris/gateway/example/callee/GatewayCalleeController.java b/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service2/src/main/java/com/tencent/cloud/polaris/gateway/example/callee/GatewayCalleeController.java index 580af7ca9..79050dc4d 100644 --- a/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service2/src/main/java/com/tencent/cloud/polaris/gateway/example/callee/GatewayCalleeController.java +++ b/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service2/src/main/java/com/tencent/cloud/polaris/gateway/example/callee/GatewayCalleeController.java @@ -21,6 +21,7 @@ import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import com.tencent.cloud.common.constant.MetadataConstant; +import org.owasp.esapi.ESAPI; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -67,7 +68,13 @@ public class GatewayCalleeController { @RequestHeader(MetadataConstant.HeaderName.CUSTOM_METADATA) String metadataStr) throws UnsupportedEncodingException { LOG.info(URLDecoder.decode(metadataStr, UTF_8)); - return URLDecoder.decode(metadataStr, UTF_8); + metadataStr = URLDecoder.decode(metadataStr, UTF_8); + return cleanXSS(metadataStr); + } + + private String cleanXSS(String str) { + str = ESAPI.encoder().encodeForHTML(str); + return str; } } diff --git a/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service2/src/main/resources/ESAPI.properties b/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service2/src/main/resources/ESAPI.properties new file mode 100644 index 000000000..d83195ab8 --- /dev/null +++ b/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service2/src/main/resources/ESAPI.properties @@ -0,0 +1,8 @@ +ESAPI.printProperties=true + +ESAPI.Encoder=org.owasp.esapi.reference.DefaultEncoder + +# ESAPI Encoder +Encoder.AllowMultipleEncoding=false +Encoder.AllowMixedEncoding=false +Encoder.DefaultCodecList=HTMLEntityCodec,PercentCodec,JavaScriptCodec diff --git a/spring-cloud-tencent-examples/polaris-router-example/router-callee-service1/pom.xml b/spring-cloud-tencent-examples/polaris-router-example/router-callee-service1/pom.xml index 253d3739a..bbf3bdb93 100644 --- a/spring-cloud-tencent-examples/polaris-router-example/router-callee-service1/pom.xml +++ b/spring-cloud-tencent-examples/polaris-router-example/router-callee-service1/pom.xml @@ -17,6 +17,11 @@ com.tencent.cloud spring-cloud-starter-tencent-polaris-discovery + + + org.owasp.esapi + esapi + diff --git a/spring-cloud-tencent-examples/polaris-router-example/router-callee-service1/src/main/java/com/tencent/cloud/polaris/router/example/RouterCalleeController.java b/spring-cloud-tencent-examples/polaris-router-example/router-callee-service1/src/main/java/com/tencent/cloud/polaris/router/example/RouterCalleeController.java index 925031a7b..f42cd969d 100644 --- a/spring-cloud-tencent-examples/polaris-router-example/router-callee-service1/src/main/java/com/tencent/cloud/polaris/router/example/RouterCalleeController.java +++ b/spring-cloud-tencent-examples/polaris-router-example/router-callee-service1/src/main/java/com/tencent/cloud/polaris/router/example/RouterCalleeController.java @@ -18,6 +18,7 @@ package com.tencent.cloud.polaris.router.example; +import org.owasp.esapi.ESAPI; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,7 +49,15 @@ public class RouterCalleeController { @PostMapping("/info") public String info(String name, @RequestBody User user) { LOG.info("Discovery Service Callee [{}] is called.", port); - return String.format("Discovery Service Callee [%s] is called. user = %s", port, user); + return String.format("Discovery Service Callee [%s] is called. user = %s", port, cleanXSS(user)); + } + + private User cleanXSS(User user) { + User u = new User(); + String name = ESAPI.encoder().encodeForHTML(user.getName()); + u.setName(name); + u.setAge(user.getAge()); + return u; } } diff --git a/spring-cloud-tencent-examples/polaris-router-example/router-callee-service1/src/main/resources/ESAPI.properties b/spring-cloud-tencent-examples/polaris-router-example/router-callee-service1/src/main/resources/ESAPI.properties new file mode 100644 index 000000000..d83195ab8 --- /dev/null +++ b/spring-cloud-tencent-examples/polaris-router-example/router-callee-service1/src/main/resources/ESAPI.properties @@ -0,0 +1,8 @@ +ESAPI.printProperties=true + +ESAPI.Encoder=org.owasp.esapi.reference.DefaultEncoder + +# ESAPI Encoder +Encoder.AllowMultipleEncoding=false +Encoder.AllowMixedEncoding=false +Encoder.DefaultCodecList=HTMLEntityCodec,PercentCodec,JavaScriptCodec diff --git a/spring-cloud-tencent-examples/polaris-router-example/router-callee-service2/pom.xml b/spring-cloud-tencent-examples/polaris-router-example/router-callee-service2/pom.xml index 0dd00a788..2397f4481 100644 --- a/spring-cloud-tencent-examples/polaris-router-example/router-callee-service2/pom.xml +++ b/spring-cloud-tencent-examples/polaris-router-example/router-callee-service2/pom.xml @@ -17,6 +17,11 @@ com.tencent.cloud spring-cloud-starter-tencent-polaris-discovery + + + org.owasp.esapi + esapi + diff --git a/spring-cloud-tencent-examples/polaris-router-example/router-callee-service2/src/main/java/com/tencent/cloud/polaris/router/example/RouterCalleeController.java b/spring-cloud-tencent-examples/polaris-router-example/router-callee-service2/src/main/java/com/tencent/cloud/polaris/router/example/RouterCalleeController.java index b3e365ab8..6d6915b7f 100644 --- a/spring-cloud-tencent-examples/polaris-router-example/router-callee-service2/src/main/java/com/tencent/cloud/polaris/router/example/RouterCalleeController.java +++ b/spring-cloud-tencent-examples/polaris-router-example/router-callee-service2/src/main/java/com/tencent/cloud/polaris/router/example/RouterCalleeController.java @@ -18,6 +18,7 @@ package com.tencent.cloud.polaris.router.example; +import org.owasp.esapi.ESAPI; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -49,7 +50,15 @@ public class RouterCalleeController { @PostMapping("/info") public String info(@RequestParam("name") String name, @RequestBody User user) { LOG.info("Discovery Service Callee [{}] is called.", port); - return String.format("Discovery Service Callee [%s] is called. user = %s", port, user); + return String.format("Discovery Service Callee [%s] is called. user = %s", port, cleanXSS(user)); + } + + private User cleanXSS(User user) { + User u = new User(); + String name = ESAPI.encoder().encodeForHTML(user.getName()); + u.setName(name); + u.setAge(user.getAge()); + return u; } } diff --git a/spring-cloud-tencent-examples/polaris-router-example/router-callee-service2/src/main/resources/ESAPI.properties b/spring-cloud-tencent-examples/polaris-router-example/router-callee-service2/src/main/resources/ESAPI.properties new file mode 100644 index 000000000..d83195ab8 --- /dev/null +++ b/spring-cloud-tencent-examples/polaris-router-example/router-callee-service2/src/main/resources/ESAPI.properties @@ -0,0 +1,8 @@ +ESAPI.printProperties=true + +ESAPI.Encoder=org.owasp.esapi.reference.DefaultEncoder + +# ESAPI Encoder +Encoder.AllowMultipleEncoding=false +Encoder.AllowMixedEncoding=false +Encoder.DefaultCodecList=HTMLEntityCodec,PercentCodec,JavaScriptCodec diff --git a/spring-cloud-tencent-examples/pom.xml b/spring-cloud-tencent-examples/pom.xml index 3395e9b04..17752a148 100644 --- a/spring-cloud-tencent-examples/pom.xml +++ b/spring-cloud-tencent-examples/pom.xml @@ -31,4 +31,14 @@ true + + + + org.owasp.esapi + esapi + 2.1.0.1 + + + + From 3e054dd1e39e1dd1736bac969e1dee66d1b23935 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Aug 2022 10:54:02 +0800 Subject: [PATCH 3/5] build(deps): bump esapi in /spring-cloud-tencent-examples (#491) --- spring-cloud-tencent-examples/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud-tencent-examples/pom.xml b/spring-cloud-tencent-examples/pom.xml index 17752a148..6362e8a20 100644 --- a/spring-cloud-tencent-examples/pom.xml +++ b/spring-cloud-tencent-examples/pom.xml @@ -36,7 +36,7 @@ org.owasp.esapi esapi - 2.1.0.1 + 2.3.0.0 From 8abae442b6d959f17a12df868c4e838d3e127356 Mon Sep 17 00:00:00 2001 From: pandaapo <35672972+pandaapo@users.noreply.github.com> Date: Thu, 4 Aug 2022 18:05:22 +0800 Subject: [PATCH 4/5] Upgrade owasp esapi's configuration (#492) --- CHANGELOG.md | 1 + .../src/main/resources/ESAPI.properties | 10 ++++++++-- .../src/main/resources/ESAPI.properties | 10 ++++++++-- .../src/main/resources/ESAPI.properties | 10 ++++++++-- .../src/main/resources/ESAPI.properties | 10 ++++++++-- .../src/main/resources/ESAPI.properties | 10 ++++++++-- 6 files changed, 41 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fc4b8ca3..b02892f5d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,3 +4,4 @@ - [Feature: support ribbon service-level rule customization](https://github.com/Tencent/spring-cloud-tencent/pull/478) - [Fix the code analysis error.](https://github.com/Tencent/spring-cloud-tencent/pull/479) - [Feature: delete implement ServiceInstance](https://github.com/Tencent/spring-cloud-tencent/pull/481) +- [Upgrade owasp esapi's configuration](https://github.com/Tencent/spring-cloud-tencent/pull/492) diff --git a/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/src/main/resources/ESAPI.properties b/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/src/main/resources/ESAPI.properties index d83195ab8..32df629d9 100644 --- a/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/src/main/resources/ESAPI.properties +++ b/spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a/src/main/resources/ESAPI.properties @@ -1,8 +1,14 @@ ESAPI.printProperties=true - ESAPI.Encoder=org.owasp.esapi.reference.DefaultEncoder +ESAPI.Logger=org.owasp.esapi.logging.slf4j.Slf4JLogFactory -# ESAPI Encoder Encoder.AllowMultipleEncoding=false Encoder.AllowMixedEncoding=false Encoder.DefaultCodecList=HTMLEntityCodec,PercentCodec,JavaScriptCodec + +Logger.LogEncodingRequired=false +Logger.UserInfo=false +Logger.ClientInfo=false +Logger.ApplicationName=ExampleApplication +Logger.LogApplicationName=false +Logger.LogServerIP=false diff --git a/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service/src/main/resources/ESAPI.properties b/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service/src/main/resources/ESAPI.properties index d83195ab8..32df629d9 100644 --- a/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service/src/main/resources/ESAPI.properties +++ b/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service/src/main/resources/ESAPI.properties @@ -1,8 +1,14 @@ ESAPI.printProperties=true - ESAPI.Encoder=org.owasp.esapi.reference.DefaultEncoder +ESAPI.Logger=org.owasp.esapi.logging.slf4j.Slf4JLogFactory -# ESAPI Encoder Encoder.AllowMultipleEncoding=false Encoder.AllowMixedEncoding=false Encoder.DefaultCodecList=HTMLEntityCodec,PercentCodec,JavaScriptCodec + +Logger.LogEncodingRequired=false +Logger.UserInfo=false +Logger.ClientInfo=false +Logger.ApplicationName=ExampleApplication +Logger.LogApplicationName=false +Logger.LogServerIP=false diff --git a/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service2/src/main/resources/ESAPI.properties b/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service2/src/main/resources/ESAPI.properties index d83195ab8..32df629d9 100644 --- a/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service2/src/main/resources/ESAPI.properties +++ b/spring-cloud-tencent-examples/polaris-gateway-example/gateway-callee-service2/src/main/resources/ESAPI.properties @@ -1,8 +1,14 @@ ESAPI.printProperties=true - ESAPI.Encoder=org.owasp.esapi.reference.DefaultEncoder +ESAPI.Logger=org.owasp.esapi.logging.slf4j.Slf4JLogFactory -# ESAPI Encoder Encoder.AllowMultipleEncoding=false Encoder.AllowMixedEncoding=false Encoder.DefaultCodecList=HTMLEntityCodec,PercentCodec,JavaScriptCodec + +Logger.LogEncodingRequired=false +Logger.UserInfo=false +Logger.ClientInfo=false +Logger.ApplicationName=ExampleApplication +Logger.LogApplicationName=false +Logger.LogServerIP=false diff --git a/spring-cloud-tencent-examples/polaris-router-example/router-callee-service1/src/main/resources/ESAPI.properties b/spring-cloud-tencent-examples/polaris-router-example/router-callee-service1/src/main/resources/ESAPI.properties index d83195ab8..32df629d9 100644 --- a/spring-cloud-tencent-examples/polaris-router-example/router-callee-service1/src/main/resources/ESAPI.properties +++ b/spring-cloud-tencent-examples/polaris-router-example/router-callee-service1/src/main/resources/ESAPI.properties @@ -1,8 +1,14 @@ ESAPI.printProperties=true - ESAPI.Encoder=org.owasp.esapi.reference.DefaultEncoder +ESAPI.Logger=org.owasp.esapi.logging.slf4j.Slf4JLogFactory -# ESAPI Encoder Encoder.AllowMultipleEncoding=false Encoder.AllowMixedEncoding=false Encoder.DefaultCodecList=HTMLEntityCodec,PercentCodec,JavaScriptCodec + +Logger.LogEncodingRequired=false +Logger.UserInfo=false +Logger.ClientInfo=false +Logger.ApplicationName=ExampleApplication +Logger.LogApplicationName=false +Logger.LogServerIP=false diff --git a/spring-cloud-tencent-examples/polaris-router-example/router-callee-service2/src/main/resources/ESAPI.properties b/spring-cloud-tencent-examples/polaris-router-example/router-callee-service2/src/main/resources/ESAPI.properties index d83195ab8..32df629d9 100644 --- a/spring-cloud-tencent-examples/polaris-router-example/router-callee-service2/src/main/resources/ESAPI.properties +++ b/spring-cloud-tencent-examples/polaris-router-example/router-callee-service2/src/main/resources/ESAPI.properties @@ -1,8 +1,14 @@ ESAPI.printProperties=true - ESAPI.Encoder=org.owasp.esapi.reference.DefaultEncoder +ESAPI.Logger=org.owasp.esapi.logging.slf4j.Slf4JLogFactory -# ESAPI Encoder Encoder.AllowMultipleEncoding=false Encoder.AllowMixedEncoding=false Encoder.DefaultCodecList=HTMLEntityCodec,PercentCodec,JavaScriptCodec + +Logger.LogEncodingRequired=false +Logger.UserInfo=false +Logger.ClientInfo=false +Logger.ApplicationName=ExampleApplication +Logger.LogApplicationName=false +Logger.LogServerIP=false From a6061e6b0503836d352253e1e7b15a4a9e0ba0d5 Mon Sep 17 00:00:00 2001 From: weihubeats Date: Fri, 5 Aug 2022 18:50:56 +0800 Subject: [PATCH 5/5] update byte-buddy scope test to compile (#495) * update byte-buddy scope test to compile * add change log --- CHANGELOG.md | 1 + spring-cloud-tencent-dependencies/pom.xml | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b02892f5d..491208e4c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,3 +5,4 @@ - [Fix the code analysis error.](https://github.com/Tencent/spring-cloud-tencent/pull/479) - [Feature: delete implement ServiceInstance](https://github.com/Tencent/spring-cloud-tencent/pull/481) - [Upgrade owasp esapi's configuration](https://github.com/Tencent/spring-cloud-tencent/pull/492) +- [Bugfix: update byte-buddy scope test to compile](https://github.com/Tencent/spring-cloud-tencent/pull/495) diff --git a/spring-cloud-tencent-dependencies/pom.xml b/spring-cloud-tencent-dependencies/pom.xml index 9a29c28ef..ed81b2de0 100644 --- a/spring-cloud-tencent-dependencies/pom.xml +++ b/spring-cloud-tencent-dependencies/pom.xml @@ -251,7 +251,6 @@ net.bytebuddy byte-buddy ${byte-buddy.version} - test