From d0dc6136062c6d247704b326fa5252c4cc227c37 Mon Sep 17 00:00:00 2001 From: johnniang Date: Sun, 7 Mar 2021 21:16:57 +0800 Subject: [PATCH 1/3] Refactor application*.yml --- .../halo/app/config/HaloConfiguration.java | 14 ++--- .../app/config/properties/HaloProperties.java | 4 +- .../halo/app/listener/StartedListener.java | 2 +- .../java/run/halo/app/model/enums/Mode.java | 14 +++-- .../filter/AbstractAuthenticationFilter.java | 2 +- .../filter/AdminAuthenticationFilter.java | 2 +- .../filter/ApiAuthenticationFilter.java | 4 +- src/main/resources/application-demo.yaml | 54 ------------------- src/main/resources/application-dev.yaml | 13 ++--- src/main/resources/application-user.yaml | 4 -- src/main/resources/application.yaml | 21 +++----- 11 files changed, 37 insertions(+), 97 deletions(-) diff --git a/src/main/java/run/halo/app/config/HaloConfiguration.java b/src/main/java/run/halo/app/config/HaloConfiguration.java index 106004f4d1..d813db1c6c 100644 --- a/src/main/java/run/halo/app/config/HaloConfiguration.java +++ b/src/main/java/run/halo/app/config/HaloConfiguration.java @@ -5,7 +5,6 @@ import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.web.client.RestTemplateBuilder; @@ -38,17 +37,20 @@ BaseRepositoryImpl.class) public class HaloConfiguration { - @Autowired - private HaloProperties haloProperties; + private final HaloProperties haloProperties; + + public HaloConfiguration(HaloProperties haloProperties) { + this.haloProperties = haloProperties; + } @Bean - public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) { + ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) { builder.failOnEmptyBeans(false); return builder.build(); } @Bean - public RestTemplate httpsRestTemplate(RestTemplateBuilder builder) + RestTemplate httpsRestTemplate(RestTemplateBuilder builder) throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException { RestTemplate httpsRestTemplate = builder.build(); httpsRestTemplate.setRequestFactory( @@ -59,7 +61,7 @@ public RestTemplate httpsRestTemplate(RestTemplateBuilder builder) @Bean @ConditionalOnMissingBean - public AbstractStringCacheStore stringCacheStore() { + AbstractStringCacheStore stringCacheStore() { AbstractStringCacheStore stringCacheStore; switch (haloProperties.getCache()) { case "level": diff --git a/src/main/java/run/halo/app/config/properties/HaloProperties.java b/src/main/java/run/halo/app/config/properties/HaloProperties.java index 99c93d5a51..0ffc2fdb39 100644 --- a/src/main/java/run/halo/app/config/properties/HaloProperties.java +++ b/src/main/java/run/halo/app/config/properties/HaloProperties.java @@ -25,15 +25,17 @@ public class HaloProperties { /** * Doc api disabled. (Default is true) */ + @Deprecated private boolean docDisabled = true; /** * Production env. (Default is true) */ + @Deprecated private boolean productionEnv = true; /** - * Authentication enabled + * Authentication enabled. */ private boolean authEnabled = true; diff --git a/src/main/java/run/halo/app/listener/StartedListener.java b/src/main/java/run/halo/app/listener/StartedListener.java index 9be5983224..b4c1f14fec 100644 --- a/src/main/java/run/halo/app/listener/StartedListener.java +++ b/src/main/java/run/halo/app/listener/StartedListener.java @@ -169,7 +169,7 @@ private void initThemes() { Path themePath = themeService.getBasePath(); // Fix the problem that the project cannot start after moving to a new server - if (!haloProperties.isProductionEnv() || Files.notExists(themePath)) { + if (!haloProperties.getMode().isProductionEnv() || Files.notExists(themePath)) { FileUtils.copyFolder(source, themePath); log.debug("Copied theme folder from [{}] to [{}]", source, themePath); } else { diff --git a/src/main/java/run/halo/app/model/enums/Mode.java b/src/main/java/run/halo/app/model/enums/Mode.java index 0905d48309..9f6cba04e2 100644 --- a/src/main/java/run/halo/app/model/enums/Mode.java +++ b/src/main/java/run/halo/app/model/enums/Mode.java @@ -1,6 +1,7 @@ package run.halo.app.model.enums; import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonValue; import org.springframework.lang.Nullable; @@ -13,22 +14,22 @@ public enum Mode { /** - * Production mode + * Production mode. */ PRODUCTION, /** - * Develop mode + * Develop mode. */ DEVELOPMENT, /** - * Demo mode + * Demo mode. */ DEMO, /** - * Test mode + * Test mode. */ TEST; @@ -57,4 +58,9 @@ public static Mode valueFrom(@Nullable String value) { String getValue() { return this.name().toLowerCase(); } + + @JsonIgnore + public boolean isProductionEnv() { + return PRODUCTION.equals(this); + } } diff --git a/src/main/java/run/halo/app/security/filter/AbstractAuthenticationFilter.java b/src/main/java/run/halo/app/security/filter/AbstractAuthenticationFilter.java index 06c0922eb8..569b430247 100644 --- a/src/main/java/run/halo/app/security/filter/AbstractAuthenticationFilter.java +++ b/src/main/java/run/halo/app/security/filter/AbstractAuthenticationFilter.java @@ -183,7 +183,7 @@ private AuthenticationFailureHandler getFailureHandler() { // Create default authentication failure handler DefaultAuthenticationFailureHandler failureHandler = new DefaultAuthenticationFailureHandler(); - failureHandler.setProductionEnv(haloProperties.isProductionEnv()); + failureHandler.setProductionEnv(haloProperties.getMode().isProductionEnv()); this.failureHandler = failureHandler; } diff --git a/src/main/java/run/halo/app/security/filter/AdminAuthenticationFilter.java b/src/main/java/run/halo/app/security/filter/AdminAuthenticationFilter.java index fe510be581..6b78001a02 100644 --- a/src/main/java/run/halo/app/security/filter/AdminAuthenticationFilter.java +++ b/src/main/java/run/halo/app/security/filter/AdminAuthenticationFilter.java @@ -69,7 +69,7 @@ public AdminAuthenticationFilter(AbstractStringCacheStore cacheStore, // set failure handler DefaultAuthenticationFailureHandler failureHandler = new DefaultAuthenticationFailureHandler(); - failureHandler.setProductionEnv(haloProperties.isProductionEnv()); + failureHandler.setProductionEnv(haloProperties.getMode().isProductionEnv()); failureHandler.setObjectMapper(objectMapper); setFailureHandler(failureHandler); diff --git a/src/main/java/run/halo/app/security/filter/ApiAuthenticationFilter.java b/src/main/java/run/halo/app/security/filter/ApiAuthenticationFilter.java index 8996b50a1f..b9ded4fc77 100644 --- a/src/main/java/run/halo/app/security/filter/ApiAuthenticationFilter.java +++ b/src/main/java/run/halo/app/security/filter/ApiAuthenticationFilter.java @@ -58,7 +58,7 @@ public ApiAuthenticationFilter(HaloProperties haloProperties, // set failure handler DefaultAuthenticationFailureHandler failureHandler = new DefaultAuthenticationFailureHandler(); - failureHandler.setProductionEnv(haloProperties.isProductionEnv()); + failureHandler.setProductionEnv(haloProperties.getMode().isProductionEnv()); failureHandler.setObjectMapper(objectMapper); setFailureHandler(failureHandler); } @@ -91,7 +91,7 @@ protected void doAuthenticate(HttpServletRequest request, HttpServletResponse re Optional optionalAccessKey = optionService.getByProperty(ApiProperties.API_ACCESS_KEY, String.class); - if (!optionalAccessKey.isPresent()) { + if (optionalAccessKey.isEmpty()) { // If the access key is not set throw new AuthenticationException("API access key hasn't been set by blogger"); } diff --git a/src/main/resources/application-demo.yaml b/src/main/resources/application-demo.yaml index 11ce5ab974..1d1b9c4bf8 100755 --- a/src/main/resources/application-demo.yaml +++ b/src/main/resources/application-demo.yaml @@ -6,63 +6,9 @@ server: spring: jackson: date-format: yyyy-MM-dd HH:mm:ss - devtools: - add-properties: false - output: - ansi: - enabled: always - datasource: - type: com.zaxxer.hikari.HikariDataSource - - # H2 database configuration. - driver-class-name: org.h2.Driver - url: jdbc:h2:file:~/halo-demo/db/halo - username: admin - password: 123456 - - # MySQL database configuration. - # driver-class-name: com.mysql.cj.jdbc.Driver - # url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true - # username: root - # password: 123456 - - h2: - console: - settings: - web-allow-others: false - path: /h2-console - enabled: false - jpa: - hibernate: - ddl-auto: update - show-sql: false - open-in-view: false - flyway: - enabled: false - servlet: - multipart: - max-file-size: 10240MB - max-request-size: 10240MB -management: - endpoints: - web: - base-path: /api/admin/actuator - exposure: - include: [ 'httptrace', 'metrics','env','logfile','health' ] -logging: - level: - run.halo.app: INFO - file: - path: ${user.home}/halo-demo/logs - -springfox: - documentation: - enabled: true halo: download-timeout: 5m - doc-disabled: false - production-env: false auth-enabled: true mode: demo workDir: ${user.home}/halo-demo/ diff --git a/src/main/resources/application-dev.yaml b/src/main/resources/application-dev.yaml index ade9ab2ddd..524da060b5 100755 --- a/src/main/resources/application-dev.yaml +++ b/src/main/resources/application-dev.yaml @@ -2,13 +2,16 @@ server: port: 8090 forward-headers-strategy: native compression: - enabled: false + enabled: true spring: jackson: date-format: yyyy-MM-dd HH:mm:ss output: ansi: enabled: always + devtools: + restart: + eanbled: true datasource: type: com.zaxxer.hikari.HikariDataSource @@ -56,15 +59,9 @@ logging: org.hibernate.type.descriptor.sql.BasicBinder: INFO org.hibernate.type.descriptor.sql.BasicExtractor: INFO file: - path: ${user.home}/halo-dev/logs - -springfox: - documentation: - enabled: true + path: ${halo.work-dir}/newLogs halo: - doc-disabled: false - production-env: false auth-enabled: true mode: development workDir: ${user.home}/halo-dev/ diff --git a/src/main/resources/application-user.yaml b/src/main/resources/application-user.yaml index 37ab072ca7..92be5ee76d 100755 --- a/src/main/resources/application-user.yaml +++ b/src/main/resources/application-user.yaml @@ -1,15 +1,11 @@ server: port: 8090 - # Response data gzip. compression: enabled: false spring: datasource: - # H2 database configuration. - driver-class-name: org.h2.Driver - url: jdbc:h2:file:~/.halo/db/halo username: admin password: 123456 diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index ac296abde3..adf172e4ba 100755 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -3,16 +3,15 @@ server: forward-headers-strategy: native error: include-message: always - compression: - enabled: false spring: + devtools: + restart: + eanbled: false mvc: pathmatch: use-suffix-pattern: true jackson: date-format: yyyy-MM-dd HH:mm:ss - devtools: - add-properties: false output: ansi: enabled: always @@ -21,20 +20,12 @@ spring: # H2 database configuration. driver-class-name: org.h2.Driver - url: jdbc:h2:file:~/.halo/db/halo + url: jdbc:h2:file:${halo.work-dir}/db/halo username: admin password: 123456 - - h2: - console: - settings: - web-allow-others: false - path: /h2-console - enabled: false jpa: hibernate: ddl-auto: update - show-sql: false open-in-view: false flyway: enabled: false @@ -55,13 +46,13 @@ management: web: base-path: /api/admin/actuator exposure: - include: [ 'httptrace', 'metrics','env','logfile','health' ] + include: [ 'httptrace', 'metrics', 'env', 'logfile', 'health' ] logging: level: run.halo.app: INFO org.eclipse.jetty.server.HttpChannel: ERROR file: - path: ${user.home}/.halo/logs + path: ${halo.work-dir}/logs springfox: documentation: From c160a6823754164ee4062dc218b6bd60b6fff640 Mon Sep 17 00:00:00 2001 From: johnniang Date: Sun, 7 Mar 2021 21:40:05 +0800 Subject: [PATCH 2/3] Remove application-user.yaml --- src/main/resources/application-user.yaml | 32 ------------------------ src/main/resources/application.yaml | 2 +- 2 files changed, 1 insertion(+), 33 deletions(-) delete mode 100755 src/main/resources/application-user.yaml diff --git a/src/main/resources/application-user.yaml b/src/main/resources/application-user.yaml deleted file mode 100755 index 92be5ee76d..0000000000 --- a/src/main/resources/application-user.yaml +++ /dev/null @@ -1,32 +0,0 @@ -server: - port: 8090 - # Response data gzip. - compression: - enabled: false -spring: - datasource: - # H2 database configuration. - username: admin - password: 123456 - - # MySQL database configuration. - # driver-class-name: com.mysql.cj.jdbc.Driver - # url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true - # username: root - # password: 123456 - - # H2 database console configuration. - h2: - console: - settings: - web-allow-others: false - path: /h2-console - enabled: false - -halo: - - # Your admin client path is https://your-domain/{admin-path} - admin-path: admin - - # memory, level, redis - cache: memory diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index adf172e4ba..1fdae9bfd3 100755 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -39,7 +39,7 @@ spring: settings: auto_import: /common/macro/global_macro.ftl as global template-loader-path: - - file:///${halo.work-dir}templates/ + - file:///${halo.work-dir}/templates/ - classpath:/templates/ management: endpoints: From 2733329eeae8ac0e68a3f8d5a50d2aa32bc6cc8a Mon Sep 17 00:00:00 2001 From: johnniang Date: Sun, 7 Mar 2021 21:40:35 +0800 Subject: [PATCH 3/3] Fix invalid config for aspect --- .../java/run/halo/app/aspect/DisableOnConditionAspect.java | 3 +-- src/main/java/run/halo/app/aspect/SensitiveConcealAspect.java | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/run/halo/app/aspect/DisableOnConditionAspect.java b/src/main/java/run/halo/app/aspect/DisableOnConditionAspect.java index d38b9c004c..f36dffa44c 100644 --- a/src/main/java/run/halo/app/aspect/DisableOnConditionAspect.java +++ b/src/main/java/run/halo/app/aspect/DisableOnConditionAspect.java @@ -28,8 +28,7 @@ public DisableOnConditionAspect(HaloProperties haloProperties) { this.haloProperties = haloProperties; } - @Pointcut("execution(* run.halo.app.controller.*.*(..)) " - + "&& @annotation(run.halo.app.annotation.DisableOnCondition)") + @Pointcut("within(run.halo.app.controller..*)") public void pointcut() { } diff --git a/src/main/java/run/halo/app/aspect/SensitiveConcealAspect.java b/src/main/java/run/halo/app/aspect/SensitiveConcealAspect.java index 021a268d40..f9c7585984 100644 --- a/src/main/java/run/halo/app/aspect/SensitiveConcealAspect.java +++ b/src/main/java/run/halo/app/aspect/SensitiveConcealAspect.java @@ -19,7 +19,7 @@ public class SensitiveConcealAspect { - @Pointcut("execution(* run.halo.app.repository.*.*(..)) " + @Pointcut("within(run.halo.app.repository..*) " + "&& @annotation(run.halo.app.annotation.SensitiveConceal)") public void pointCut() { }