Skip to content

Commit

Permalink
perf($api-gateway): set Swagger ignored URL on Consul
Browse files Browse the repository at this point in the history
set Swagger ignored URL on Consul

BREAKING CHANGE: refactor MafConfiguration.java; update configuration key
  • Loading branch information
johnnymillergh committed Feb 9, 2021
1 parent 09594c4 commit 699dd0a
Show file tree
Hide file tree
Showing 15 changed files with 181 additions and 175 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.jmsoftware.maf.apigateway.security.configuration;

import com.google.common.collect.Lists;
import com.jmsoftware.maf.apigateway.remoteapi.AuthCenterRemoteApi;
import com.jmsoftware.maf.apigateway.security.impl.*;
import com.jmsoftware.maf.reactivespringcloudstarter.configuration.MafConfiguration;
Expand Down Expand Up @@ -53,6 +54,8 @@ SecurityWebFilterChain springWebFilterChain(ServerHttpSecurity http,
.csrf().disable()
.build();
}
log.warn("Spring Security will ignore following URLs: {}",
Lists.newArrayList(mafConfiguration.flattenIgnoredUrls()));
return http
.cors().disable()
.csrf().disable()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.Set;

/**
Expand All @@ -15,11 +18,14 @@
**/
@Data
@Validated
@Component
@ConfigurationProperties(prefix = "maf.configuration.swagger")
@RefreshScope
@Configuration
@ConfigurationProperties(prefix = SwaggerConfiguration.PREFIX)
public class SwaggerConfiguration {
public static final String PREFIX = "maf.configuration.swagger";
/**
* Ignored service id set
*/
private Set<@NotBlank String> ignoredServiceIdSet;
@NotEmpty
private Set<@NotBlank String> ignoredServiceIds;
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.jmsoftware.maf.apigateway.universal.configuration;

import cn.hutool.core.collection.CollUtil;
import com.google.common.collect.Sets;
import com.jmsoftware.maf.reactivespringcloudstarter.configuration.MafProjectProperty;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
Expand All @@ -20,10 +19,8 @@
import springfox.documentation.swagger.web.SwaggerResource;
import springfox.documentation.swagger.web.SwaggerResourcesProvider;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;

/**
* <h1>SwaggerResourceProvider</h1>
Expand Down Expand Up @@ -61,7 +58,7 @@ public List<SwaggerResource> get() {
val swaggerResourceList = new LinkedList<SwaggerResource>();
routeLocator.getRoutes().subscribe(route -> {
val serviceName = route.getUri().toString().substring(5).toLowerCase();
if (!CollUtil.contains(swaggerConfiguration.getIgnoredServiceIdSet(), serviceName)) {
if (!CollUtil.contains(swaggerConfiguration.getIgnoredServiceIds(), serviceName)) {
log.warn("{} found dynamic route. Service name: {}, route: {}", this.getClass().getSimpleName(),
serviceName, route);
val swaggerResource = new SwaggerResource();
Expand Down
9 changes: 3 additions & 6 deletions api-gateway/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ server:
tomcat:
uri-encoding: @project.build.sourceEncoding@
shutdown: GRACEFUL
servlet:
context-path:

spring:
profiles:
Expand Down Expand Up @@ -59,7 +61,7 @@ logging:
maf:
project-property:
base-package: @project.groupId@
context-path:
context-path: ${server.servlet.context-path}
group-id: @project.groupId@
project-parent-artifact-id: @project.parent.artifactId@
project-artifact-id: @project.artifactId@
Expand Down Expand Up @@ -98,8 +100,3 @@ maf:
- "/*/v2/api-docs/**"
- "/webjars/**"
- "/doc.html"
swagger:
ignored-service-id-set:
- "consul"
- "api-gateway"
- "spring-boot-admin"
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,9 @@
@Validated
@RefreshScope
@Configuration
@ConfigurationProperties(prefix = "permission")
@ConfigurationProperties(prefix = PermissionConfiguration.PREFIX)
public class PermissionConfiguration {
public static final String PREFIX = "maf.configuration.permission";
@NotEmpty
private Set<@NotBlank String> ignoredServiceIds;
}
4 changes: 3 additions & 1 deletion auth-center/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ server:
tomcat:
uri-encoding: @project.build.sourceEncoding@
shutdown: GRACEFUL
servlet:
context-path:

spring:
profiles:
Expand Down Expand Up @@ -132,7 +134,7 @@ logging:
maf:
project-property:
base-package: @project.groupId@
context-path:
context-path: ${server.servlet.context-path}
group-id: @project.groupId@
project-parent-artifact-id: @project.parent.artifactId@
project-artifact-id: @project.artifactId@
Expand Down
9 changes: 9 additions & 0 deletions docker/config/api-gateway/application.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
greeting: "Hello, World! From Consul config center!"

maf:
configuration:
swagger:
ignored-service-ids:
- "consul"
- "api-gateway"
- "spring-boot-admin"
14 changes: 8 additions & 6 deletions docker/config/auth-center/application.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
greeting: "Hello, World! From Consul config center!"

permission:
ignored-service-ids:
- "consul"
- "api-gateway"
- "spring-boot-admin"
- "auth-center"
maf:
configuration:
permission:
ignored-service-ids:
- "consul"
- "api-gateway"
- "spring-boot-admin"
- "auth-center"
4 changes: 3 additions & 1 deletion exercise-mis/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ server:
tomcat:
uri-encoding: @project.build.sourceEncoding@
shutdown: GRACEFUL
servlet:
context-path:

spring:
application:
Expand Down Expand Up @@ -131,7 +133,7 @@ logging:
maf:
project-property:
base-package: @project.groupId@
context-path:
context-path: ${server.servlet.context-path}
group-id: @project.groupId@
project-parent-artifact-id: @project.parent.artifactId@
project-artifact-id: @project.artifactId@
Expand Down
17 changes: 3 additions & 14 deletions muscle-mis/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ server:
tomcat:
uri-encoding: @project.build.sourceEncoding@
shutdown: GRACEFUL
servlet:
context-path:

spring:
application:
Expand Down Expand Up @@ -79,19 +81,6 @@ spring:
max-wait: -1ms
min-idle: 0

eureka:
instance:
leaseRenewalIntervalInSeconds: 10
health-check-url-path: /actuator/health
status-page-url-path: /
metadata-map:
# needed to trigger info and endpoint update after restart
startup: ${random.int}
instance-id: ${spring.cloud.client.ip-address}:${server.port}@${spring.cloud.client.hostname}@${spring.application.name}-${random.int}
prefer-ip-address: true
client:
registryFetchIntervalSeconds: 5

feign:
client:
config:
Expand Down Expand Up @@ -132,7 +121,7 @@ logging:
maf:
project-property:
base-package: @project.groupId@
context-path:
context-path: ${server.servlet.context-path}
group-id: @project.groupId@
project-parent-artifact-id: @project.parent.artifactId@
project-artifact-id: @project.artifactId@
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
package com.jmsoftware.maf.reactivespringcloudstarter.configuration;

import cn.hutool.core.util.ObjectUtil;
import com.google.common.collect.Lists;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import lombok.val;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;

import javax.annotation.PostConstruct;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.util.ArrayList;
import java.util.List;

/**
* <h1>CustomConfiguration</h1>
Expand All @@ -21,6 +26,7 @@
* @date 2019-03-23 14:24
**/
@Data
@Slf4j
@Validated
@Component
@ConfigurationProperties(prefix = "maf.configuration")
Expand Down Expand Up @@ -72,4 +78,69 @@ public String[] flattenIgnoredUrls() {
flattenIgnoredUrls.addAll(ignoredUrl.getPattern());
return flattenIgnoredUrls.toArray(new String[0]);
}

@PostConstruct
private void postConstruct() {
log.warn("Initial bean: '{}'", this.getClass().getSimpleName());
}

/**
* <h1>IgnoredUrl</h1>
* <p>
* Ignored URL configuration.
*
* @author Johnny Miller (锺俊), email: johnnysviva@outlook.com, date: 2/9/2021 9:36 AM
**/
@Data
public static class IgnoredUrl {
private interface Constant {
String URL_REGEXP = "^(/.+)+$";
}

/**
* Ignored URL pattern.
*/
@Valid
private List<@Pattern(regexp = IgnoredUrl.Constant.URL_REGEXP) String> pattern = Lists.newArrayList();
/**
* Ignored GET request.
*/
@Valid
private List<@Pattern(regexp = IgnoredUrl.Constant.URL_REGEXP) String> get = Lists.newArrayList();
/**
* Ignored POST request.
*/
@Valid
private List<@Pattern(regexp = IgnoredUrl.Constant.URL_REGEXP) String> post = Lists.newArrayList();
/**
* Ignored DELETE request.
*/
@Valid
private List<@Pattern(regexp = IgnoredUrl.Constant.URL_REGEXP) String> delete = Lists.newArrayList();
/**
* Ignored PUT request.
*/
@Valid
private List<@Pattern(regexp = IgnoredUrl.Constant.URL_REGEXP) String> put = Lists.newArrayList();
/**
* Ignored HEAD request.
*/
@Valid
private List<@Pattern(regexp = IgnoredUrl.Constant.URL_REGEXP) String> head = Lists.newArrayList();
/**
* Ignored PATCH request.
*/
@Valid
private List<@Pattern(regexp = IgnoredUrl.Constant.URL_REGEXP) String> patch = Lists.newArrayList();
/**
* Ignored OPTIONS request.
*/
@Valid
private List<@Pattern(regexp = IgnoredUrl.Constant.URL_REGEXP) String> options = Lists.newArrayList();
/**
* Ignored TRACE request.
*/
@Valid
private List<@Pattern(regexp = IgnoredUrl.Constant.URL_REGEXP) String> trace = Lists.newArrayList();
}
}
Loading

0 comments on commit 699dd0a

Please sign in to comment.