From f93e8fc9eca605242098ef5d85f153975292b2e2 Mon Sep 17 00:00:00 2001 From: raoxiaoyan Date: Fri, 30 Oct 2020 18:30:50 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=A2=9E=E5=8A=A0sni=E3=80=81certifi?= =?UTF-8?q?cate=E3=80=81ca=5Fcertificate=E5=8F=8Aconsumers=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E8=AF=81=E4=B9=A6=E7=AD=89=E5=8A=9F=E8=83=BD=202?= =?UTF-8?q?=E3=80=81=E4=BC=98=E5=8C=96service=E3=80=81upstream=E4=BB=A5?= =?UTF-8?q?=E4=BE=BF=E9=80=82=E9=85=8D=E5=90=8E=E7=BB=AD=E5=90=84=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gateway/CaCertificateController.java | 128 ++++++++++++++++++ .../gateway/CertificateController.java | 128 ++++++++++++++++++ .../gateway/ConsumerController.java | 79 ++++++++++- .../controller/gateway/ServiceController.java | 5 +- .../controller/gateway/SniController.java | 128 ++++++++++++++++++ .../gateway/UpstreamController.java | 5 +- .../system/ServerConfigController.java | 2 +- .../serve/entity/gateway/CaCertificate.java | 34 +++++ .../serve/entity/gateway/Certificate.java | 33 +++++ .../kongx/serve/entity/gateway/EntityId.java | 17 +-- .../kongx/serve/entity/gateway/Plugin.java | 2 +- .../kongx/serve/entity/gateway/PluginVO.java | 2 +- .../com/kongx/serve/entity/gateway/Route.java | 2 +- .../kongx/serve/entity/gateway/Service.java | 11 +- .../com/kongx/serve/entity/gateway/Sni.java | 32 +++++ .../kongx/serve/entity/gateway/Upstream.java | 12 +- .../serve/entity/system/OperationLog.java | 4 + .../feign/CaCertificateFeignService.java | 8 ++ .../serve/feign/CertificateFeignService.java | 8 ++ .../serve/feign/CredentialsFeignService.java | 9 ++ .../kongx/serve/feign/SniFeignService.java | 8 ++ .../serve/feign/UpstreamMapFeignService.java | 9 ++ ...Service.java => AbstractCacheService.java} | 2 +- .../kongx/serve/service/GatewayService.java | 78 +++++++++++ .../service/gateway/CaCertificateService.java | 47 +++++++ .../service/gateway/CertificateService.java | 47 +++++++ .../service/gateway/ConsumerService.java | 41 +++++- .../service/gateway/KongInfoService.java | 4 +- .../serve/service/gateway/PluginService.java | 15 +- .../serve/service/gateway/RouteService.java | 4 +- .../serve/service/gateway/ServiceService.java | 4 +- .../serve/service/gateway/SniService.java | 47 +++++++ .../serve/service/gateway/TargetService.java | 4 +- .../service/gateway/UpstreamService.java | 6 +- .../gateway/handler/AbstractSyncHandler.java | 26 +++- .../gateway/handler/DefaultSyncHandler.java | 4 +- .../gateway/handler/SyncConsumersHandler.java | 46 +++++++ .../service/system/ServerConfigService.java | 6 +- .../service/system/SystemProfileService.java | 4 +- 39 files changed, 997 insertions(+), 54 deletions(-) create mode 100644 kongx-serve/src/main/java/com/kongx/serve/controller/gateway/CaCertificateController.java create mode 100644 kongx-serve/src/main/java/com/kongx/serve/controller/gateway/CertificateController.java create mode 100644 kongx-serve/src/main/java/com/kongx/serve/controller/gateway/SniController.java create mode 100644 kongx-serve/src/main/java/com/kongx/serve/entity/gateway/CaCertificate.java create mode 100644 kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Certificate.java create mode 100644 kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Sni.java create mode 100644 kongx-serve/src/main/java/com/kongx/serve/feign/CaCertificateFeignService.java create mode 100644 kongx-serve/src/main/java/com/kongx/serve/feign/CertificateFeignService.java create mode 100644 kongx-serve/src/main/java/com/kongx/serve/feign/CredentialsFeignService.java create mode 100644 kongx-serve/src/main/java/com/kongx/serve/feign/SniFeignService.java create mode 100644 kongx-serve/src/main/java/com/kongx/serve/feign/UpstreamMapFeignService.java rename kongx-serve/src/main/java/com/kongx/serve/service/{AbstractService.java => AbstractCacheService.java} (98%) create mode 100644 kongx-serve/src/main/java/com/kongx/serve/service/GatewayService.java create mode 100644 kongx-serve/src/main/java/com/kongx/serve/service/gateway/CaCertificateService.java create mode 100644 kongx-serve/src/main/java/com/kongx/serve/service/gateway/CertificateService.java create mode 100644 kongx-serve/src/main/java/com/kongx/serve/service/gateway/SniService.java create mode 100644 kongx-serve/src/main/java/com/kongx/serve/service/gateway/handler/SyncConsumersHandler.java diff --git a/kongx-serve/src/main/java/com/kongx/serve/controller/gateway/CaCertificateController.java b/kongx-serve/src/main/java/com/kongx/serve/controller/gateway/CaCertificateController.java new file mode 100644 index 0000000..df97a73 --- /dev/null +++ b/kongx-serve/src/main/java/com/kongx/serve/controller/gateway/CaCertificateController.java @@ -0,0 +1,128 @@ +package com.kongx.serve.controller.gateway; + +import com.kongx.common.core.entity.UserInfo; +import com.kongx.common.jsonwrapper.JsonHeaderWrapper; +import com.kongx.serve.controller.BaseController; +import com.kongx.serve.entity.gateway.CaCertificate; +import com.kongx.serve.entity.gateway.KongEntity; +import com.kongx.serve.entity.system.OperationLog; +import com.kongx.serve.service.gateway.CaCertificateService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.net.URISyntaxException; + +@RestController("CaCertificateController") +@RequestMapping("/kong/api/") +@Slf4j +public class CaCertificateController extends BaseController { + private static final String CERTIFICATES_URI = "/ca_certificates"; + private static final String CERTIFICATES_URI_ID = "/ca_certificates/{id}"; + + @Autowired + private CaCertificateService caCertificateService; + + /** + * 查询所有sni + * + * @return + */ + @RequestMapping(value = CERTIFICATES_URI, method = RequestMethod.GET) + public JsonHeaderWrapper findAll(UserInfo userInfo) { + JsonHeaderWrapper jsonHeaderWrapper = this.init(); + try { + KongEntity upstreamKongEntity = caCertificateService.findAll(systemProfile(userInfo)); + jsonHeaderWrapper.setData(upstreamKongEntity.getData()); + } catch (Exception e) { + jsonHeaderWrapper.setStatus(JsonHeaderWrapper.StatusEnum.Failed.getCode()); + jsonHeaderWrapper.setErrmsg(e.getMessage()); + } + return jsonHeaderWrapper; + } + + /** + * 新增upstream + * + * @param sni + * @return + * @throws URISyntaxException + */ + @RequestMapping(value = CERTIFICATES_URI, method = RequestMethod.POST) + public JsonHeaderWrapper addUpstream(UserInfo userInfo, @RequestBody CaCertificate sni) { + JsonHeaderWrapper jsonHeaderWrapper = this.init(); + try { + CaCertificate results = this.caCertificateService.add(systemProfile(userInfo), sni.trim()); + jsonHeaderWrapper.setData(results); + this.log(userInfo, OperationLog.OperationType.OPERATION_ADD, OperationLog.OperationTarget.CaCertificate, sni); + } catch (Exception e) { + jsonHeaderWrapper.setStatus(JsonHeaderWrapper.StatusEnum.Failed.getCode()); + jsonHeaderWrapper.setErrmsg(e.getMessage()); + } + return jsonHeaderWrapper; + } + + /** + * 更新consumer + * + * @param id + * @param sni + * @return + * @throws URISyntaxException + */ + @RequestMapping(value = CERTIFICATES_URI_ID, method = RequestMethod.POST) + public JsonHeaderWrapper update(UserInfo userInfo, @PathVariable String id, @RequestBody CaCertificate sni) { + JsonHeaderWrapper jsonHeaderWrapper = this.init(); + try { + CaCertificate results = this.caCertificateService.update(systemProfile(userInfo), id, sni.trim()); + jsonHeaderWrapper.setData(results); + this.log(userInfo, OperationLog.OperationType.OPERATION_UPDATE, OperationLog.OperationTarget.CaCertificate, sni, sni.getId()); + } catch (Exception e) { + jsonHeaderWrapper.setStatus(JsonHeaderWrapper.StatusEnum.Failed.getCode()); + jsonHeaderWrapper.setErrmsg(e.getMessage()); + } + return jsonHeaderWrapper; + } + + /** + * 删除sni + * + * @param id + * @return + * @throws URISyntaxException + */ + @RequestMapping(value = CERTIFICATES_URI_ID, method = RequestMethod.DELETE) + public JsonHeaderWrapper remove(UserInfo userInfo, @PathVariable String id) throws Exception { + JsonHeaderWrapper jsonHeaderWrapper = this.init(); + try { + CaCertificate sni = this.caCertificateService.findEntity(systemProfile(userInfo), id); + KongEntity upstreamKongEntity = this.caCertificateService.remove(systemProfile(userInfo), id); + this.log(userInfo, OperationLog.OperationType.OPERATION_DELETE, OperationLog.OperationTarget.CaCertificate, sni); + jsonHeaderWrapper.setData(upstreamKongEntity.getData()); + } catch (Exception e) { + jsonHeaderWrapper.setStatus(JsonHeaderWrapper.StatusEnum.Failed.getCode()); + jsonHeaderWrapper.setErrmsg(e.getMessage()); + } + return jsonHeaderWrapper; + } + + /** + * 查询单个sni的信息 + * + * @param id + * @return + * @throws URISyntaxException + */ + @RequestMapping(value = CERTIFICATES_URI_ID, method = RequestMethod.GET) + public JsonHeaderWrapper findSni(UserInfo userInfo, @PathVariable String id) { + JsonHeaderWrapper jsonHeaderWrapper = this.init(); + try { + CaCertificate results = this.caCertificateService.findEntity(systemProfile(userInfo), id); + jsonHeaderWrapper.setData(results); + } catch (Exception e) { + jsonHeaderWrapper.setStatus(JsonHeaderWrapper.StatusEnum.Failed.getCode()); + jsonHeaderWrapper.setErrmsg(e.getMessage()); + } + return jsonHeaderWrapper; + } +} diff --git a/kongx-serve/src/main/java/com/kongx/serve/controller/gateway/CertificateController.java b/kongx-serve/src/main/java/com/kongx/serve/controller/gateway/CertificateController.java new file mode 100644 index 0000000..3b13713 --- /dev/null +++ b/kongx-serve/src/main/java/com/kongx/serve/controller/gateway/CertificateController.java @@ -0,0 +1,128 @@ +package com.kongx.serve.controller.gateway; + +import com.kongx.common.core.entity.UserInfo; +import com.kongx.common.jsonwrapper.JsonHeaderWrapper; +import com.kongx.serve.controller.BaseController; +import com.kongx.serve.entity.gateway.Certificate; +import com.kongx.serve.entity.gateway.KongEntity; +import com.kongx.serve.entity.system.OperationLog; +import com.kongx.serve.service.gateway.CertificateService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.net.URISyntaxException; + +@RestController("CertificateController") +@RequestMapping("/kong/api/") +@Slf4j +public class CertificateController extends BaseController { + private static final String CERTIFICATES_URI = "/certificates"; + private static final String CERTIFICATES_URI_ID = "/certificates/{id}"; + + @Autowired + private CertificateService certificateService; + + /** + * 查询所有sni + * + * @return + */ + @RequestMapping(value = CERTIFICATES_URI, method = RequestMethod.GET) + public JsonHeaderWrapper findAll(UserInfo userInfo) { + JsonHeaderWrapper jsonHeaderWrapper = this.init(); + try { + KongEntity upstreamKongEntity = certificateService.findAll(systemProfile(userInfo)); + jsonHeaderWrapper.setData(upstreamKongEntity.getData()); + } catch (Exception e) { + jsonHeaderWrapper.setStatus(JsonHeaderWrapper.StatusEnum.Failed.getCode()); + jsonHeaderWrapper.setErrmsg(e.getMessage()); + } + return jsonHeaderWrapper; + } + + /** + * 新增upstream + * + * @param sni + * @return + * @throws URISyntaxException + */ + @RequestMapping(value = CERTIFICATES_URI, method = RequestMethod.POST) + public JsonHeaderWrapper addUpstream(UserInfo userInfo, @RequestBody Certificate sni) { + JsonHeaderWrapper jsonHeaderWrapper = this.init(); + try { + Certificate results = this.certificateService.add(systemProfile(userInfo), sni.trim()); + jsonHeaderWrapper.setData(results); + this.log(userInfo, OperationLog.OperationType.OPERATION_ADD, OperationLog.OperationTarget.Certificate, sni); + } catch (Exception e) { + jsonHeaderWrapper.setStatus(JsonHeaderWrapper.StatusEnum.Failed.getCode()); + jsonHeaderWrapper.setErrmsg(e.getMessage()); + } + return jsonHeaderWrapper; + } + + /** + * 更新consumer + * + * @param id + * @param sni + * @return + * @throws URISyntaxException + */ + @RequestMapping(value = CERTIFICATES_URI_ID, method = RequestMethod.POST) + public JsonHeaderWrapper update(UserInfo userInfo, @PathVariable String id, @RequestBody Certificate sni) { + JsonHeaderWrapper jsonHeaderWrapper = this.init(); + try { + Certificate results = this.certificateService.update(systemProfile(userInfo), id, sni.trim()); + jsonHeaderWrapper.setData(results); + this.log(userInfo, OperationLog.OperationType.OPERATION_UPDATE, OperationLog.OperationTarget.Certificate, sni, sni.getKey()); + } catch (Exception e) { + jsonHeaderWrapper.setStatus(JsonHeaderWrapper.StatusEnum.Failed.getCode()); + jsonHeaderWrapper.setErrmsg(e.getMessage()); + } + return jsonHeaderWrapper; + } + + /** + * 删除sni + * + * @param id + * @return + * @throws URISyntaxException + */ + @RequestMapping(value = CERTIFICATES_URI_ID, method = RequestMethod.DELETE) + public JsonHeaderWrapper remove(UserInfo userInfo, @PathVariable String id) throws Exception { + JsonHeaderWrapper jsonHeaderWrapper = this.init(); + try { + Certificate sni = this.certificateService.findEntity(systemProfile(userInfo), id); + KongEntity upstreamKongEntity = this.certificateService.remove(systemProfile(userInfo), id); + this.log(userInfo, OperationLog.OperationType.OPERATION_DELETE, OperationLog.OperationTarget.Certificate, sni); + jsonHeaderWrapper.setData(upstreamKongEntity.getData()); + } catch (Exception e) { + jsonHeaderWrapper.setStatus(JsonHeaderWrapper.StatusEnum.Failed.getCode()); + jsonHeaderWrapper.setErrmsg(e.getMessage()); + } + return jsonHeaderWrapper; + } + + /** + * 查询单个sni的信息 + * + * @param id + * @return + * @throws URISyntaxException + */ + @RequestMapping(value = CERTIFICATES_URI_ID, method = RequestMethod.GET) + public JsonHeaderWrapper findSni(UserInfo userInfo, @PathVariable String id) { + JsonHeaderWrapper jsonHeaderWrapper = this.init(); + try { + Certificate results = this.certificateService.findEntity(systemProfile(userInfo), id); + jsonHeaderWrapper.setData(results); + } catch (Exception e) { + jsonHeaderWrapper.setStatus(JsonHeaderWrapper.StatusEnum.Failed.getCode()); + jsonHeaderWrapper.setErrmsg(e.getMessage()); + } + return jsonHeaderWrapper; + } +} diff --git a/kongx-serve/src/main/java/com/kongx/serve/controller/gateway/ConsumerController.java b/kongx-serve/src/main/java/com/kongx/serve/controller/gateway/ConsumerController.java index 6392c3e..ae3f585 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/controller/gateway/ConsumerController.java +++ b/kongx-serve/src/main/java/com/kongx/serve/controller/gateway/ConsumerController.java @@ -5,13 +5,17 @@ import com.kongx.common.jsonwrapper.JsonHeaderWrapper; import com.kongx.serve.controller.BaseController; import com.kongx.serve.entity.gateway.Consumer; import com.kongx.serve.entity.gateway.KongEntity; +import com.kongx.serve.entity.gateway.PluginVO; import com.kongx.serve.entity.system.OperationLog; +import com.kongx.serve.entity.system.SystemProfile; import com.kongx.serve.service.gateway.ConsumerService; +import com.kongx.serve.service.gateway.PluginService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.net.URISyntaxException; +import java.util.Map; @RestController("consumerController") @RequestMapping("/kong/api/") @@ -19,10 +23,16 @@ import java.net.URISyntaxException; public class ConsumerController extends BaseController { private static final String CONSUMER_URI = "/consumers"; private static final String CONSUMER_URI_ID = "/consumers/{id}"; + private static final String CONSUMER_URI_plugins = "/consumers/{customerId}/plugins"; + private static final String CREDENTIALS_URI = "/consumers/{customerId}/{entityName}"; + private static final String CREDENTIALS_URI_ID = "/consumers/{customerId}/{entityName}/{entityId}"; @Autowired private ConsumerService consumerService; + @Autowired + private PluginService pluginService; + /** * 查询所有upstream * @@ -41,6 +51,48 @@ public class ConsumerController extends BaseController { return jsonHeaderWrapper; } + @RequestMapping(value = CONSUMER_URI_plugins, method = {RequestMethod.POST}) + public JsonHeaderWrapper findAllPlugin(UserInfo userInfo, @PathVariable String customerId, @RequestBody SystemProfile systemProfile) { + JsonHeaderWrapper jsonHeaderWrapper = this.init(); + try { + SystemProfile activeClient = this.systemProfile(userInfo); + KongEntity pluginVOKongEntity = pluginService.findAllByConsumer(systemProfile.IS_NULL() ? activeClient : systemProfile, customerId); + jsonHeaderWrapper.setData(pluginVOKongEntity.getData()); + } catch (Exception e) { + jsonHeaderWrapper.setStatus(JsonHeaderWrapper.StatusEnum.Failed.getCode()); + jsonHeaderWrapper.setErrmsg(e.getMessage()); + } + return jsonHeaderWrapper; + } + + + @RequestMapping(value = CREDENTIALS_URI, method = RequestMethod.GET) + public JsonHeaderWrapper findAllCredentials(UserInfo userInfo, @PathVariable String customerId, @PathVariable String entityName) { + JsonHeaderWrapper jsonHeaderWrapper = this.init(); + try { + KongEntity upstreamKongEntity = consumerService.findAllCredentials(systemProfile(userInfo), customerId, entityName); + jsonHeaderWrapper.setData(upstreamKongEntity.getData()); + } catch (Exception e) { + jsonHeaderWrapper.setStatus(JsonHeaderWrapper.StatusEnum.Failed.getCode()); + jsonHeaderWrapper.setErrmsg(e.getMessage()); + } + return jsonHeaderWrapper; + } + + @RequestMapping(value = CREDENTIALS_URI, method = RequestMethod.POST) + public JsonHeaderWrapper addCredentials(UserInfo userInfo, @RequestBody Map map, @PathVariable String customerId, @PathVariable String entityName) { + JsonHeaderWrapper jsonHeaderWrapper = this.init(); + try { + Map results = this.consumerService.addCredentials(systemProfile(userInfo), map, customerId, entityName); + jsonHeaderWrapper.setData(results); + this.log(userInfo, OperationLog.OperationType.OPERATION_ADD, OperationLog.OperationTarget.CONSUMERS, map); + } catch (Exception e) { + jsonHeaderWrapper.setStatus(JsonHeaderWrapper.StatusEnum.Failed.getCode()); + jsonHeaderWrapper.setErrmsg(e.getMessage()); + } + return jsonHeaderWrapper; + } + /** * 新增upstream * @@ -49,12 +101,12 @@ public class ConsumerController extends BaseController { * @throws URISyntaxException */ @RequestMapping(value = CONSUMER_URI, method = RequestMethod.POST) - public JsonHeaderWrapper addUpstream(UserInfo userInfo, @RequestBody Consumer consumer) { + public JsonHeaderWrapper add(UserInfo userInfo, @RequestBody Consumer consumer) { JsonHeaderWrapper jsonHeaderWrapper = this.init(); try { Consumer results = this.consumerService.add(systemProfile(userInfo), consumer.trim()); jsonHeaderWrapper.setData(results); - this.log(userInfo, OperationLog.OperationType.OPERATION_ADD, OperationLog.OperationTarget.UPSTREAM, consumer.getUsername()); + this.log(userInfo, OperationLog.OperationType.OPERATION_ADD, OperationLog.OperationTarget.CONSUMERS, consumer.getUsername()); } catch (Exception e) { jsonHeaderWrapper.setStatus(JsonHeaderWrapper.StatusEnum.Failed.getCode()); jsonHeaderWrapper.setErrmsg(e.getMessage()); @@ -76,7 +128,7 @@ public class ConsumerController extends BaseController { try { Consumer results = this.consumerService.update(systemProfile(userInfo), id, consumer.trim()); jsonHeaderWrapper.setData(results); - this.log(userInfo, OperationLog.OperationType.OPERATION_UPDATE, OperationLog.OperationTarget.UPSTREAM, consumer, consumer.getUsername()); + this.log(userInfo, OperationLog.OperationType.OPERATION_UPDATE, OperationLog.OperationTarget.CONSUMERS, consumer, consumer.getUsername()); } catch (Exception e) { jsonHeaderWrapper.setStatus(JsonHeaderWrapper.StatusEnum.Failed.getCode()); jsonHeaderWrapper.setErrmsg(e.getMessage()); @@ -85,19 +137,34 @@ public class ConsumerController extends BaseController { } /** - * 删除consumer + * 删除credential * - * @param id * @return * @throws URISyntaxException */ + @RequestMapping(value = CREDENTIALS_URI_ID, method = RequestMethod.DELETE) + public JsonHeaderWrapper removeCredential(UserInfo userInfo, @PathVariable String customerId, @PathVariable String entityName, + @PathVariable String entityId) throws Exception { + JsonHeaderWrapper jsonHeaderWrapper = this.init(); + try { + KongEntity upstreamKongEntity = + this.consumerService.removeCredentials(systemProfile(userInfo), customerId, entityName, entityId); + this.log(userInfo, OperationLog.OperationType.OPERATION_DELETE, OperationLog.OperationTarget.CONSUMERS, entityId); + jsonHeaderWrapper.setData(upstreamKongEntity.getData()); + } catch (Exception e) { + jsonHeaderWrapper.setStatus(JsonHeaderWrapper.StatusEnum.Failed.getCode()); + jsonHeaderWrapper.setErrmsg(e.getMessage()); + } + return jsonHeaderWrapper; + } + @RequestMapping(value = CONSUMER_URI_ID, method = RequestMethod.DELETE) public JsonHeaderWrapper remove(UserInfo userInfo, @PathVariable String id) throws Exception { JsonHeaderWrapper jsonHeaderWrapper = this.init(); try { Consumer consumer = this.consumerService.findConsumer(systemProfile(userInfo), id); KongEntity upstreamKongEntity = this.consumerService.remove(systemProfile(userInfo), id); - this.log(userInfo, OperationLog.OperationType.OPERATION_DELETE, OperationLog.OperationTarget.UPSTREAM, consumer); + this.log(userInfo, OperationLog.OperationType.OPERATION_DELETE, OperationLog.OperationTarget.CONSUMERS, consumer); jsonHeaderWrapper.setData(upstreamKongEntity.getData()); } catch (Exception e) { jsonHeaderWrapper.setStatus(JsonHeaderWrapper.StatusEnum.Failed.getCode()); diff --git a/kongx-serve/src/main/java/com/kongx/serve/controller/gateway/ServiceController.java b/kongx-serve/src/main/java/com/kongx/serve/controller/gateway/ServiceController.java index b8dbd5a..2d5ac28 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/controller/gateway/ServiceController.java +++ b/kongx-serve/src/main/java/com/kongx/serve/controller/gateway/ServiceController.java @@ -54,7 +54,6 @@ public class ServiceController extends BaseController { JsonHeaderWrapper jsonHeaderWrapper = this.init(); try { SystemProfile activeClient = this.systemProfile(userInfo); - Service service = this.kongFeignService.find(this.systemProfile(userInfo), serviceId); KongEntity pluginVOKongEntity = pluginService.findAllPluginByService(systemProfile.IS_NULL() ? activeClient : systemProfile, serviceId); jsonHeaderWrapper.setData(pluginVOKongEntity.getData()); } catch (Exception e) { @@ -75,7 +74,7 @@ public class ServiceController extends BaseController { public JsonHeaderWrapper add(UserInfo userInfo, @RequestBody Service service) { JsonHeaderWrapper jsonHeaderWrapper = this.init(); try { - Service results = this.kongFeignService.add(systemProfile(userInfo), service); + Service results = this.kongFeignService.add(systemProfile(userInfo), service.trim()); jsonHeaderWrapper.setData(results); this.log(userInfo, OperationLog.OperationType.OPERATION_ADD, OperationLog.OperationTarget.SERVICE, results, results.getName()); } catch (Exception e) { @@ -97,7 +96,7 @@ public class ServiceController extends BaseController { public JsonHeaderWrapper update(UserInfo userInfo, @PathVariable String id, @RequestBody Service service) throws URISyntaxException { JsonHeaderWrapper jsonHeaderWrapper = this.init(); try { - Service results = this.kongFeignService.update(systemProfile(userInfo), id, service); + Service results = this.kongFeignService.update(systemProfile(userInfo), id, service.trim()); jsonHeaderWrapper.setData(results); this.log(userInfo, OperationLog.OperationType.OPERATION_UPDATE, OperationLog.OperationTarget.SERVICE, results, results.getName()); } catch (Exception e) { diff --git a/kongx-serve/src/main/java/com/kongx/serve/controller/gateway/SniController.java b/kongx-serve/src/main/java/com/kongx/serve/controller/gateway/SniController.java new file mode 100644 index 0000000..dc660dc --- /dev/null +++ b/kongx-serve/src/main/java/com/kongx/serve/controller/gateway/SniController.java @@ -0,0 +1,128 @@ +package com.kongx.serve.controller.gateway; + +import com.kongx.common.core.entity.UserInfo; +import com.kongx.common.jsonwrapper.JsonHeaderWrapper; +import com.kongx.serve.controller.BaseController; +import com.kongx.serve.entity.gateway.KongEntity; +import com.kongx.serve.entity.gateway.Sni; +import com.kongx.serve.entity.system.OperationLog; +import com.kongx.serve.service.gateway.SniService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.net.URISyntaxException; + +@RestController("sniController") +@RequestMapping("/kong/api/") +@Slf4j +public class SniController extends BaseController { + private static final String SNIS_URI = "/snis"; + private static final String SNIS_URI_ID = "/snis/{id}"; + + @Autowired + private SniService sniService; + + /** + * 查询所有sni + * + * @return + */ + @RequestMapping(value = SNIS_URI, method = RequestMethod.GET) + public JsonHeaderWrapper findAll(UserInfo userInfo) { + JsonHeaderWrapper jsonHeaderWrapper = this.init(); + try { + KongEntity upstreamKongEntity = sniService.findAll(systemProfile(userInfo)); + jsonHeaderWrapper.setData(upstreamKongEntity.getData()); + } catch (Exception e) { + jsonHeaderWrapper.setStatus(JsonHeaderWrapper.StatusEnum.Failed.getCode()); + jsonHeaderWrapper.setErrmsg(e.getMessage()); + } + return jsonHeaderWrapper; + } + + /** + * 新增upstream + * + * @param sni + * @return + * @throws URISyntaxException + */ + @RequestMapping(value = SNIS_URI, method = RequestMethod.POST) + public JsonHeaderWrapper addUpstream(UserInfo userInfo, @RequestBody Sni sni) { + JsonHeaderWrapper jsonHeaderWrapper = this.init(); + try { + Sni results = this.sniService.add(systemProfile(userInfo), sni.trim()); + jsonHeaderWrapper.setData(results); + this.log(userInfo, OperationLog.OperationType.OPERATION_ADD, OperationLog.OperationTarget.SNI, sni); + } catch (Exception e) { + jsonHeaderWrapper.setStatus(JsonHeaderWrapper.StatusEnum.Failed.getCode()); + jsonHeaderWrapper.setErrmsg(e.getMessage()); + } + return jsonHeaderWrapper; + } + + /** + * 更新consumer + * + * @param id + * @param sni + * @return + * @throws URISyntaxException + */ + @RequestMapping(value = SNIS_URI_ID, method = RequestMethod.POST) + public JsonHeaderWrapper update(UserInfo userInfo, @PathVariable String id, @RequestBody Sni sni) { + JsonHeaderWrapper jsonHeaderWrapper = this.init(); + try { + Sni results = this.sniService.update(systemProfile(userInfo), id, sni.trim()); + jsonHeaderWrapper.setData(results); + this.log(userInfo, OperationLog.OperationType.OPERATION_UPDATE, OperationLog.OperationTarget.SNI, sni, sni.getName()); + } catch (Exception e) { + jsonHeaderWrapper.setStatus(JsonHeaderWrapper.StatusEnum.Failed.getCode()); + jsonHeaderWrapper.setErrmsg(e.getMessage()); + } + return jsonHeaderWrapper; + } + + /** + * 删除sni + * + * @param id + * @return + * @throws URISyntaxException + */ + @RequestMapping(value = SNIS_URI_ID, method = RequestMethod.DELETE) + public JsonHeaderWrapper remove(UserInfo userInfo, @PathVariable String id) throws Exception { + JsonHeaderWrapper jsonHeaderWrapper = this.init(); + try { + Sni sni = this.sniService.findEntity(systemProfile(userInfo), id); + KongEntity upstreamKongEntity = this.sniService.remove(systemProfile(userInfo), id); + this.log(userInfo, OperationLog.OperationType.OPERATION_DELETE, OperationLog.OperationTarget.SNI, sni); + jsonHeaderWrapper.setData(upstreamKongEntity.getData()); + } catch (Exception e) { + jsonHeaderWrapper.setStatus(JsonHeaderWrapper.StatusEnum.Failed.getCode()); + jsonHeaderWrapper.setErrmsg(e.getMessage()); + } + return jsonHeaderWrapper; + } + + /** + * 查询单个sni的信息 + * + * @param id + * @return + * @throws URISyntaxException + */ + @RequestMapping(value = SNIS_URI_ID, method = RequestMethod.GET) + public JsonHeaderWrapper findSni(UserInfo userInfo, @PathVariable String id) { + JsonHeaderWrapper jsonHeaderWrapper = this.init(); + try { + Sni results = this.sniService.findEntity(systemProfile(userInfo), id); + jsonHeaderWrapper.setData(results); + } catch (Exception e) { + jsonHeaderWrapper.setStatus(JsonHeaderWrapper.StatusEnum.Failed.getCode()); + jsonHeaderWrapper.setErrmsg(e.getMessage()); + } + return jsonHeaderWrapper; + } +} diff --git a/kongx-serve/src/main/java/com/kongx/serve/controller/gateway/UpstreamController.java b/kongx-serve/src/main/java/com/kongx/serve/controller/gateway/UpstreamController.java index abd8064..19a2206 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/controller/gateway/UpstreamController.java +++ b/kongx-serve/src/main/java/com/kongx/serve/controller/gateway/UpstreamController.java @@ -54,11 +54,10 @@ public class UpstreamController extends BaseController { * @throws URISyntaxException */ @RequestMapping(value = UPSTREAM_URI, method = RequestMethod.POST) - @PreAuthorize("upstream_add") public JsonHeaderWrapper addUpstream(UserInfo userInfo, @RequestBody Upstream upstream) { JsonHeaderWrapper jsonHeaderWrapper = this.init(); try { - Upstream results = this.upstreamService.add(systemProfile(userInfo), upstream.clear()); + Upstream results = this.upstreamService.add(systemProfile(userInfo), upstream.trim()); jsonHeaderWrapper.setData(results); this.log(userInfo, OperationLog.OperationType.OPERATION_ADD, OperationLog.OperationTarget.UPSTREAM, upstream, upstream.getName()); } catch (Exception e) { @@ -80,7 +79,7 @@ public class UpstreamController extends BaseController { public JsonHeaderWrapper update(UserInfo userInfo, @PathVariable String id, @RequestBody Upstream upstream) { JsonHeaderWrapper jsonHeaderWrapper = this.init(); try { - Upstream results = this.upstreamService.update(systemProfile(userInfo), id, upstream.clear()); + Upstream results = this.upstreamService.update(systemProfile(userInfo), id, upstream.trim()); jsonHeaderWrapper.setData(results); this.log(userInfo, OperationLog.OperationType.OPERATION_UPDATE, OperationLog.OperationTarget.UPSTREAM, upstream, upstream.getName()); } catch (Exception e) { diff --git a/kongx-serve/src/main/java/com/kongx/serve/controller/system/ServerConfigController.java b/kongx-serve/src/main/java/com/kongx/serve/controller/system/ServerConfigController.java index f70050a..c663447 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/controller/system/ServerConfigController.java +++ b/kongx-serve/src/main/java/com/kongx/serve/controller/system/ServerConfigController.java @@ -70,7 +70,7 @@ public class ServerConfigController extends BaseController { JsonHeaderWrapper jsonHeaderWrapper = this.init(); try { ServerConfig serverConfig = this.serverConfigService.findByKey(key); - jsonHeaderWrapper.setData(Jackson2Helper.parsonObject(serverConfig.getConfigValue(), new TypeReference() { + jsonHeaderWrapper.setData(Jackson2Helper.parsonObject(serverConfig.getConfigValue().toString(), new TypeReference() { })); } catch (Exception e) { jsonHeaderWrapper.setErrmsg(e.getMessage()); diff --git a/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/CaCertificate.java b/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/CaCertificate.java new file mode 100644 index 0000000..d604e7a --- /dev/null +++ b/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/CaCertificate.java @@ -0,0 +1,34 @@ +package com.kongx.serve.entity.gateway; + +import lombok.Data; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.List; + +@Data +/** + * @since 1.3.x + */ +public class CaCertificate implements Comparable { + private Timestamp created_at; + private String cert; + private String id; + private List tags = new ArrayList<>(); + + @Override + public int compareTo(Object o) { + if (o == null) { + return 1; + } + CaCertificate sni = null; + if (o instanceof CaCertificate) { + sni = (CaCertificate) o; + } + return sni.created_at.compareTo(this.created_at); + } + + public CaCertificate trim() { + return this; + } +} diff --git a/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Certificate.java b/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Certificate.java new file mode 100644 index 0000000..160aa39 --- /dev/null +++ b/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Certificate.java @@ -0,0 +1,33 @@ +package com.kongx.serve.entity.gateway; + +import lombok.Data; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.List; + +@Data +public class Certificate implements Comparable { + private Timestamp created_at; + private String cert; + private String key; + private String id; + private List tags = new ArrayList<>(); + private List snis = new ArrayList<>(); + + @Override + public int compareTo(Object o) { + if (o == null) { + return 1; + } + Certificate sni = null; + if (o instanceof Certificate) { + sni = (Certificate) o; + } + return sni.created_at.compareTo(this.created_at); + } + + public Certificate trim() { + return this; + } +} diff --git a/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/EntityId.java b/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/EntityId.java index f6912f0..79094bb 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/EntityId.java +++ b/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/EntityId.java @@ -1,6 +1,6 @@ /** - * Copyright 2019 bejson.com - */ + * Copyright 2019 bejson.com + */ package com.kongx.serve.entity.gateway; /** @@ -12,11 +12,12 @@ package com.kongx.serve.entity.gateway; public class EntityId { private String id; - public void setId(String id) { - this.id = id; - } - public String getId() { - return id; - } + public void setId(String id) { + this.id = id; + } + + public String getId() { + return id; + } } \ No newline at end of file diff --git a/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Plugin.java b/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Plugin.java index 50ec7ba..be520d7 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Plugin.java +++ b/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Plugin.java @@ -28,7 +28,7 @@ public class Plugin implements Comparable { private List protocols; private boolean enabled; private String run_on; - private String consumer; + private EntityId consumer; private EntityId route; private String tags; diff --git a/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/PluginVO.java b/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/PluginVO.java index 72f1228..15a275c 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/PluginVO.java +++ b/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/PluginVO.java @@ -27,7 +27,7 @@ public class PluginVO extends Plugin { private List protocols; private boolean enabled; private String run_on; - private String consumer; + private EntityId consumer; private EntityId route; private String tags; private String scope = "global"; diff --git a/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Route.java b/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Route.java index 16b2ef9..d75c69b 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Route.java +++ b/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Route.java @@ -19,7 +19,7 @@ import java.util.List; public class Route implements Comparable { private String id; - private String tags; + private List tags = new ArrayList<>(); private List paths = new ArrayList<>(); private String destinations; private List protocols; diff --git a/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Service.java b/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Service.java index 6ded49d..2cb5f33 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Service.java +++ b/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Service.java @@ -15,7 +15,7 @@ import java.util.List; * @website http://www.bejson.com/java2pojo/ */ @Data -public class Service implements Comparable { +public class Service implements Comparable { private String host; private Timestamp created_at; @@ -29,6 +29,10 @@ public class Service implements Comparable { private long updated_at; private int retries; private int write_timeout; + /** + * @since 1.3.x + */ + private EntityId client_certificate; private List tags; @Override @@ -44,8 +48,11 @@ public class Service implements Comparable { } - public Service clear() { + public Service trim() { this.protocol = set(this.protocol); + if (this.client_certificate != null && this.client_certificate.getId() == null) { + this.client_certificate = null; + } return this; } diff --git a/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Sni.java b/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Sni.java new file mode 100644 index 0000000..991ad09 --- /dev/null +++ b/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Sni.java @@ -0,0 +1,32 @@ +package com.kongx.serve.entity.gateway; + +import lombok.Data; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.List; + +@Data +public class Sni implements Comparable { + private Timestamp created_at; + private String name; + private String id; + private List tags = new ArrayList<>(); + private EntityId certificate; + + @Override + public int compareTo(Object o) { + if (o == null) { + return 1; + } + Sni sni = null; + if (o instanceof Sni) { + sni = (Sni) o; + } + return sni.created_at.compareTo(this.created_at); + } + + public Sni trim() { + return this; + } +} diff --git a/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Upstream.java b/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Upstream.java index afec6bc..db609fc 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Upstream.java +++ b/kongx-serve/src/main/java/com/kongx/serve/entity/gateway/Upstream.java @@ -7,13 +7,18 @@ import com.kongx.serve.entity.gateway.upstream.Healthchecks; import lombok.Data; import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.List; @Data public class Upstream implements Comparable { - private Timestamp created_at; private String id; - private String tags; + /** + * @since 1.3.x + */ + private String algorithm; + private List tags = new ArrayList<>(); private String hash_on; private String hash_fallback_header; private String hash_on_header; @@ -36,7 +41,7 @@ public class Upstream implements Comparable { return upstream.created_at.compareTo(this.created_at); } - public Upstream clear() { + public Upstream trim() { this.hash_fallback = set(this.hash_fallback); this.hash_on = set(this.hash_on); this.hash_fallback_header = set(this.hash_fallback_header); @@ -44,6 +49,7 @@ public class Upstream implements Comparable { this.hash_on_cookie = set(this.hash_on_cookie); this.hash_on_cookie_path = set(this.hash_on_cookie_path); this.hash_fallback = set(this.hash_fallback); + this.algorithm = set(this.algorithm); if (this.healthchecks != null) this.healthchecks.getActive().setHttps_sni(set(this.healthchecks.getActive().getHttps_sni())); return this; diff --git a/kongx-serve/src/main/java/com/kongx/serve/entity/system/OperationLog.java b/kongx-serve/src/main/java/com/kongx/serve/entity/system/OperationLog.java index 418b5a6..ec343ea 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/entity/system/OperationLog.java +++ b/kongx-serve/src/main/java/com/kongx/serve/entity/system/OperationLog.java @@ -81,6 +81,10 @@ public class OperationLog { ROUTE("route", "路由"), SERVICE("service", "服务"), UPSTREAM("upstream", "上游服务"), + SNI("sni", "sni"), + CONSUMERS("consumers", "消费者"), + CaCertificate("ca_certificate", "CA认证"), + Certificate("certificate", "认证"), TARGETS("targets", "上游代理"), SYSTEM("system", "系统"), SYSTEM_ROLE("system_role", "系统角色"), diff --git a/kongx-serve/src/main/java/com/kongx/serve/feign/CaCertificateFeignService.java b/kongx-serve/src/main/java/com/kongx/serve/feign/CaCertificateFeignService.java new file mode 100644 index 0000000..9911fc6 --- /dev/null +++ b/kongx-serve/src/main/java/com/kongx/serve/feign/CaCertificateFeignService.java @@ -0,0 +1,8 @@ +package com.kongx.serve.feign; + +import com.kongx.serve.entity.gateway.CaCertificate; +import org.springframework.cloud.openfeign.FeignClient; + +@FeignClient(name = "caCertificateFeignService") +public interface CaCertificateFeignService extends KongFeignService { +} diff --git a/kongx-serve/src/main/java/com/kongx/serve/feign/CertificateFeignService.java b/kongx-serve/src/main/java/com/kongx/serve/feign/CertificateFeignService.java new file mode 100644 index 0000000..85d9a6e --- /dev/null +++ b/kongx-serve/src/main/java/com/kongx/serve/feign/CertificateFeignService.java @@ -0,0 +1,8 @@ +package com.kongx.serve.feign; + +import com.kongx.serve.entity.gateway.Certificate; +import org.springframework.cloud.openfeign.FeignClient; + +@FeignClient(name = "certificateFeignService") +public interface CertificateFeignService extends KongFeignService { +} diff --git a/kongx-serve/src/main/java/com/kongx/serve/feign/CredentialsFeignService.java b/kongx-serve/src/main/java/com/kongx/serve/feign/CredentialsFeignService.java new file mode 100644 index 0000000..e24a6a0 --- /dev/null +++ b/kongx-serve/src/main/java/com/kongx/serve/feign/CredentialsFeignService.java @@ -0,0 +1,9 @@ +package com.kongx.serve.feign; + +import org.springframework.cloud.openfeign.FeignClient; + +import java.util.Map; + +@FeignClient(name = "credentialsFeignService") +public interface CredentialsFeignService extends KongFeignService { +} diff --git a/kongx-serve/src/main/java/com/kongx/serve/feign/SniFeignService.java b/kongx-serve/src/main/java/com/kongx/serve/feign/SniFeignService.java new file mode 100644 index 0000000..7beb379 --- /dev/null +++ b/kongx-serve/src/main/java/com/kongx/serve/feign/SniFeignService.java @@ -0,0 +1,8 @@ +package com.kongx.serve.feign; + +import com.kongx.serve.entity.gateway.Sni; +import org.springframework.cloud.openfeign.FeignClient; + +@FeignClient(name = "sniFeignService") +public interface SniFeignService extends KongFeignService { +} diff --git a/kongx-serve/src/main/java/com/kongx/serve/feign/UpstreamMapFeignService.java b/kongx-serve/src/main/java/com/kongx/serve/feign/UpstreamMapFeignService.java new file mode 100644 index 0000000..f18a755 --- /dev/null +++ b/kongx-serve/src/main/java/com/kongx/serve/feign/UpstreamMapFeignService.java @@ -0,0 +1,9 @@ +package com.kongx.serve.feign; + +import org.springframework.cloud.openfeign.FeignClient; + +import java.util.Map; + +@FeignClient(name = "upstreamMapFeignService") +public interface UpstreamMapFeignService extends KongFeignService { +} diff --git a/kongx-serve/src/main/java/com/kongx/serve/service/AbstractService.java b/kongx-serve/src/main/java/com/kongx/serve/service/AbstractCacheService.java similarity index 98% rename from kongx-serve/src/main/java/com/kongx/serve/service/AbstractService.java rename to kongx-serve/src/main/java/com/kongx/serve/service/AbstractCacheService.java index c1c8d21..5e23de5 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/service/AbstractService.java +++ b/kongx-serve/src/main/java/com/kongx/serve/service/AbstractCacheService.java @@ -15,7 +15,7 @@ import java.net.URISyntaxException; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; -public abstract class AbstractService { +public abstract class AbstractCacheService { @Autowired protected ServerConfigService serverConfigService; diff --git a/kongx-serve/src/main/java/com/kongx/serve/service/GatewayService.java b/kongx-serve/src/main/java/com/kongx/serve/service/GatewayService.java new file mode 100644 index 0000000..5fd8523 --- /dev/null +++ b/kongx-serve/src/main/java/com/kongx/serve/service/GatewayService.java @@ -0,0 +1,78 @@ +package com.kongx.serve.service; + +import com.kongx.serve.entity.gateway.KongEntity; +import com.kongx.serve.entity.system.SystemProfile; +import com.kongx.serve.feign.KongFeignService; + +import java.net.URISyntaxException; + +public abstract class GatewayService extends AbstractCacheService> { + + protected KongFeignService kongFeignService; + + protected String CACHE_KEY; + + protected String ENTITY_URI = ""; + protected String ENTITY_URI_ID = ""; + + /** + * 查询所有upstream + * + * @return + */ + public KongEntity findAll(SystemProfile systemProfile) { + return this.get(systemProfile, CACHE_KEY).getData(); + } + + /** + * 新增upstream + * + * @param entity + * @return + * @throws URISyntaxException + */ + public T add(SystemProfile systemProfile, T entity) throws Exception { + T results = this.kongFeignService.add(uri(systemProfile, ENTITY_URI), entity); + refresh(systemProfile, CACHE_KEY); + return results; + } + + /** + * 更新sni + * + * @param id + * @param entity + * @return + * @throws URISyntaxException + */ + public T update(SystemProfile systemProfile, String id, T entity) throws Exception { + T results = this.kongFeignService.update(uri(systemProfile, String.format(ENTITY_URI_ID, id)), entity); + refresh(systemProfile, CACHE_KEY); + return results; + } + + /** + * 删除sni + * + * @param id + * @return + * @throws URISyntaxException + */ + public KongEntity remove(SystemProfile systemProfile, String id) throws Exception { + this.kongFeignService.remove(uri(systemProfile, String.format(ENTITY_URI_ID, id))); + return refresh(systemProfile, CACHE_KEY).getData(); + } + + /** + * 查询单个sni的信息 + * + * @param id + * @return + * @throws URISyntaxException + */ + public T findEntity(SystemProfile systemProfile, String id) throws URISyntaxException { + return this.kongFeignService.findById(uri(systemProfile, String.format(ENTITY_URI_ID, id))); + } + + +} diff --git a/kongx-serve/src/main/java/com/kongx/serve/service/gateway/CaCertificateService.java b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/CaCertificateService.java new file mode 100644 index 0000000..76682a1 --- /dev/null +++ b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/CaCertificateService.java @@ -0,0 +1,47 @@ +package com.kongx.serve.service.gateway; + +import com.kongx.common.cache.CacheResults; +import com.kongx.serve.entity.gateway.CaCertificate; +import com.kongx.serve.entity.gateway.KongEntity; +import com.kongx.serve.feign.CaCertificateFeignService; +import com.kongx.serve.service.GatewayService; +import feign.Feign; +import feign.RequestInterceptor; +import feign.Target; +import feign.codec.Decoder; +import feign.codec.Encoder; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.openfeign.FeignClientsConfiguration; +import org.springframework.context.annotation.Import; +import org.springframework.stereotype.Service; + +import java.net.URISyntaxException; +import java.util.Collections; + +@Service("caCertificateService") +@Import(FeignClientsConfiguration.class) +@Slf4j +public class CaCertificateService extends GatewayService { + @Autowired + public CaCertificateService(Decoder decoder, Encoder encoder, RequestInterceptor requestInterceptor) { + kongFeignService = Feign.builder().encoder(encoder).decoder(decoder) + .requestInterceptor(requestInterceptor).target(Target.EmptyTarget.create(CaCertificateFeignService.class)); + ENTITY_URI = "/ca_certificates"; + ENTITY_URI_ID = "/ca_certificates/%s"; + CACHE_KEY = "LISTS"; + } + + @Override + protected String prefix() { + return "CaCertificates"; + } + + @Override + protected CacheResults> loadFromClient(KongCacheKey key) throws URISyntaxException { + log.info("Loading Services {} from kong client!", key); + KongEntity kongEntity = this.kongFeignService.findAll(uri(key.getSystemProfile(), ENTITY_URI)); + Collections.sort(kongEntity.getData()); + return new CacheResults<>(kongEntity); + } +} diff --git a/kongx-serve/src/main/java/com/kongx/serve/service/gateway/CertificateService.java b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/CertificateService.java new file mode 100644 index 0000000..9b89be4 --- /dev/null +++ b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/CertificateService.java @@ -0,0 +1,47 @@ +package com.kongx.serve.service.gateway; + +import com.kongx.common.cache.CacheResults; +import com.kongx.serve.entity.gateway.Certificate; +import com.kongx.serve.entity.gateway.KongEntity; +import com.kongx.serve.feign.CertificateFeignService; +import com.kongx.serve.service.GatewayService; +import feign.Feign; +import feign.RequestInterceptor; +import feign.Target; +import feign.codec.Decoder; +import feign.codec.Encoder; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.openfeign.FeignClientsConfiguration; +import org.springframework.context.annotation.Import; +import org.springframework.stereotype.Service; + +import java.net.URISyntaxException; +import java.util.Collections; + +@Service("certificateService") +@Import(FeignClientsConfiguration.class) +@Slf4j +public class CertificateService extends GatewayService { + @Autowired + public CertificateService(Decoder decoder, Encoder encoder, RequestInterceptor requestInterceptor) { + kongFeignService = Feign.builder().encoder(encoder).decoder(decoder) + .requestInterceptor(requestInterceptor).target(Target.EmptyTarget.create(CertificateFeignService.class)); + ENTITY_URI = "/certificates"; + ENTITY_URI_ID = "/certificates/%s"; + CACHE_KEY = "LISTS"; + } + + @Override + protected String prefix() { + return "Certificates"; + } + + @Override + protected CacheResults> loadFromClient(KongCacheKey key) throws URISyntaxException { + log.info("Loading Services {} from kong client!", key); + KongEntity kongEntity = this.kongFeignService.findAll(uri(key.getSystemProfile(), ENTITY_URI)); + Collections.sort(kongEntity.getData()); + return new CacheResults<>(kongEntity); + } +} diff --git a/kongx-serve/src/main/java/com/kongx/serve/service/gateway/ConsumerService.java b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/ConsumerService.java index 12bce62..d95be41 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/service/gateway/ConsumerService.java +++ b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/ConsumerService.java @@ -1,12 +1,14 @@ package com.kongx.serve.service.gateway; +import com.github.pagehelper.util.StringUtil; import com.kongx.common.cache.CacheResults; import com.kongx.serve.entity.gateway.Consumer; import com.kongx.serve.entity.gateway.KongEntity; import com.kongx.serve.entity.system.SystemProfile; import com.kongx.serve.feign.ConsumerFeignService; +import com.kongx.serve.feign.CredentialsFeignService; import com.kongx.serve.feign.KongFeignService; -import com.kongx.serve.service.AbstractService; +import com.kongx.serve.service.AbstractCacheService; import feign.Feign; import feign.RequestInterceptor; import feign.Target; @@ -20,23 +22,29 @@ import org.springframework.stereotype.Service; import java.net.URISyntaxException; import java.util.Collections; +import java.util.HashMap; +import java.util.Map; @Service("ConsumerService") @Import(FeignClientsConfiguration.class) @Slf4j -public class ConsumerService extends AbstractService> { +public class ConsumerService extends AbstractCacheService> { private static final String CONSUMER_URI = "/consumers"; private static final String CONSUMER_URI_ID = "/consumers/%s"; + private static final String CREDENTIALS_URI = "/consumers/%s/%s"; + private static final String CREDENTIALS_URI_ID = "/consumers/%s/%s/%s"; private static final String CACHE_CONSUMERS_KEY = "LISTS"; private KongFeignService kongFeignService; + private KongFeignService credentialsFeignService; @Autowired public ConsumerService(Decoder decoder, Encoder encoder, RequestInterceptor requestInterceptor) { kongFeignService = Feign.builder().encoder(encoder).decoder(decoder) - .requestInterceptor(requestInterceptor).target(Target.EmptyTarget.create(ConsumerFeignService.class)) - ; + .requestInterceptor(requestInterceptor).target(Target.EmptyTarget.create(ConsumerFeignService.class)); + credentialsFeignService = Feign.builder().encoder(encoder).decoder(decoder) + .requestInterceptor(requestInterceptor).target(Target.EmptyTarget.create(CredentialsFeignService.class)); } /** @@ -48,6 +56,31 @@ public class ConsumerService extends AbstractService> { return this.get(systemProfile, CACHE_CONSUMERS_KEY).getData(); } + public KongEntity findAllCredentials(SystemProfile systemProfile, String customerId, String credentials) throws URISyntaxException { + return this.credentialsFeignService.findAll(uri(systemProfile, String.format(CREDENTIALS_URI, customerId, credentials))); + } + + public Map addCredentials(SystemProfile systemProfile, Map map, String customerId, String credentials) throws URISyntaxException { + return this.credentialsFeignService.add(uri(systemProfile, String.format(CREDENTIALS_URI, customerId, credentials)), trim(map)); + } + + private Map trim(Map map) { + Map results = new HashMap(); + + map.keySet().stream().forEach((key) -> { + Object value = map.get(key); + if (value != null && !StringUtil.isEmpty(value.toString())) { + results.put(key, value); + } + }); + return results; + } + + public KongEntity removeCredentials(SystemProfile systemProfile, String customerId, String credentials, String id) throws Exception { + this.credentialsFeignService.remove(uri(systemProfile, String.format(CREDENTIALS_URI_ID, customerId, credentials, id))); + return this.findAllCredentials(systemProfile, customerId, credentials); + } + /** * 新增upstream * diff --git a/kongx-serve/src/main/java/com/kongx/serve/service/gateway/KongInfoService.java b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/KongInfoService.java index 8396a26..fbfd539 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/service/gateway/KongInfoService.java +++ b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/KongInfoService.java @@ -2,7 +2,7 @@ package com.kongx.serve.service.gateway; import com.kongx.serve.entity.system.SystemProfile; import com.kongx.serve.feign.KongInfoFeignService; -import com.kongx.serve.service.AbstractService; +import com.kongx.serve.service.AbstractCacheService; import feign.Feign; import feign.Target; import feign.codec.Decoder; @@ -19,7 +19,7 @@ import java.util.Map; @Slf4j @Service("kongInfoService") @Import(FeignClientsConfiguration.class) -public class KongInfoService extends AbstractService { +public class KongInfoService extends AbstractCacheService { private static final String INFO_URI = "/"; private static final String STATUS_URI = "/status"; diff --git a/kongx-serve/src/main/java/com/kongx/serve/service/gateway/PluginService.java b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/PluginService.java index ff832ad..34ec465 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/service/gateway/PluginService.java +++ b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/PluginService.java @@ -4,7 +4,7 @@ import com.kongx.serve.entity.gateway.*; import com.kongx.serve.entity.system.SystemProfile; import com.kongx.serve.feign.PluginFeignService; import com.kongx.serve.feign.PluginVOFeignService; -import com.kongx.serve.service.AbstractService; +import com.kongx.serve.service.AbstractCacheService; import feign.Feign; import feign.Target; import feign.codec.Decoder; @@ -23,10 +23,11 @@ import java.util.Map; @Slf4j @Component("pluginService") @Import(FeignClientsConfiguration.class) -public class PluginService extends AbstractService { +public class PluginService extends AbstractCacheService { private static final String PLUGIN_URI = "/plugins"; private static final String PLUGIN_ROUTE_URI = "/routes/%s/plugins"; private static final String PLUGIN_SERVICE_URI = "/services/%s/plugins"; + private static final String PLUGIN_CONSUMER_URI = "/consumers/%s/plugins"; private static final String PLUGIN_URI_ID = "/plugins/%s"; private static final String PLUGIN_URI_SCHEMA_NAME = "/plugins/schema/%s"; @@ -101,6 +102,12 @@ public class PluginService extends AbstractService { return routeKongEntity; } + public KongEntity findAllByConsumer(SystemProfile systemProfile, String serviceId) throws URISyntaxException { + KongEntity routeKongEntity = this.pluginVOFeignService.findAll(uri(systemProfile, String.format(PLUGIN_CONSUMER_URI, serviceId))); + Collections.sort(routeKongEntity.getData()); + return routeKongEntity; + } + public Plugin add(SystemProfile systemProfile, Plugin plugin) throws URISyntaxException { return this.kongFeignService.add(uri(systemProfile, PLUGIN_URI), plugin); } @@ -113,6 +120,10 @@ public class PluginService extends AbstractService { return this.kongFeignService.add(uri(systemProfile, String.format(PLUGIN_SERVICE_URI, serviceId)), plugin); } + public Plugin addByConsumer(SystemProfile systemProfile, String consumerId, Plugin plugin) throws URISyntaxException { + return this.kongFeignService.add(uri(systemProfile, String.format(PLUGIN_CONSUMER_URI, consumerId)), plugin); + } + public Plugin update(SystemProfile systemProfile, String id, Plugin plugin) throws URISyntaxException { //先删除,再更新 try { diff --git a/kongx-serve/src/main/java/com/kongx/serve/service/gateway/RouteService.java b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/RouteService.java index 4fe3aa6..88587b2 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/service/gateway/RouteService.java +++ b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/RouteService.java @@ -7,7 +7,7 @@ import com.kongx.serve.entity.gateway.KongEntity; import com.kongx.serve.entity.gateway.Route; import com.kongx.serve.feign.KongFeignService; import com.kongx.serve.feign.RouteFeignService; -import com.kongx.serve.service.AbstractService; +import com.kongx.serve.service.AbstractCacheService; import feign.Feign; import feign.Target; import feign.codec.Decoder; @@ -24,7 +24,7 @@ import java.util.Collections; @Slf4j @Component("routeService") @Import(FeignClientsConfiguration.class) -public class RouteService extends AbstractService> { +public class RouteService extends AbstractCacheService> { private static final String CACHE_ROUTES_KEY = "LISTS"; private static final String ROUTE_URI = "/routes"; private static final String ROUTE_URI_ID = "/routes/%s"; diff --git a/kongx-serve/src/main/java/com/kongx/serve/service/gateway/ServiceService.java b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/ServiceService.java index ef42885..abd71ca 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/service/gateway/ServiceService.java +++ b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/ServiceService.java @@ -6,7 +6,7 @@ import com.kongx.serve.entity.gateway.KongEntity; import com.kongx.serve.entity.gateway.Service; import com.kongx.serve.feign.KongFeignService; import com.kongx.serve.feign.ServiceFeignService; -import com.kongx.serve.service.AbstractService; +import com.kongx.serve.service.AbstractCacheService; import feign.Feign; import feign.Target; import feign.codec.Decoder; @@ -22,7 +22,7 @@ import java.util.Collections; @Slf4j @org.springframework.stereotype.Service("serviceService") @Import(FeignClientsConfiguration.class) -public class ServiceService extends AbstractService> { +public class ServiceService extends AbstractCacheService> { private static final String CACHE_SERVICES_KEY = "LISTS"; private static final String SERVICE_URI = "/services"; private static final String SERVICE_URI_ID = "/services/%s"; diff --git a/kongx-serve/src/main/java/com/kongx/serve/service/gateway/SniService.java b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/SniService.java new file mode 100644 index 0000000..c797a95 --- /dev/null +++ b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/SniService.java @@ -0,0 +1,47 @@ +package com.kongx.serve.service.gateway; + +import com.kongx.common.cache.CacheResults; +import com.kongx.serve.entity.gateway.KongEntity; +import com.kongx.serve.entity.gateway.Sni; +import com.kongx.serve.feign.SniFeignService; +import com.kongx.serve.service.GatewayService; +import feign.Feign; +import feign.RequestInterceptor; +import feign.Target; +import feign.codec.Decoder; +import feign.codec.Encoder; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.openfeign.FeignClientsConfiguration; +import org.springframework.context.annotation.Import; +import org.springframework.stereotype.Service; + +import java.net.URISyntaxException; +import java.util.Collections; + +@Service("sniService") +@Import(FeignClientsConfiguration.class) +@Slf4j +public class SniService extends GatewayService { + @Autowired + public SniService(Decoder decoder, Encoder encoder, RequestInterceptor requestInterceptor) { + kongFeignService = Feign.builder().encoder(encoder).decoder(decoder) + .requestInterceptor(requestInterceptor).target(Target.EmptyTarget.create(SniFeignService.class)); + ENTITY_URI = "/snis"; + ENTITY_URI_ID = "/snis/%s"; + CACHE_KEY = "LISTS"; + } + + @Override + protected String prefix() { + return "SNIS"; + } + + @Override + protected CacheResults> loadFromClient(KongCacheKey key) throws URISyntaxException { + log.info("Loading Services {} from kong client!", key); + KongEntity kongEntity = this.kongFeignService.findAll(uri(key.getSystemProfile(), ENTITY_URI)); + Collections.sort(kongEntity.getData()); + return new CacheResults<>(kongEntity); + } +} diff --git a/kongx-serve/src/main/java/com/kongx/serve/service/gateway/TargetService.java b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/TargetService.java index 54f7bf9..7949f75 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/service/gateway/TargetService.java +++ b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/TargetService.java @@ -7,7 +7,7 @@ import com.kongx.serve.entity.gateway.TargetHealth; import com.kongx.serve.feign.KongFeignService; import com.kongx.serve.feign.TargetFeignService; import com.kongx.serve.feign.TargetHealthFeignService; -import com.kongx.serve.service.AbstractService; +import com.kongx.serve.service.AbstractCacheService; import feign.Feign; import feign.codec.Decoder; import feign.codec.Encoder; @@ -22,7 +22,7 @@ import java.net.URISyntaxException; @Service("targetService") @Import(FeignClientsConfiguration.class) @Slf4j -public class TargetService extends AbstractService { +public class TargetService extends AbstractCacheService { private static final String TARGET_URI = "/upstreams/%s/targets"; private static final String TARGET_URI_HEALTH = "/upstreams/%s/health/"; private static final String TARGET_URI_ID = "/upstreams/%s/targets/%s"; diff --git a/kongx-serve/src/main/java/com/kongx/serve/service/gateway/UpstreamService.java b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/UpstreamService.java index 2237350..ccbfc6b 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/service/gateway/UpstreamService.java +++ b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/UpstreamService.java @@ -2,11 +2,11 @@ package com.kongx.serve.service.gateway; import com.kongx.common.cache.CacheResults; import com.kongx.serve.entity.gateway.KongEntity; -import com.kongx.serve.entity.system.SystemProfile; import com.kongx.serve.entity.gateway.Upstream; +import com.kongx.serve.entity.system.SystemProfile; import com.kongx.serve.feign.KongFeignService; import com.kongx.serve.feign.UpstreamFeignService; -import com.kongx.serve.service.AbstractService; +import com.kongx.serve.service.AbstractCacheService; import feign.Feign; import feign.RequestInterceptor; import feign.Target; @@ -24,7 +24,7 @@ import java.util.Collections; @Service("upstreamService") @Import(FeignClientsConfiguration.class) @Slf4j -public class UpstreamService extends AbstractService> { +public class UpstreamService extends AbstractCacheService> { private static final String UPSTREAM_URI = "/upstreams"; private static final String UPSTREAM_URI_ID = "/upstreams/%s"; diff --git a/kongx-serve/src/main/java/com/kongx/serve/service/gateway/handler/AbstractSyncHandler.java b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/handler/AbstractSyncHandler.java index bc0cf08..0e86445 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/service/gateway/handler/AbstractSyncHandler.java +++ b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/handler/AbstractSyncHandler.java @@ -38,11 +38,35 @@ public abstract class AbstractSyncHandler implements ISyncHandler { @Autowired protected SyncLogService syncLogService; + @Autowired + protected SniService sniService; + + @Autowired + protected ConsumerService consumerService; + + @Autowired + protected CertificateService certificateService; + + @Autowired + protected CaCertificateService caCertificateService; + + + protected SyncLog syncLog(SyncConfig syncConfig, Object content, SystemProfile src, SystemProfile dest, String comment) { + SyncLog syncLog = new SyncLog(); + syncLog.setContent(content); + syncLog.setSyncNo(syncConfig.getSyncNo()); + syncLog.setSrc_client(src.getUrl()); + syncLog.setDest_client(dest.getUrl()); + syncLog.setComment(comment); + return syncLog; + } protected SyncLog syncLog(SyncConfig syncConfig, Object content, Service service, SystemProfile src, SystemProfile dest) { SyncLog syncLog = new SyncLog(); syncLog.setContent(content); - syncLog.setService(service.getName()); + if (service != null) { + syncLog.setService(service.getName()); + } syncLog.setSyncNo(syncConfig.getSyncNo()); syncLog.setSrc_client(src.getUrl()); syncLog.setDest_client(dest.getUrl()); diff --git a/kongx-serve/src/main/java/com/kongx/serve/service/gateway/handler/DefaultSyncHandler.java b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/handler/DefaultSyncHandler.java index 8261773..3ec1b39 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/service/gateway/handler/DefaultSyncHandler.java +++ b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/handler/DefaultSyncHandler.java @@ -1,10 +1,12 @@ package com.kongx.serve.service.gateway.handler; -import com.kongx.serve.entity.system.SystemProfile; import com.kongx.serve.entity.gateway.Service; import com.kongx.serve.entity.gateway.SyncConfig; +import com.kongx.serve.entity.system.SystemProfile; import com.kongx.serve.service.gateway.ISyncHandler; +import org.springframework.stereotype.Component; +@Component("defaultSyncHandler") public class DefaultSyncHandler extends AbstractSyncHandler { @Override public ISyncHandler handler(SystemProfile srcClient, SystemProfile destClient, Service service, SyncConfig syncConfig, Object... values) throws Exception { diff --git a/kongx-serve/src/main/java/com/kongx/serve/service/gateway/handler/SyncConsumersHandler.java b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/handler/SyncConsumersHandler.java new file mode 100644 index 0000000..15ebfa8 --- /dev/null +++ b/kongx-serve/src/main/java/com/kongx/serve/service/gateway/handler/SyncConsumersHandler.java @@ -0,0 +1,46 @@ +package com.kongx.serve.service.gateway.handler; + +import com.kongx.serve.entity.gateway.*; +import com.kongx.serve.entity.system.SystemProfile; +import com.kongx.serve.service.gateway.ISyncHandler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +@Slf4j +@Component("syncConsumersHandler") +public class SyncConsumersHandler extends SyncPluginsHandler { + + + @Override + public ISyncHandler handler(SystemProfile srcClient, SystemProfile destClient, Service service, SyncConfig syncConfig, Object... values) throws Exception { + KongEntity consumerKongEntity = this.consumerService.findAll(srcClient); + consumerKongEntity.getData().forEach((consumer -> { + try { + this.syncEntity(syncConfig, consumer, srcClient, destClient); + } catch (Exception e) { + e.printStackTrace(); + } + })); + return null; + } + + private void syncEntity(SyncConfig syncConfig, Consumer consumer, SystemProfile srcClient, SystemProfile destClient) throws Exception { + KongEntity plugins = pluginService.findAllByConsumer(srcClient, consumer.getId()); + this.consumerService.update(destClient, consumer.getId(), consumer); + for (PluginVO plugin : plugins.getData()) { + EntityId entityId = new EntityId(); + entityId.setId(consumer.getId()); + plugin.setService(entityId); + if (consumer != null) { + plugin.setScope("global"); + Map map = new HashMap(); + map.put("name", consumer.getId()); + plugin.setApplyObject(map); + } + this.syncPlugin(syncConfig, plugin, null, srcClient, destClient); + } + } +} diff --git a/kongx-serve/src/main/java/com/kongx/serve/service/system/ServerConfigService.java b/kongx-serve/src/main/java/com/kongx/serve/service/system/ServerConfigService.java index aafb956..c0c58a5 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/service/system/ServerConfigService.java +++ b/kongx-serve/src/main/java/com/kongx/serve/service/system/ServerConfigService.java @@ -4,7 +4,7 @@ import com.kongx.common.cache.CacheResults; import com.kongx.serve.entity.system.ServerConfig; import com.kongx.serve.entity.system.SystemProfile; import com.kongx.serve.mapper.ServerConfigMapper; -import com.kongx.serve.service.AbstractService; +import com.kongx.serve.service.AbstractCacheService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -15,7 +15,7 @@ import java.util.List; @Slf4j @Service("ServerConfigService") -public class ServerConfigService extends AbstractService> { +public class ServerConfigService extends AbstractCacheService> { private static final String SERVERS_CONFIGS_KEY = "LISTS"; @Autowired private ServerConfigMapper serverConfigMapper; @@ -48,7 +48,7 @@ public class ServerConfigService extends AbstractService> { public URI findUriByCode(SystemProfile systemProfile, String code) throws Exception { ServerConfig serverConfig = serverConfigService.findByKey(code); - SystemProfile.System system = systemProfile.to(serverConfig.getConfigValue()); + SystemProfile.System system = systemProfile.to(serverConfig.getConfigValue().toString()); if (system == null) throw new Exception("Please set Hot config url"); String url = system.getUrl(); if (url.endsWith("/")) { diff --git a/kongx-serve/src/main/java/com/kongx/serve/service/system/SystemProfileService.java b/kongx-serve/src/main/java/com/kongx/serve/service/system/SystemProfileService.java index a2c6df9..045c5cb 100644 --- a/kongx-serve/src/main/java/com/kongx/serve/service/system/SystemProfileService.java +++ b/kongx-serve/src/main/java/com/kongx/serve/service/system/SystemProfileService.java @@ -4,7 +4,7 @@ import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import com.kongx.serve.entity.system.SystemProfile; import com.kongx.serve.mapper.SystemProfileMapper; -import com.kongx.serve.service.AbstractService; +import com.kongx.serve.service.AbstractCacheService; import com.kongx.serve.service.gateway.KongInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -15,7 +15,7 @@ import java.util.List; import java.util.Map; @Service("SystemProfileService") -public class SystemProfileService extends AbstractService { +public class SystemProfileService extends AbstractCacheService { @Autowired private SystemProfileMapper systemProfileMapper;