diff --git a/pom.xml b/pom.xml index da5ad8bfc2b71281442abb5e46d692bfeb22ab99..cc5f0eed0c6b8873440d184dde851b6630f9b30f 100644 --- a/pom.xml +++ b/pom.xml @@ -696,7 +696,7 @@ </ports> <environment> <SPRING_OUTPUT_ANSI_ENABLED>ALWAYS</SPRING_OUTPUT_ANSI_ENABLED> - <JHIPSTER_SLEEP>0</JHIPSTER_SLEEP> + <JHIPSTER_SLEEP>6</JHIPSTER_SLEEP> </environment> <creationTime>USE_CURRENT_TIMESTAMP</creationTime> <user>1000</user> diff --git a/src/main/docker/app.yml b/src/main/docker/app.yml index 9bfd361f663ebb1391cdc2db3378375edd4a6c51..c9631e683f0d0b9074c4a312d5960834929a3fad 100644 --- a/src/main/docker/app.yml +++ b/src/main/docker/app.yml @@ -9,7 +9,7 @@ services: - MANAGEMENT_METRICS_EXPORT_PROMETHEUS_ENABLED=true - SPRING_DATASOURCE_URL=jdbc:mysql://gitsearch-mysql:3306/gitsearch?useUnicode=true&characterEncoding=utf8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC&createDatabaseIfNotExist=true - SPRING_LIQUIBASE_URL=jdbc:mysql://gitsearch-mysql:3306/gitsearch?useUnicode=true&characterEncoding=utf8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC&createDatabaseIfNotExist=true - - JHIPSTER_SLEEP=30 # gives time for other services to boot before the application + - JHIPSTER_SLEEP=5 # gives small time for other services to boot before the application - SPRING_ELASTICSEARCH_URIS=http://gitsearch-elasticsearch:9200 # If you want to expose these ports outside your dev PC, # remove the "127.0.0.1:" prefix diff --git a/src/main/docker/gitsearch.yml b/src/main/docker/gitsearch.yml index 4fd5e1d6e26ff5ddec4e2702413ee56e8a56d891..bffb3c353b3833b38f8ef95a592c58f885877225 100644 --- a/src/main/docker/gitsearch.yml +++ b/src/main/docker/gitsearch.yml @@ -10,7 +10,7 @@ services: - SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE} - MANAGEMENT_METRICS_EXPORT_PROMETHEUS_ENABLED=true - SPRING_DATASOURCE_URL=jdbc:mysql://sharing_mysql:3306/gitsearch?useUnicode=true&characterEncoding=utf8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC&createDatabaseIfNotExist=true - - JHIPSTER_SLEEP=10 # gives time for other services to boot before the application + - JHIPSTER_SLEEP=5 # gives a small time for other services to boot before the application - SPRING_DATA_JEST_URI=http://sharing_elasticsearch:9200 - SPRING_ELASTICSEARCH_REST_URIS=http://sharing_elasticsearch:9200 # see https://stackoverflow.com/questions/62676762/how-can-a-variable-set-in-the-docker-env-file-be-used-in-application-yml diff --git a/src/main/java/at/ac/uibk/gitsearch/config/SecurityConfiguration.java b/src/main/java/at/ac/uibk/gitsearch/config/SecurityConfiguration.java index 869137c06cf6f2473a9d33f719a0ebf0f47961aa..e2e5d545de9a20caa92660c8888eb86ddef51306 100644 --- a/src/main/java/at/ac/uibk/gitsearch/config/SecurityConfiguration.java +++ b/src/main/java/at/ac/uibk/gitsearch/config/SecurityConfiguration.java @@ -68,6 +68,8 @@ import org.springframework.security.oauth2.server.resource.authentication.JwtAut import org.springframework.security.web.authentication.AuthenticationSuccessHandler; import org.springframework.security.web.csrf.CookieCsrfTokenRepository; import org.springframework.security.web.csrf.CsrfFilter; +import org.springframework.security.web.firewall.HttpFirewall; +import org.springframework.security.web.firewall.StrictHttpFirewall; import org.springframework.security.web.header.writers.ReferrerPolicyHeaderWriter; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; @@ -108,6 +110,13 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter { return new BCryptPasswordEncoder(); } + @Bean + public HttpFirewall getHttpFirewall() { + StrictHttpFirewall strictHttpFirewall = new StrictHttpFirewall(); + strictHttpFirewall.setAllowSemicolon(true); + return strictHttpFirewall; + } + @Override public void configure(WebSecurity web) { web diff --git a/src/main/java/at/ac/uibk/gitsearch/repository/AuditEventConverter.java b/src/main/java/at/ac/uibk/gitsearch/repository/AuditEventConverter.java index c04e8e70bf9c5061e2a9eb659cc5f856ce767a86..d09c6def6e1c031dab348493357e17c262e51994 100644 --- a/src/main/java/at/ac/uibk/gitsearch/repository/AuditEventConverter.java +++ b/src/main/java/at/ac/uibk/gitsearch/repository/AuditEventConverter.java @@ -82,7 +82,11 @@ public class AuditEventConverter { if (entry.getValue() instanceof WebAuthenticationDetails) { WebAuthenticationDetails authenticationDetails = (WebAuthenticationDetails) entry.getValue(); results.put("remoteAddress", authenticationDetails.getRemoteAddress()); - results.put("sessionId", authenticationDetails.getSessionId()); + String sessionId = authenticationDetails.getSessionId(); + if (sessionId == null) { + sessionId = "unknown"; + } + results.put("sessionId", sessionId); } else { results.put(entry.getKey(), Objects.toString(entry.getValue())); } diff --git a/src/main/java/at/ac/uibk/gitsearch/service/MessageService.java b/src/main/java/at/ac/uibk/gitsearch/service/MessageService.java index 2eb3334f10991e8f0532080d3d226bd2c6e195e8..7f57fda8c40c53fd0b1042d23761da11f2e0960d 100644 --- a/src/main/java/at/ac/uibk/gitsearch/service/MessageService.java +++ b/src/main/java/at/ac/uibk/gitsearch/service/MessageService.java @@ -36,6 +36,9 @@ public class MessageService { BroadCastMessageDTO[] messages = null; public BroadCastMessageDTO[] getMessages() { + if (messages == null) { + return new BroadCastMessageDTO[] {}; + } return messages.clone(); } diff --git a/src/main/java/at/ac/uibk/gitsearch/service/SearchService.java b/src/main/java/at/ac/uibk/gitsearch/service/SearchService.java index e48fe5a6c09b91ab251800e107f536b07ab257b7..094b3499d572f87d93f6d3e99cfff3140d3638ca 100644 --- a/src/main/java/at/ac/uibk/gitsearch/service/SearchService.java +++ b/src/main/java/at/ac/uibk/gitsearch/service/SearchService.java @@ -244,7 +244,7 @@ public class SearchService { } String httpUrlToRepo = metaData.getProject().getUrl(); String commitId = metaData.getFile().getCommit_id(); - String baseRepoURL = httpUrlToRepo + "/-/raw/" + commitId; + String baseRepoURL = httpUrlToRepo + "/-/raw/" + commitId + "/"; final URI resolvedImageUrl = new URI(baseRepoURL).resolve(url); metaData.getMetadata().setImage(resolvedImageUrl.toASCIIString()); return; diff --git a/src/main/java/at/ac/uibk/gitsearch/service/dto/BroadCastMessageDTO.java b/src/main/java/at/ac/uibk/gitsearch/service/dto/BroadCastMessageDTO.java index 79b639788be41d95338c63dd4fea2e92d8d8becb..a049b15c6d3a3029f732e343962adc8b57472a4c 100644 --- a/src/main/java/at/ac/uibk/gitsearch/service/dto/BroadCastMessageDTO.java +++ b/src/main/java/at/ac/uibk/gitsearch/service/dto/BroadCastMessageDTO.java @@ -15,4 +15,5 @@ public class BroadCastMessageDTO { public String target_path; // "*/welcome", public String broadcast_type; // "banner", public boolean dismissable; // false + public int[] target_access_levels; // [10, 30] } diff --git a/src/main/webapp/app/shared/service/message-service.ts b/src/main/webapp/app/shared/service/message-service.ts index a87cc54fce553f31e43958d7ef5d592602273643..2881264f3cab4ae4a6aef9f56ccc22d7409a5da5 100644 --- a/src/main/webapp/app/shared/service/message-service.ts +++ b/src/main/webapp/app/shared/service/message-service.ts @@ -15,6 +15,7 @@ export interface BroadCastMessage { target_path: string; // "*/welcome", broadcast_type: string; // "banner", dismissable: boolean; // false + target_access_levels: number[]; } /**