diff --git a/distro/web.xml b/distro/web.xml index ef29b85..d0c51bb 100644 --- a/distro/web.xml +++ b/distro/web.xml @@ -23,6 +23,14 @@ rStudioAddress rstudio-dev.d4science.org + + rStudioProtocol + https + + + userConfigBasePath + /srv/rconnector/ + org.gcube.data.analysis.rconnector.RConnector diff --git a/pom.xml b/pom.xml index e8a1086..8eaa93a 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ org.gcube.data.analysis r-connector - 2.1.4-SNAPSHOT + 2.1.5-SNAPSHOT RConnector makes R available in the infrastructure diff --git a/src/main/java/org/gcube/data/analysis/rconnector/ConfigFileWriter.java b/src/main/java/org/gcube/data/analysis/rconnector/ConfigFileWriter.java index 9c6660f..bbc040a 100644 --- a/src/main/java/org/gcube/data/analysis/rconnector/ConfigFileWriter.java +++ b/src/main/java/org/gcube/data/analysis/rconnector/ConfigFileWriter.java @@ -16,10 +16,12 @@ import lombok.extern.slf4j.Slf4j; public class ConfigFileWriter { - public boolean write(Info info, String login, String usersHome, String fileName, String scriptToExecute){ - if (!usersHome.endsWith("/")) - usersHome=usersHome+"/"; - File userDir = new File(usersHome+login); + public boolean write(Info info, String login, String fileName, String configFilePath, String scriptToExecute){ + if (!configFilePath.endsWith("/")) + configFilePath=configFilePath+"/"; + File userDir = new File(configFilePath+login); + if (!userDir.exists()) + userDir.mkdir(); File configFile= new File(userDir, fileName); Utils.executeCommandLine(scriptToExecute,login, SecurityTokenProvider.instance.get(), ScopeProvider.instance.get()); return writeFile(info, configFile); diff --git a/src/main/java/org/gcube/data/analysis/rconnector/Resource.java b/src/main/java/org/gcube/data/analysis/rconnector/Resource.java index 5cf60a0..368ebe1 100644 --- a/src/main/java/org/gcube/data/analysis/rconnector/Resource.java +++ b/src/main/java/org/gcube/data/analysis/rconnector/Resource.java @@ -45,8 +45,9 @@ public class Resource { log.info("connect called with user {} and trID {} in scope {}",AuthorizationProvider.instance.get().getClient().getId(), tabularResourceId, ScopeProvider.instance.get()); String login = AuthorizationProvider.instance.get().getClient().getId(); - String usersHome = context.getInitParameter("usersHome"); + //String usersHome = context.getInitParameter("usersHome"); String filename = context.getInitParameter("filename"); + String configFilePath = context.getInitParameter("userConfigBasePath"); String scriptToExecute = context.getInitParameter("addUserScript"); if (ScopeProvider.instance.get()==null || login == null || tabularResourceId ==null ) return Response.serverError().build(); Info info; @@ -57,7 +58,7 @@ public class Resource { log.error("error connecting to r",e); return Response.serverError().build(); } - if (!writer.write(info, login, usersHome, filename, scriptToExecute)) return Response.serverError().build(); + if (!writer.write(info, login, filename, configFilePath, scriptToExecute)) return Response.serverError().build(); return createResponse(login); } @@ -83,6 +84,7 @@ public class Resource { try{ String keyFilePath = context.getInitParameter("storedKeyPath"); String rStudioServerAddress = context.getInitParameter("rStudioAddress"); + String rStudioProtocol = context.getInitParameter("rStudioProtocol"); log.debug("key file path: "+keyFilePath); log.debug("rstudio server address: "+rStudioServerAddress); @@ -113,7 +115,7 @@ public class Resource { "/", rStudioServerAddress, "", -1, false, true ); - return Response.seeOther(new URI("http://"+rStudioServerAddress)) + return Response.seeOther(new URI(String.format("%s://%s", rStudioProtocol, rStudioServerAddress))) .cookie(cookie).build(); }catch(Exception e){ log.error("error creating response", e);