From 80f5de688a8c957768bfbab1f38ceb5e65dbd3f9 Mon Sep 17 00:00:00 2001 From: lucio Date: Fri, 10 Jun 2022 18:25:19 +0200 Subject: [PATCH] allowed context retrieved on request --- .../container/ContainerConfiguration.java | 16 ---------------- .../application/request/RequestValidator.java | 9 ++++++--- .../smartgears/managers/ContainerManager.java | 3 --- .../persistence/PersistenceWriter.java | 2 ++ 4 files changed, 8 insertions(+), 22 deletions(-) diff --git a/src/main/java/org/gcube/smartgears/configuration/container/ContainerConfiguration.java b/src/main/java/org/gcube/smartgears/configuration/container/ContainerConfiguration.java index a897a71..6744a73 100644 --- a/src/main/java/org/gcube/smartgears/configuration/container/ContainerConfiguration.java +++ b/src/main/java/org/gcube/smartgears/configuration/container/ContainerConfiguration.java @@ -3,12 +3,8 @@ package org.gcube.smartgears.configuration.container; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; - -import javax.xml.bind.annotation.XmlTransient; import org.gcube.common.validator.ValidationError; import org.gcube.common.validator.Validator; @@ -46,9 +42,6 @@ public class ContainerConfiguration { @NotEmpty @NotNull private String accountingFallbackLocation; - - @XmlTransient - private Set allowedContext = new HashSet(); private List apps = new ArrayList(); @@ -234,15 +227,6 @@ public class ContainerConfiguration { return baseConfiguration.getPublicationFrequencyInSeconds(); } - - public Set allowedContexts() { - return allowedContext; - } - - public void allowedContexts(Set allowedContexts) { - this.allowedContext = allowedContexts; - } - /** * Validates this configuration * diff --git a/src/main/java/org/gcube/smartgears/handlers/application/request/RequestValidator.java b/src/main/java/org/gcube/smartgears/handlers/application/request/RequestValidator.java index 09bd236..fb2339c 100644 --- a/src/main/java/org/gcube/smartgears/handlers/application/request/RequestValidator.java +++ b/src/main/java/org/gcube/smartgears/handlers/application/request/RequestValidator.java @@ -5,6 +5,8 @@ import static org.gcube.smartgears.handlers.application.request.RequestError.app import static org.gcube.smartgears.handlers.application.request.RequestError.application_unavailable_error; import static org.gcube.smartgears.handlers.application.request.RequestError.invalid_request_error; +import java.util.Set; + import javax.xml.bind.annotation.XmlRootElement; import org.gcube.common.security.ContextBean; @@ -92,10 +94,11 @@ public class RequestValidator extends RequestHandler { ContextBean bean = new ContextBean(context); ContainerConfiguration conf = appContext.container().configuration(); - if (!conf.allowedContexts().contains(context) && + Set allowedContexts =conf.authorizationProvider().getContexts(); + if (!allowedContexts.contains(context) && !(conf.authorizeChildrenContext() && bean.is(Type.VRE) - && conf.allowedContexts().contains(bean.enclosingScope().toString()) ) ) { - log.warn("rejecting call to {} in invalid context {}, allowed context are {}",appContext.name(),context,appContext.container().configuration().allowedContexts()); + && allowedContexts.contains(bean.enclosingScope().toString()) ) ) { + log.warn("rejecting call to {} in invalid context {}, allowed context are {}",appContext.name(),context,allowedContexts); invalid_request_error.fire(appContext.name()+" cannot be called in scope "+context); } } diff --git a/src/main/java/org/gcube/smartgears/managers/ContainerManager.java b/src/main/java/org/gcube/smartgears/managers/ContainerManager.java index c2c2d54..8e8bac4 100644 --- a/src/main/java/org/gcube/smartgears/managers/ContainerManager.java +++ b/src/main/java/org/gcube/smartgears/managers/ContainerManager.java @@ -111,10 +111,7 @@ public class ContainerManager { log.error("no valid contexts found, moving the container to failed"); throw new RuntimeException("no valid contexts found, moving the container to failed"); } - - //context.configuration().startTokens().removeAll(tokensToRemove); - context.configuration().allowedContexts(foundContexts); } public void manage(ApplicationContext app) { diff --git a/src/main/java/org/gcube/smartgears/persistence/PersistenceWriter.java b/src/main/java/org/gcube/smartgears/persistence/PersistenceWriter.java index 528b350..6bbb144 100644 --- a/src/main/java/org/gcube/smartgears/persistence/PersistenceWriter.java +++ b/src/main/java/org/gcube/smartgears/persistence/PersistenceWriter.java @@ -9,5 +9,7 @@ public interface PersistenceWriter { File writefile(String path); long getFreeSpace(); + + String getLocation(); } \ No newline at end of file