Loading deploy/docker-compose.dev.yml +0 −20 Original line number Diff line number Diff line Loading @@ -2,27 +2,7 @@ version: '3.5' services: api: ports: - target: ${MICROSERVICE_PORT} published: ${MICROSERVICE_PORT} mode: host deploy: mode: replicated replicas: 1 labels: traefik.docker.network: traefik-net traefik.port: "${MICROSERVICE_PORT}" traefik.microservice.frontend.rule: PathPrefix:/${MICROSERVICE_NAME} traefik.microservice.backend: ${MICROSERVICE_NAME} traefik.mediastorage.frontend.rule: PathPrefix:/${MICROSERVICE_NAME}/mediastorage/photobank/{animals|layers|species|platforms|organisations} traefik.mediastorage.frontend.redirect.regex: ^.*/${MICROSERVICE_NAME}/mediastorage/(photobank)/(animals|layers|species|platforms|organisations)/(.+\\.(?:gif|jpe?g|png))$$ traefik.mediastorage.frontend.redirect.replacement: https://s3-${AWS_REGION}.amazonaws.com/${S3_BUCKET}/public/$$1/$$2/$$3 traefik.grafcan.frontend.rule: PathPrefix:/grafcan traefik.grafcan.frontend.redirect.regex: ^.*/grafcan(.*)$$ traefik.grafcan.frontend.redirect.replacement: https://visor.grafcan.es/busquedas/toponimoxml$$1 restart_policy: delay: 1m window: 3m resources: limits: cpus: '1' Loading deploy/docker-compose.prod.yml +0 −16 Original line number Diff line number Diff line Loading @@ -3,25 +3,9 @@ version: '3.5' services: api: deploy: mode: replicated replicas: 1 labels: traefik.docker.network: traefik-net traefik.port: "${MICROSERVICE_PORT}" traefik.microservice.frontend.rule: PathPrefix:/${MICROSERVICE_NAME} traefik.microservice.backend: ${MICROSERVICE_NAME} traefik.mediastorage.frontend.rule: PathPrefix:/${MICROSERVICE_NAME}/mediastorage/photobank/{animals|layers|species|platforms|organisations} traefik.mediastorage.frontend.redirect.regex: ^.*/${MICROSERVICE_NAME}/mediastorage/(photobank)/(animals|layers|species|platforms|organisations)/(.+\\.(?:gif|jpe?g|png))$$ traefik.mediastorage.frontend.redirect.replacement: https://s3-${AWS_REGION}.amazonaws.com/${S3_BUCKET}/public/$$1/$$2/$$3 traefik.grafcan.frontend.rule: PathPrefix:/grafcan traefik.grafcan.frontend.redirect.regex: ^.*/grafcan(.*)$$ traefik.grafcan.frontend.redirect.replacement: https://visor.grafcan.es/busquedas/toponimoxml$$1 placement: constraints: - node.role == worker restart_policy: delay: 1m window: 3m resources: limits: cpus: '2' Loading deploy/docker-compose.tmpl.yml +19 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,25 @@ services: timeout: 10s retries: 3 start_period: 4m deploy: mode: replicated replicas: 1 labels: traefik.docker.network: traefik-net traefik.port: "${MICROSERVICE_PORT}" traefik.sitemap.frontend.rule: PathPrefix:/sitemap;AddPrefix:/${MICROSERVICE_NAME} traefik.sitemap.backend: ${MICROSERVICE_NAME} traefik.microservice.frontend.rule: PathPrefix:/${MICROSERVICE_NAME} traefik.microservice.backend: ${MICROSERVICE_NAME} traefik.mediastorage.frontend.rule: PathPrefix:/${MICROSERVICE_NAME}/mediastorage/photobank/{animals|layers|species|platforms|organisations} traefik.mediastorage.frontend.redirect.regex: ^.*/${MICROSERVICE_NAME}/mediastorage/(photobank)/(animals|layers|species|platforms|organisations)/(.+\\.(?:gif|jpe?g|png))$$ traefik.mediastorage.frontend.redirect.replacement: https://s3-${AWS_REGION}.amazonaws.com/${S3_BUCKET}/public/$$1/$$2/$$3 traefik.grafcan.frontend.rule: PathPrefix:/grafcan traefik.grafcan.frontend.redirect.regex: ^.*/grafcan(.*)$$ traefik.grafcan.frontend.redirect.replacement: https://visor.grafcan.es/busquedas/toponimoxml$$1 restart_policy: delay: 1m window: 3m networks: elastic-net: Loading src/main/java/es/redmic/ApiApplication.java +11 −0 Original line number Diff line number Diff line Loading @@ -3,7 +3,9 @@ package es.redmic; import javax.annotation.PostConstruct; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration; Loading @@ -30,6 +32,7 @@ import es.redmic.databaselib.common.repository.BaseRepositoryImpl; import es.redmic.db.config.EntityManagerWrapper; import es.redmic.es.common.service.UserUtilsServiceItfc; import es.redmic.models.es.common.view.QueryDTODeserializerModifier; import io.micrometer.core.instrument.MeterRegistry; @SpringBootApplication(exclude = { MongoAutoConfiguration.class, ElasticsearchAutoConfiguration.class }) @EnableAutoConfiguration Loading @@ -40,6 +43,9 @@ import es.redmic.models.es.common.view.QueryDTODeserializerModifier; "es.redmic.databaselib" }, repositoryBaseClass = BaseRepositoryImpl.class) public class ApiApplication { @Value("${info.microservice.name}") String microserviceName; @Autowired ObjectMapper objectMapper; Loading Loading @@ -93,4 +99,9 @@ public class ApiApplication { return new QueryDTOMessageConverter(objectMapper, userService); } @Bean MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() { return registry -> registry.config().commonTags("application", microserviceName); } } No newline at end of file src/main/java/es/redmic/api/config/Oauth2SecurityConfiguration.java +2 −4 Original line number Diff line number Diff line Loading @@ -60,6 +60,8 @@ public class Oauth2SecurityConfiguration { http.authorizeRequests().antMatchers(HttpMethod.POST, "/**/utils/geo/convert2geojson").permitAll(); http.authorizeRequests().antMatchers(HttpMethod.GET, "/sitemap.xml").permitAll(); http.authorizeRequests().antMatchers(HttpMethod.GET, "/**/activitycategories").access( "#oauth2.hasScope('write') and " + "hasAnyRole('ROLE_ADMINISTRATOR', 'ROLE_OAG', 'ROLE_COLLABORATOR')"); Loading Loading @@ -103,10 +105,6 @@ public class Oauth2SecurityConfiguration { "#oauth2.hasScope('read') or #oauth2.hasScope('write') and " + "hasAnyRole('ROLE_ADMINISTRATOR', 'ROLE_OAG', 'ROLE_COLLABORATOR')"); http.authorizeRequests().antMatchers(HttpMethod.GET, "/generate-sitemap").access( "#oauth2.hasScope('read') or #oauth2.hasScope('write') and " + "hasAnyRole('ROLE_ADMINISTRATOR')"); http.authorizeRequests().antMatchers("/**/convert2redmic/**").access( "#oauth2.hasScope('read') or #oauth2.hasScope('write') and " + "hasAnyRole('ROLE_ADMINISTRATOR')"); Loading Loading
deploy/docker-compose.dev.yml +0 −20 Original line number Diff line number Diff line Loading @@ -2,27 +2,7 @@ version: '3.5' services: api: ports: - target: ${MICROSERVICE_PORT} published: ${MICROSERVICE_PORT} mode: host deploy: mode: replicated replicas: 1 labels: traefik.docker.network: traefik-net traefik.port: "${MICROSERVICE_PORT}" traefik.microservice.frontend.rule: PathPrefix:/${MICROSERVICE_NAME} traefik.microservice.backend: ${MICROSERVICE_NAME} traefik.mediastorage.frontend.rule: PathPrefix:/${MICROSERVICE_NAME}/mediastorage/photobank/{animals|layers|species|platforms|organisations} traefik.mediastorage.frontend.redirect.regex: ^.*/${MICROSERVICE_NAME}/mediastorage/(photobank)/(animals|layers|species|platforms|organisations)/(.+\\.(?:gif|jpe?g|png))$$ traefik.mediastorage.frontend.redirect.replacement: https://s3-${AWS_REGION}.amazonaws.com/${S3_BUCKET}/public/$$1/$$2/$$3 traefik.grafcan.frontend.rule: PathPrefix:/grafcan traefik.grafcan.frontend.redirect.regex: ^.*/grafcan(.*)$$ traefik.grafcan.frontend.redirect.replacement: https://visor.grafcan.es/busquedas/toponimoxml$$1 restart_policy: delay: 1m window: 3m resources: limits: cpus: '1' Loading
deploy/docker-compose.prod.yml +0 −16 Original line number Diff line number Diff line Loading @@ -3,25 +3,9 @@ version: '3.5' services: api: deploy: mode: replicated replicas: 1 labels: traefik.docker.network: traefik-net traefik.port: "${MICROSERVICE_PORT}" traefik.microservice.frontend.rule: PathPrefix:/${MICROSERVICE_NAME} traefik.microservice.backend: ${MICROSERVICE_NAME} traefik.mediastorage.frontend.rule: PathPrefix:/${MICROSERVICE_NAME}/mediastorage/photobank/{animals|layers|species|platforms|organisations} traefik.mediastorage.frontend.redirect.regex: ^.*/${MICROSERVICE_NAME}/mediastorage/(photobank)/(animals|layers|species|platforms|organisations)/(.+\\.(?:gif|jpe?g|png))$$ traefik.mediastorage.frontend.redirect.replacement: https://s3-${AWS_REGION}.amazonaws.com/${S3_BUCKET}/public/$$1/$$2/$$3 traefik.grafcan.frontend.rule: PathPrefix:/grafcan traefik.grafcan.frontend.redirect.regex: ^.*/grafcan(.*)$$ traefik.grafcan.frontend.redirect.replacement: https://visor.grafcan.es/busquedas/toponimoxml$$1 placement: constraints: - node.role == worker restart_policy: delay: 1m window: 3m resources: limits: cpus: '2' Loading
deploy/docker-compose.tmpl.yml +19 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,25 @@ services: timeout: 10s retries: 3 start_period: 4m deploy: mode: replicated replicas: 1 labels: traefik.docker.network: traefik-net traefik.port: "${MICROSERVICE_PORT}" traefik.sitemap.frontend.rule: PathPrefix:/sitemap;AddPrefix:/${MICROSERVICE_NAME} traefik.sitemap.backend: ${MICROSERVICE_NAME} traefik.microservice.frontend.rule: PathPrefix:/${MICROSERVICE_NAME} traefik.microservice.backend: ${MICROSERVICE_NAME} traefik.mediastorage.frontend.rule: PathPrefix:/${MICROSERVICE_NAME}/mediastorage/photobank/{animals|layers|species|platforms|organisations} traefik.mediastorage.frontend.redirect.regex: ^.*/${MICROSERVICE_NAME}/mediastorage/(photobank)/(animals|layers|species|platforms|organisations)/(.+\\.(?:gif|jpe?g|png))$$ traefik.mediastorage.frontend.redirect.replacement: https://s3-${AWS_REGION}.amazonaws.com/${S3_BUCKET}/public/$$1/$$2/$$3 traefik.grafcan.frontend.rule: PathPrefix:/grafcan traefik.grafcan.frontend.redirect.regex: ^.*/grafcan(.*)$$ traefik.grafcan.frontend.redirect.replacement: https://visor.grafcan.es/busquedas/toponimoxml$$1 restart_policy: delay: 1m window: 3m networks: elastic-net: Loading
src/main/java/es/redmic/ApiApplication.java +11 −0 Original line number Diff line number Diff line Loading @@ -3,7 +3,9 @@ package es.redmic; import javax.annotation.PostConstruct; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration; Loading @@ -30,6 +32,7 @@ import es.redmic.databaselib.common.repository.BaseRepositoryImpl; import es.redmic.db.config.EntityManagerWrapper; import es.redmic.es.common.service.UserUtilsServiceItfc; import es.redmic.models.es.common.view.QueryDTODeserializerModifier; import io.micrometer.core.instrument.MeterRegistry; @SpringBootApplication(exclude = { MongoAutoConfiguration.class, ElasticsearchAutoConfiguration.class }) @EnableAutoConfiguration Loading @@ -40,6 +43,9 @@ import es.redmic.models.es.common.view.QueryDTODeserializerModifier; "es.redmic.databaselib" }, repositoryBaseClass = BaseRepositoryImpl.class) public class ApiApplication { @Value("${info.microservice.name}") String microserviceName; @Autowired ObjectMapper objectMapper; Loading Loading @@ -93,4 +99,9 @@ public class ApiApplication { return new QueryDTOMessageConverter(objectMapper, userService); } @Bean MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() { return registry -> registry.config().commonTags("application", microserviceName); } } No newline at end of file
src/main/java/es/redmic/api/config/Oauth2SecurityConfiguration.java +2 −4 Original line number Diff line number Diff line Loading @@ -60,6 +60,8 @@ public class Oauth2SecurityConfiguration { http.authorizeRequests().antMatchers(HttpMethod.POST, "/**/utils/geo/convert2geojson").permitAll(); http.authorizeRequests().antMatchers(HttpMethod.GET, "/sitemap.xml").permitAll(); http.authorizeRequests().antMatchers(HttpMethod.GET, "/**/activitycategories").access( "#oauth2.hasScope('write') and " + "hasAnyRole('ROLE_ADMINISTRATOR', 'ROLE_OAG', 'ROLE_COLLABORATOR')"); Loading Loading @@ -103,10 +105,6 @@ public class Oauth2SecurityConfiguration { "#oauth2.hasScope('read') or #oauth2.hasScope('write') and " + "hasAnyRole('ROLE_ADMINISTRATOR', 'ROLE_OAG', 'ROLE_COLLABORATOR')"); http.authorizeRequests().antMatchers(HttpMethod.GET, "/generate-sitemap").access( "#oauth2.hasScope('read') or #oauth2.hasScope('write') and " + "hasAnyRole('ROLE_ADMINISTRATOR')"); http.authorizeRequests().antMatchers("/**/convert2redmic/**").access( "#oauth2.hasScope('read') or #oauth2.hasScope('write') and " + "hasAnyRole('ROLE_ADMINISTRATOR')"); Loading